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-master
、arango-slave1
和 arango-slave2
,对应 IP 地址为 192.190.20.7
、192.190.20.8
、192.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-slave1
和 arango-slave2
的启动了,并且此时集群已经正式可用。
提示可以通过在浏览器访问 http://arango-master:8529
,或者使用 arangosh
shell 方式访问 arangosh --server.endpoint tcp://arango-master:8529
。
集群启动注意点
- 务必确保集群节点间的网络通信正常良好。
- 关闭防火墙,或者把需要开放的端口加入防火墙策略,这点最容易被忽略。CentOS 7 关闭防火墙:
systemctl stop firewalld.service
。 - --starter.data-dir 参数。为了可控,最好预先建立好一个文件夹,比如分别在三台服务器中建立
/opt/arango
文件夹,在此路径下执行启动 ArangoDB 服务的命令。
Web 界面
登录页面,web 服务的端口为 8529
。
用户名为 root,密码请参考上面“密码安全”一节,点击登录后,需要选择连接数据库,ArangoDB 有一个默认的 _system
数据库,选择它,然后进入控制台。
登录后,我们的集群状态信息如下图:包括了节点、服务、资源和连接数等统计信息。
查看节点和健康状况。