CentOS 安装和配置 ArangoDB3.3 集群

ArangoDB 是一个开源的分布式原生多模型数据库,是兼有图 (graph)、文档 (document)和键/值对 (key/value) 三种数据模型的 NoSQL 数据库。ArangoDB 使用类 SQL 的查询语言(AQL)构建出高性能应用程序。

ArangoDB 支持 Windows、Linux、Dcoker、Mac 等多种系统的安装。

yum 安装

ArangoDB 可以直接使用 yum 安装。

按照官方文档,对于 CentOS 7 安装 ArangoDB,进行如下操作即可正确安装:

cd /etc/yum.repos.d/
curl -OL https://www.arangodb.com/9c169fe900ff79790395784287bfa82f0dc0059375a34a2881b9b745c8efd42e/arangodb33/CentOS_7/arangodb.repo
yum -y install arangodb3e-3.3.14

对于 CentOS 6 安装 ArangoDB,操作如下:

cd /etc/yum.repos.d/
curl -OL https://www.arangodb.com/9c169fe900ff79790395784287bfa82f0dc0059375a34a2881b9b745c8efd42e/arangodb33/CentOS_6/arangodb.repo
yum -y install arangodb3e-3.3.14

RPM 下载安装

也可以下载源码编译安装,或者下载二进制 rpm 包安装。

这里选择下载 rpm 包安装,下载地址 https://www.arangodb.com/download-arangodb-enterprise/install-enterprise/centos_/

下载 Server 包:arangodb3e-3.3.14-1.x86_64.rpm,使用 rpm 命令安装:

[root@localhost opt]# rpm -ivh arangodb3e-3.3.14-1.x86_64.rpm 
warning: arangodb3e-3.3.14-1.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 6e751e9b: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:arangodb3e-3.3.14-1              ################################# [100%]

