安装部署
Linux操作系统
云溪ZNBase数据库支持主流操作系统:Linux,中标麒麟,银河麒麟,UOS等
Linux 操作系统
硬件要求
云溪ZNBase数据库支持主流硬件系统:X86,ARM,海光,飞腾,兆芯等
云溪ZNBase数据库可运行的集群最小规格如下:
部署介质 | 最小规格 | 备注 |
---|---|---|
物理机或虚拟机 | 三节点三副本 | 每个节点部署在单独的物理机或虚拟机上 |
服务器资源最低要求:
容器化部署:云溪ZNBase数据库支持容器部署。云溪ZNBase数据库本身使用DOCKER打包,依托于浪潮云原生平台与生态,数据库支持K8S云原生接口,可以实现一键部署以及容器排编,快速搭建、管理和监控。
软件要求
- 集群中各个节点的操作系统需要安装必需软件包,数据库文件需要依赖 GLIBC,LIBNCURSES,TZDATA。
- 集群中各个节点的操作系统需要安装 NTP 软件包或其他时钟同步软件,保证各个节点操作系统时间一致。
- 根据业务需求选择安装 HAPROXY 负载均衡功能,版本不低于1.5.0。
Web浏览器配置要求
ZNBase提供AdminUI数据库控制台,对数据库集群的各项指标进行可视化展现,支持Google Chrome的较新版本即可访问监控入口。
本节介绍ZNBase数据库集群部署时对操作系统一致性,集群节点时间一致性,数据库端口和文件句柄个数进行检查和设置。
操作系统版本一致性:
检查集群各节点中操作系统版本的一致性,查看 Linux 系统版本的命令如下:
集群中节点系统时间保持一致
集群节点中需要中等强度的时钟同步机制以维持数据的一致性。当一个节点检测到自身的机器时间与集群中至少50%节点的机器时间之间的误差值超过集群最大允许时间误差值(默认 500ms)的80%的时候,该节点会自动停止。这能够避免违反数据一致性,导致读写旧数据的风险。因此,必须在每个节点上运行 NTP 或其他时钟同步软件,来防止时钟漂移得太远。
数据库服务默认端口是否被占用
#lsof -i:26257
显示结果若该端口号与数据库默认端口号有冲突,则可以在 root 用户下,使用 kill -9 pid_value 命令来终止发生冲突的进程或是在安装数据库时修改默认端口号。
修改 Linux 系统文件句柄限制
数据库会使用大量的文件句柄,通常会超过 LINUX默认情况下可用的文件句柄数。 因此,建议对于每一个数据库节点修改文件句柄数:最大文件句柄数量至少需要设置为 1956(其中每个 store 需要 1700 个文件句柄, 256 用于网络),低于该阈值节点将无法启动数据库服务。推荐将最大文件句柄数量配置为UNLIMITED,或者将该值设置为 15000(其中每个 store 需要 10000 个文件句柄,5000 用于网络)或更高的值以支持数据库集群增长的性能需求。如果在一个节点上配备了 3 个 store,我们建议将硬限制修改为至少 35000(每个 store 分配 10000,网络分配 5000)。
以 CentOS 7 为例,修改句柄数方法为:
编辑/etc/security/limits.conf 在文件后追加以下内容:
* soft nofile 35000
* hard nofile 35000
保存并关闭文件。
执行ulimit -a命令确认修改结果
修改系统范围限制:需要确保系统范围的最大句柄限制值至少是上述单个进程限制值的 10 倍。查看系统范围内的文件句柄数量:
cat /proc/sys/fs/file-max
;
根据需要提高系统范围限制值:echo 350000 > /proc/sys/fs/file-max
本节介绍ZNBase集群的最小部署拓扑结构
ZNBase架构图 如下图所示
拓扑信息:集群最小规格三节点三副本
节点 | 节点配置 | IP(以10.1.1.X为例) | 配置 |
---|---|---|---|
Node1 | 32个CPU 和64 GB RAM | 10.1.1.1 | 默认端口 全局目录配置 |
Node2 | 32个CPU 和64 GB RAM | 10.1.1.2 | 默认端口 全局目录配置 |
Node3 | 32个CPU 和64 GB RAM | 10.1.1.3 | 默认端口 全局目录配置 |
本节介绍数据库部署和启动,主要分为两种方式供用户选择。
● 以安全模式方式部署启动ZNBase集群
● 以非安全模式方式部署启动ZNBase集群
前提条件
确保集群各个节点系统时间同步
确保集群内各个节点SSH能够互相访问
网络配置允许 26257 和 8080 端口上的 TCP 通信
安全模式部署和启动
获取数据库可执行文件
a) 获取ZNBase数据库文件并上传到PATH路径下/usr/local/bin
$ mkdir /opt/certs
$ mkdir /opt/my-safe-directory
本地生成证书
c) 创建 CA 证书和密钥:
$ drdb cert create-ca --certs-dir=/opt/certs --ca-key=/opt/my-safe-directory/ca.key
d) 为第一个节点创建证书和密钥:
e) 将 CA 证书,节点证书和密钥传送到第一个节点:
$ ssh <username>@<node1 address> "mkdir /root/certs"
f) 删除本地的节点证书和密钥:
$ rm /opt/certs/node.crt /opt/certs/node.key
g) 为第二个节点创建证书和密钥
h) 将 CA 证书,节点证书和密钥传送到第二个节点
$ ssh <username>@<node2 address> "mkdir /root/certs"
$ scp /opt/certs/ca.crt /opt/certs/node.crt /opt/certs/node.key <username>@<node2 address>:/root/certs
i) 对于其它的每个需要安装证书的集群节点,请重复 f)-h) 步骤
j) 为 root 用户创建客户端证书和密钥
$ drdb cert create-client root --certs-dir=/opt/certs --ca-key=/opt/my-safedirectory/ca.key
k) 将证书和密钥传输到你想要执行数据库命令的机器上,该机器可以是集群中或是集群外的一个节点,拥有该证书的机器能够使用 root 账户执行数据库命令,可以通过该节点机器访问集群.
l) 如果在以后你想在其它某个机器上运行数据库客户端命令,则需要将 root 用户的证书和密钥复制到该节点。只有拥有 root 用户证书和密钥的节点,才能够访问集群
数据库启动
m) SSH 到需要启动服务的节点机器,获取数据库可执行文件,并上传到指定目录:
$ cp -i drdb-v****.linux-amd64/drdb /usr/local/bin/
n) 执行数据库 start 命令
o) 对需要加入集群中的每个节点执行m)-n)步骤
初始化集群
p) 在集群第一个节点执行数据库init命令。(需要该节点拥有 root 用户的证书和密钥)
$ drdb init --certs-dir=/root/certs --host=<address of any node>
非安全模式部署和启动
获取数据库可执行文件
a) 获取ZNBase数据库文件并上传到PATH路径下/usr/local/bin
数据库启动
b) SSH 到需要启动服务的节点机器,获取数据库可执行文件,并上传到指定目录
c) 执行数据库 start 命令
d) 在集群中的其它节点重复执行b)-c)步骤
参数 | 描述 |
---|---|
—insecure | 指定使用非安全模式启动集群 |
—store | 指定存放数据库文件的目录名 |
—advertise-addr | 指定IP 地址或是 hostname 供集群其他节点访问该节点 |
—listen-addr | 指定数据库服务的监听 IP 和端口 |
—http-addr | 指定集群监控工具的 IP 和端口 |
—join | 指定集群 3-5 个初始化节点的地址和端口 |
—cache —max-sql-memory | 增加节点缓存和临时 SQL 内存大小到操作系统内存的25%,用于优化读性能和内存中 SQL 执行 |
—background | 指定后台运行 |
初始化集群
e) 在集群第一个节点执行 数据库 init 命令
集群对任何客户端是开放的,能够访问集群任意节点的 IP 地址。
任何用户,甚至 root 用户都能够不需要密码访问集群。
任何用户均可以以 root 用户接入集群,可读写集群中的任何数据。
没有网络加密或认证,因此欠缺机密性。
部署后检查
1. 创建NODETEST数据库
a) 开启交互式shell
#安全模式启动
$ drdb sql --certs-dir=certs --host=<address of any node>
#非安装模式启动
$ drdb sql --insecure --host=<address of any node>
b) 创建NODETEST数据库
c) 使用\q或CTRL+D退出
2. 连接另一个节点检查NODETEST数据库
a) 开启交互式shell
#安全模式启动
#非安全模式启动
$ drdb sql --insecure --host=<address of differentnode>
b) 检查数据库
c) 使用\q
或CTRL+D
退出
配置 HAProxy 负载均衡
每一个数据库集群内的节点对于集群来说,都是一个 SQL 网关。但是为了保证客户端的性能以及可靠性,建议使用负载均衡功能,并且ZNBase数据库内置了一个命令,用于生成可与正在运行的集群配合使用的 HAPROXY配置文件:.
性能:负载均衡器将客户端流量分布在各个节点上。这样可以避免一个节点处理过大的流量,并提高了整体群集性能(每秒查询)。
可靠性:负载均衡器可以尽量避免集群中节点发生故障对客户端产生影响。如果节点发生故障,负载平衡器会将客户端流量重定向到可用节点。
b) 将CFG文件上传到要运行的HAPROXY机器上
$ scp haproxy.cfg <username>@<haproxy address>:~/
c) SSH到运行的机器上并安装
$ apt-get install haproxy
d) 启动HAPROXY,使用-f指向CFG文件