1. 搭建集群环境
分为高可用和高性能两种选择
高可用部署方式适用于对可靠性要求高,但数据量不大、总吞吐要求不高的应用场景。在该部署中,在三台物理服务器上,都部署有数据节点和编目节点,三个数据节点组成一个副本组,三个编目节点组成副本集群。协调节点部署在业务应用的服务器上,也可以将应用/协调节点合部到数据库服务器上。这种部署方式得优势就是高可靠性,任意一个物理服务器故障,数据的读写都不会受到影响。但数据容量与单个服务器的容量相同,且硬件成本相对较高。
高性能
高性能部署方式适用于对总数据吞吐/性能要求高,硬件成本低,但对可靠性要求不高的场景。该部署方式,在三台物理机服务上都部署有编目节点和数据节点,三个编目节点组成一个副本组,每个数据节点单独组成一个副本组(只有一个副本)。协调节点与应用部署在分离的服务器上,或者也可以部署到数据库服务器上。这种部署模式可以充分利用所有服务器的存储容量,总的存储容量等于3个服务器的容量总和。但可靠性较低,任意一台服务器故障,都会导致部分数据无法读取和写入。
下面我们采用的是高性能:
下载地址:http://www.sequoiadb.com/index.php?p=downserver
2. 环境准备
-
配置主机名
配置项 配置方法 验证方法 配置主机名 1. 使用 root 权限登陆,执行 hostname sdbserver1(sdbserver1为主机名称,可根据需要修改。); - 对于 SUSE:
2. 打开 /etc/HOSTNAME 文件;
vi /etc/HOSTNAME
3. 修改文件内容,配置为主机名称;
sdbserver1 (主机名称)
4. 按 :wq 保存退出;
- 对于 RedHat:
2. 打开 /etc/sysconfig/network 文件;
vi /etc/sysconfig/network
3. 将 HOSTNAME 一行修改为 HOSTNAME = sdbserver1,其中 sdbserver1 为新主机名;
4. 按 :wq 保存退出;
- 对于 Ubuntu:
2. 打开 /etc/hostname 文件;
vi /etc/hostname
3. 修改文件内容,配置为主机名称;
sdbserver1
4. 按 :wq 保存退出;
执行 hostname 命令,确认打印信息是否为“sdbserver1” 配置物理机之间通过主机名可连接 -
使用 root 权限,打开 /etc/hosts 文件
vi /etc/hosts
-
修改 /etc/hosts,将服务器节点的主机名与IP映射关系配置到该文件中
192.168.20.200 sdbserver1
192.168.20.201 sdbserver2
192.168.20.202 sdbserver3
- 保存退出
1. ping sdbserver1(本机主机名)可以 ping 通
2. ping sdbserver2(远端主机名)可以 ping 通 - 对于 SUSE:
-
关闭防火墙
配置项 配置方法 验证方法 关闭防火墙 关闭防火墙操作,需要管理员权限。 - 对于 SUSE:
1. SuSEfirewall2 stop;
2. chkconfig SuSEfirewall2_setup;
- 对于 RedHat:
1. service iptables stop;
2. chkconfig iptables off;
- 对于 Ubuntu:
1. ufw disable;
- 对于 SUSE:
chkconfig -list | grep fire;
- 对于 RedHat:
service iptables status;
- 对于 Ubuntu:
ufw status;
- 对于 SUSE:
Linux 推荐配置
- 调整 ulimit
在配置文件 /etc/security/limits.conf 中设置:
#<domain> <type> <item> <value> * soft core 0 * soft data unlimited * soft fsize unlimited * soft rss unlimited * soft as unlimited
参数说明:
core:数据库出现故障时产生 core 文件用于故障诊断,生产系统建议关闭;
data:数据库进程所允许分配的数据内存大小;
fsize:数据库进程所允许寻址的文件大小;
rss:数据库进程所允许的最大 resident set 大小;
as:数据库进程所允许最大虚拟内存寻址空间限制;
在配置文件 /etc/security/limits.d/90-nproc.conf 中设置:#<domain> <type> <item> <value> * soft nproc unlimited
参数说明:
nproc:数据库所允许的最大线程数限制;Note: 1. 每台作为数据库服务器的机器都需要配置; 2. 更改配置后需重新登录使得配置生效。 - 调整内核参数
1. 使用下列命令输出当前 vm 配置,并将其归档保存:
cat /proc/sys/vm/swappiness cat /proc/sys/vm/dirty_ratio cat /proc/sys/vm/dirty_background_ratio cat /proc/sys/vm/dirty_expire_centisecs cat /proc/sys/vm/vfs_cache_pressure cat /proc/sys/vm/min_free_kbytes
2. 添加下列参数至 /etc/sysctl.conf 文件调整内核参数:
vm.swappiness = 0 vm.dirty_ratio = 100 vm.dirty_background_ratio = 40 vm.dirty_expire_centisecs = 3000 vm.vfs_cache_pressure = 200 vm.min_free_kbytes = <物理内存大小的8%,单位KB>
Note: 当数据库可用物理内存不足 8GB 时不需使用 vm.swappiness = 0;上述 dirty 类参数只是建议值,具体系统设置时请按原则(控制系统的 flush 进程只采用脏页超时机制刷新脏页,而不采用脏页比例超支刷新脏页)进行设置。3. 执行如下命令,使配置生效:
/sbin/sysctl -p
Note: 每台作为数据库服务器的机器都需要配置。 - 数据库目录结构
用户应尽可能使数据目录,索引目录与日志目录存放在不同物理磁盘中,以减少顺序 I/O 与随机 I/O 之间的竞争。
(1)本节按照高可用部署为例,介绍配置和启动步骤;
(2)以下操作步骤假设 SequoiaDB 程序安装在 /opt/sequoiadb 目录下;
(3)sdb服务进程全部以 sdbadmin 用户运行,请确保所有数据库目录都赋予 sdbadmin 读写权限。
- 步骤一:检查 SequoiaDB 的配置服务状态
在每台数据库服务器上检查 SequoiaDB 配置服务状态:
service sdbcm status
确认系统提示“sdbcm is running”表示服务正在运行,否则请执行如下命令重新配置服务程序:service sdbcm start
- 步骤二:启动一个临时协调节点(该节点只是为了创建其它节点而临时使用,后面会删除)
1. 切换到 sdbadmin 用户
su sdbadmin
2. 在任意一台数据库服务器上(以下步骤都只需要在这台服务器上操作),启动 SequoiaDB Shell 控制台/opt/sequoiadb/bin/sdb
3. 连接到本地的集群管理服务进程 sdbcmvar oma = new Oma("localhost", 11790)
4. 创建临时协调节点oma.createCoord(18800, "/opt/sequoiadb/database/coord/18800")
5. 启动临时协调节点oma.startNode(18800)
- 步骤三:通过命令配置和启动编目节点
1. 连接到临时协调节点,在 shell 命令中输入:
> var db = new Sdb("localhost",18800)
其中18800为协调节点端口号2. 创建一个编目节点组> db.createCataRG("sdbserver1", 11800, "/opt/sequoiadb/database/cata/11800")
其中
sdbserver1:第一个服务器主机名;
11800:为编目节点服务端口(该端口配置不要与随机端口冲突,以下其它端口的配置也需要注意);
/opt/sequoiadb/database/cata/11800:为编目节点的数据文件存放路径;Note: 请确保存放路径的权限,如果 SequoiaDB 采用的默认安装,那么给路径赋予 sdbadmin 权限,下同。3. 等待5秒,开始添加另外两个编目节点> var cataRG = db.getRG("SYSCatalogGroup"); > var node1 = cataRG.createNode("sdbserver2", 11800,"/opt/sequoiadb/database/cata/11800") > var node2 = cataRG.createNode("sdbserver3", 11800,"/opt/sequoiadb/database/cata/11800")
4. 启动编目节点组> node1.start() > node2.start()
Note: 创建节点的第一个参数必须为“主机名”,而不能使主机的 IP。 - 步骤四:通过命令配置和启动数据节点
1. 创建数据节点组
> var dataRG = db.createRG("datagroup")
2. 添加数据节点> dataRG.createNode("sdbserver1", 11820, "/opt/sequoiadb/database/data/11820") > dataRG.createNode("sdbserver2", 11820, "/opt/sequoiadb/database/data/11820") > dataRG.createNode("sdbserver3", 11820, "/opt/sequoiadb/database/data/11820")
Note: 创建节点的第一个参数必须为“主机名”,而不能是主机的 IP。3. 启动数据节点组> dataRG.start()
- 步骤五:部署启动协调节点
1. 创建协调节点组
var rg = db.createCoordRG()
2. 创建协调节点rg.createNode("sdbserver1", 11810, "/opt/sequoiadb/database/coord/11810") rg.createNode("sdbserver2", 11810, "/opt/sequoiadb/database/coord/11810") rg.createNode("sdbserver3", 11810, "/opt/sequoiadb/database/coord/11810")
3. 启动协调节点rg.start()
- 步骤六:删除临时协调节点
1. 连接到本地的集群管理服务进程 sdbcm
var oma = new Oma("localhost", 11790)
2. 删除临时协调节点oma.removeCoord(18800)
SequoiaDB Web 监控
启动 SequoiaDB Web 服务器
通过启动 SequoiaDB 后台的 Web 服务,也可以对数据库做各种操作,并且方便管理。
- 进入 /opt/sequoiadb/bin 目录
- 执行命令:
./sdbwsart -S <server name:port>
server name :指定服务器IP地址,如 192.168.10.10
port :指定服务器端口号,如 8080
最后在浏览器中输入 http://192.168.10.10:8080,即可访问数据库管理页。
监控管理
PHP 监控支持 IE9+、chrome、firefox 等主流浏览器。
- 1. 启动 PHP 服务
1.1 在安装了 SequoiaDB 的主机上,执行 sequoiadb 目录下 bin/sdbwsart。例如:
/opt/sequoiadb/bin/sdbwsart
1.2 在浏览器输入 【步骤1.1】 的地址 http://192.168.1.215:8080/
- 2. 连接监控页面
2.1 在连接管理 <连接地址> 输入地址,点击 <连接测试>,连接成功后,点击 <连接>;
-
- 3. 创建集合空间、集合、插入数据
3.1 创建集合空间,点击 <工具栏> 的
按钮,输入 <集合空间名>,点击 <确定>;
3.2 创建集合,点击集合空间 foo 的 <属性>,点击 <工具栏> 的
按钮,输入 <集合名>,点击 <确定>;
3.3 插入数据,点击集合 bar 的 <数据>,点击 <工具栏> 的
按钮,输入 json 记录,点击 <确定>;
3.4 格式化 Json 记录,点击 <工具栏> 的
按钮。
- 4. 集群管理
4.1 查看集群,点击导航 <集群管理>。