ArangoDB 3 (https://www.arangodb.com)
  The multi-model NoSQL database: distributed free and open-source database
  with a flexible data model for documents, graphs, and key-values. Build
  high performance applications using a convenient SQL-like query language
  or JavaScript extensions.

First Steps with ArangoDB:
  https://docs.arangodb.com/latest/Manual/GettingStarted/

Upgrading ArangoDB:
  https://docs.arangodb.com/Installing/Upgrading.html

Configuring the storage Engine:
  https://docs.arangodb.com/latest/Manual/Administration/Configuration/GeneralArangod.html#storage-engine

Upgrading ArangoDB database files:
  > /etc/init.d/arangodb3 upgrade

Configuration file:
  /etc/arangodb3/arangod.conf

Start ArangoDB shell client:
  > /usr/bin/arangosh

Start ArangoDB service:
  > systemctl start arangodb3.service

Enable ArangoDB service:
  > systemctl enable arangodb3.service

SECURITY HINT:
run 'arango-secure-installation' to set a root password
the current password is 'e227863a14fede6d361a57084727e9f5'
(You should do this for a FRESH install! For an UPGRADE the password does not need to be changed)
2018-08-20T19:24:12Z [3465] WARNING {memory} environment variable GLIBCXX_FORCE_NEW' is not set. it is recommended to set it to some value to avoid unnecessary memory pooling in glibc++
2018-08-20T19:24:12Z [3465] WARNING {memory} execute 'export GLIBCXX_FORCE_NEW=1'
2018-08-20T19:24:12Z [3465] WARNING {memory} /sys/kernel/mm/transparent_hugepage/enabled is set to 'always'. It is recommended to set it to a value of 'never' or 'madvise'
2018-08-20T19:24:12Z [3465] WARNING {memory} /sys/kernel/mm/transparent_hugepage/defrag is set to 'always'. It is recommended to set it to a value of 'never' or 'madvise'
2018-08-20T19:24:12Z [3465] WARNING {memory} execute 'sudo bash -c "echo madvise > /sys/kernel/mm/transparent_hugepage/enabled"'
2018-08-20T19:24:12Z [3465] WARNING {memory} execute 'sudo bash -c "echo madvise > /sys/kernel/mm/transparent_hugepage/defrag"'
2018-08-20T19:24:12Z [3465] INFO {syscall} file-descriptors (nofiles) hard limit is 8192, soft limit is 8192
2018-08-20T19:24:13Z [3465] INFO {startup} Server will now shutdown due to upgrade, database init or admin restoration.

至此没有问题的话,ArangoDB 就算安装好了。

密码安全

不管以上的那种安装方式,在安装过程中都没有提示密码设置。在 Ubuntu 安装 ArangoDB 的过程中好像是需要输入数据库密码的。

仔细看上面的安装输出日志的话,是有这么一段的:

SECURITY HINT:
run 'arango-secure-installation' to set a root password
the current password is 'e227863a14fede6d361a57084727e9f5'
(You should do this for a FRESH install! For an UPGRADE the password does not need to be changed)

可以发现,默认用户为 root,同时提供了一个临时密码,以及修改 root 密码的命令:arango-secure-installation,该命令实际上是 arangod 的一个软链接,而 arangod 就是 ArangoDB 的数据库服务器命令了,可以用来启动数据库,修改密码等。

在终端输入:

arango-secure-installation

重新设置密码,只需要输入一次秘密和确认即可,不验证临时密码,很方便。以后修改密码的话还是使用 arango-secure-installation 命令即可。

同时 ArangoDB 提供了 web 客户端来操作数据库,启动数据库服务器后即可打开,默认端口为 8529,使用初始的密码登陆后也可以修改密码,对命令行生疏的同学来说要方便多了,毕竟图形界面比较直观些。

ArangoDB 的配置

ArangoDB 的配置文件有很多,我们平常配置最多的是 arangod.conf,Linux 下该文件的目录通常在 /etc/arangodb3/ 下,Windows 下因为我常习惯于用压缩包版,所以他的配置文件就在解压缩目录的 etc/arangodb3 目录下。

通常要配置的内容有数据的存放路径,日志路径,访问地址等。

配置数据路径:

directory = /var/lib/arangodb3

配置日志路径:

file = /var/log/arangodb3/arangod.log

配置访问路径:

endpoint = tcp://127.0.0.1:8529

如果只在本机访问没有问题,但如果要在局域网、外网访问则还必须加上局域网、外网的访问地址:

endpoint = tcp://0.0.0.0:8529

修改完后重启一下数据库就可以在本机以外访问了。

hosts

准备了三台虚拟服务器,操作系统为 CentOS 7,分别命名为 arango-masterarango-slave1arango-slave2,对应 IP 地址为 192.190.20.7192.190.20.8192.190.20.9

我们使用这三台虚拟服务器搭建 ArangoDB 集群。

首先修改 /etc/hostname 文件,把各虚拟服务系统的 HOST 名称修改为节点名称,防止误操作。例如,修改 192.190.20.7 的 HOST 名称:

$ vim /etc/hostname

arango-master

然后分别修改三台虚拟服务器的 hosts 文件,添加如下修改:

$ vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.190.20.7    arango-master
192.190.20.8    arango-slave1
192.190.20.9    arango-slave2

重启使之生效。

启动集群

启动 master:

主 ArangoDB 服务启动很简单,这主要得益于 ArangoDB 的默认配置,默认情况下,ArangoDB 以集群 cluster 方式启动,监听其它从服务的端口为 8528,IP 绑定为 0.0.0.0。这些默认配置都可以在 arangodb -h 帮助选项中得到确认。

[root@arango-master arango]# arangodb
2018-08-21T07:46:23-04:00 |INFO| Starting arangodb version 0.13.1, build 8b4a219 component=arangodb
2018-08-21T07:46:23-04:00 |INFO| Using storage engine 'mmfiles' component=arangodb
2018-08-21T07:46:23-04:00 |INFO| Serving as master with ID '0a145715' on :8528... component=arangodb
2018-08-21T07:46:23-04:00 |INFO| Waiting for 3 servers to show up.
 component=arangodb
2018-08-21T07:46:23-04:00 |INFO| Use the following commands to start other servers: component=arangodb

arangodb --starter.data-dir=./db2 --starter.join 127.0.0.1

arangodb --starter.data-dir=./db3 --starter.join 127.0.0.1

2018-08-21T07:46:23-04:00 |INFO| ArangoDB Starter listening on 0.0.0.0:8528 (:8528) component=arangodb

其实 ArangoDB 不论安装和部署,都是比较友好的,只是不大容易注意到细节。这里启动输出到终端的日志里提示:服务作为 master 启动,端口为 8528,还有一个内部的服务 ID 叫 0a145715

在最后给出了启动其它服务的命令模板,使用 --starter.data-dir--starter.join 参数。

--starter.data-dir 参数指定服务启动后数据和日志等文件的存放目录,--starter.join 指定从服务要加入的 master 集群 IP 或主机名,一定是要可以 ping 通的,如果是测试集群,在一台服务器上启动可以指定为 127.0.0.1

我们这里三台服务器环境已经准备好了,在 arango-slave1 服务器上执行:

[root@arango-slave1 arango]# arangodb --starter.data-dir ./db2 --starter.join arango-master:8528
2018-08-21T07:48:06-04:00 |INFO| Starting arangodb version 0.13.1, build 8b4a219 component=arangodb
2018-08-21T07:48:06-04:00 |INFO| Contacting master http://arango-master:8528... component=arangodb
2018-08-21T07:48:06-04:00 |INFO| Waiting for 3 servers to show up... component=arangodb
2018-08-21T07:48:06-04:00 |INFO| ArangoDB Starter listening on 0.0.0.0:8528 (:8528) component=arangodb
2018-08-21T07:49:11-04:00 |INFO| Serving as slave with ID '6e5c51a6' on :8528... component=arangodb

显示服务正在连接 http://arango-master:8528 服务。

然后启动 arango-slave2

[root@arango-slave2 arango]# arangodb --starter.data-dir ./db3 --starter.join arango-master:8528
2018-08-21T07:49:10-04:00 |INFO| Starting arangodb version 0.13.1, build 8b4a219 component=arangodb
2018-08-21T07:49:10-04:00 |INFO| Contacting master http://arango-master:8528... component=arangodb
2018-08-21T07:49:10-04:00 |INFO| Waiting for 3 servers to show up... component=arangodb
2018-08-21T07:49:10-04:00 |INFO| Serving as slave with ID '656250a4' on :8528... component=arangodb
2018-08-21T07:49:10-04:00 |INFO| Using storage engine 'mmfiles' component=arangodb
2018-08-21T07:49:10-04:00 |INFO| ArangoDB Starter listening on 0.0.0.0:8528 (:8528) component=arangodb

此时观察 arango-master 服务的日志输出,可以看到,已经监听到 arango-slave1arango-slave2 的启动了,并且此时集群已经正式可用。

提示可以通过在浏览器访问 http://arango-master:8529,或者使用 arangosh shell 方式访问 arangosh --server.endpoint tcp://arango-master:8529

集群启动注意点

  1. 务必确保集群节点间的网络通信正常良好。
  2. 关闭防火墙,或者把需要开放的端口加入防火墙策略,这点最容易被忽略。CentOS 7 关闭防火墙: systemctl stop firewalld.service
  3. --starter.data-dir 参数。为了可控,最好预先建立好一个文件夹,比如分别在三台服务器中建立 /opt/arango 文件夹,在此路径下执行启动 ArangoDB 服务的命令。

Web 界面

登录页面,web 服务的端口为 8529

用户名为 root,密码请参考上面“密码安全”一节,点击登录后,需要选择连接数据库,ArangoDB 有一个默认的 _system 数据库,选择它,然后进入控制台。

登录后,我们的集群状态信息如下图:包括了节点、服务、资源和连接数等统计信息。

查看节点和健康状况。

如果觉得这对你有用,请随意赞赏,给与作者支持
评论 0
最新评论