ArangoDB 集群安装

1.前提条件

  1. 安装前确保集群已经完成 基础环境配置
  2. 本地安装依赖 Docker,版本号应大于 20.10.10
  3. 本次安装的 ArangoDB 软件版本为:3.11.5

2.环境和参数准备

  1. 当前集群共有3个节点,其列表配置如下:
    ec-2 172.16.0.2
    ec-3 172.16.0.3
    ec-4 172.16.0.4
    
  2. ArangoDB的数据目录设置:/data/arangodb
  3. 关闭系统透明大页,否则会影响 jemalloc 的内存分配
    echo madvise >/sys/kernel/mm/transparent_hugepage/enabled
    echo madvise >/sys/kernel/mm/transparent_hugepage/defrag
    
  4. 配置内核对于内存申请分配的行为
    sysctl -w vm.overcommit_memory=1 > /etc/sysctl.conf
    

3.安装及配置

3.1.安装 ArangoDB

在3个节点上分别安装 ArangoDB 环境,执行安装命令:

# 每个节点都需要执行
tar -xvzf arangodb-3.11.5-docker.tar.gz -C /opt
cd /opt/arangodb-3.11.5-docker

然后我们分别在每个节点导入基础镜像:

./install.sh

执行后会自动检测当前的 CPU 架构并导入镜像,当前支持 AMD64 和 ARM64 两类 CPU 芯片。

安装之后我们在其中一个节点生成身份验证密钥:

# 选择一个节点执行即可,当前在 ec-2 上
./arangodb-secret.sh

执行后会将密钥生成到 /etc/arangodb.secret 然后需要同步到其他所有的节点:

scp /etc/arangodb.secret ec-3:/etc
scp /etc/arangodb.secret ec-4:/etc

3.2.集群配置

在所有节点创建数据目录:

mkdir -p /data/arangodb

然后编辑安装目录下的 docker-compose-cluster.yml 配置文件:

version: "3"

services:
  arangodb:
    container_name: arangodb-container
    image: arangodb:3.11.5
    restart: always
    environment:
      - TZ=Asia/Shanghai
      - ARANGO_HOSTS=172.16.0.2,172.16.0.3,172.16.0.4
    volumes:
      - /etc/arangodb.secret:/etc/arangodb.secret
      - /data/arangodb:/var/lib/arangodb3
    ports:
      - "8528:8528"
      - "8529:8529"
      - "8530:8530"
      - "8531:8531"
    command: arangodb --starter.join=$$ARANGO_HOSTS --starter.data-dir=/var/lib/arangodb3 --auth.jwt-secret=/etc/arangodb.secret --server.storage-engine=rocksdb --log.rotate-files-to-keep=30 --log.time-format=utc-datestring

重点修改两个位置的配置:

  1. 修改 environment 下的 ARANGO_HOSTS 变量,设置为所有的机器列表,当前为:172.16.0.2,172.16.0.3,172.16.0.4
  2. 修改 volumes 下的数据目录映射,只修改 : 前面的部分即可,当前是 /data/arangodb

其余的配置正常都不需要动,然后修改其他节点保证这个配置都完全一样。

3.3.启动集群服务

在每个节点的安装目录下依次执行命令启动:

./arangodb-cluster.sh start
# 查看状态
./arangodb-cluster.sh status

启动过程中通过 Docker Compose 或者日志文件都可以查看日志,比如:

# 需要在安装目录下执行
docker compose -f docker-compose-cluster.yml logs arangodb -f --tail=100
# 查看数据目录下的日志
taif -100f /data/arangodb/arangodb.log

启动后访问任意一个节点的 8529 端口打开界面,比如:http://172.16.0.2:8529,默认不用输入用户名和密码即可登录成功,然后直接选择 _system 数据库后进入界面:

可以看到具体的节点状态等统计信息,然后我们点击左侧的 NODES 即可查看节点分片的情况,这里不再详细展示了。

现在我们马上要做的是为 root 用户设置密码,首先点击左侧的 USERS 然后选择 root 用户,点击下面的 Change Password 按钮:

然后输入两次新的密码,保存即可。

然后正常开发和运行时访问不建议使用 root 用户,可以创建专门应用使用的用户并设置访问权限即可。

注意:如果未来要修改 ArangoDB 的配置,需要修改数据目录下对应的配置文件,然后重启后生效。