云溪数据库集群的安装配置,主要分为三个方面:
1. 安装前准备,
2. 配置参数详解
3. Ansible自动化安装
第一部分:安装前的准备
云溪数据库相较于目前主流数据库(Oracle、Mysql等)在产品交付形式和安装部署方式上有很大的区别,传统的数据库软件是一系列可执行文件的合集,需要经过解压、配置、安装、初始化等过程,费时费力,对安装部署人员有一定的能力要求;云溪数据库采用轻量化的方式,将所有的功能封装打包成一个可执行文件,无需繁琐的解压、配置、安装、初始化等过程,使用交付件,加上几个简单的参数即可启动数据库,即使没有数据库相关经验的小白,也可轻松安装使用,云溪数据库同样具有灵活的安装部署形式,根据客户的需求,既可以安装部署单机版,也可以安装部署集群版(集群版最少三个节点)。
在数据安全方面,云溪数据库同样具有两种安装部署模式,一种是带秘钥的安全模式,一种是不带秘钥的非安全模式,在非安全模式下,集群对任何客户端都是开放的,可访问集群任意节点,同时任何用户均可以以root用户接入集群读写集群中的任何数据,也没有网络加密或认证。在生产环境中强烈建议使用安全模式部署集群
为了实现数据库的高效运行,在安装部署数据库前,有必要对操作系统一些参数进行优化,因云溪数据库是一个文件密集型的数据库,我们需要重点关注操作系统对文件方面的一些参数限制:
第二部分,是云溪数据库的一些重要配置参数。首先是数据库网络相关的参数:云溪数据库采用二进制可执行文件的软件交付形式,直接使用软件交付件即可启动数据库,启动时需要指定一些基础参数:
内存相关的参数:云溪数据库采用二进制可执行文件的软件交付形式,直接使用软件交付件即可启动数据库,启动时需要指定一些基础参数。
存储相关的参数如下:
日志参数如下:
其他参数:
云溪数据库安全方面的一些配置参数其中包括:证书秘钥管理
云溪数据库在安全方面采用了证书加秘钥的方式,安全证书创建流程如下:
使用znbase cert命令,创建一个CA证书和密钥,然后创建由CA证书签名的节点和客户端 证书。由于您需要访问CA证书和密钥的副本才能创建节点和客户端证书,因此最好在一个地方创建所有内容。
将生成的节点证书和密钥以及CA证书上传到每个节点,然后再将客户端证书和密钥以及CA证书上传到每个客户端。
当节点彼此建立联系、客户端与节点建立联系时,它们将使用CA证书来验证彼此的身份。
节点需要的密钥和证书如下:
客户端需要的密钥和证书:
请注意以下几点:
• 默认情况下,node.crt是多功能的,同一证书既可用于传入连接(可以是SQL、AdminUI,或者其他云溪数据库节点),也用于其他云溪数据库节点的传出。
• CA密钥不会由znbase命令自动加载,因此应该使用--ca-key,在单独目录中创建它。
• 密钥(以.key结尾的文件)不能具有组或other权限(最大权限为0700或rwx------)可以通过设置环境变量来禁用此检查:znbase _SKIP_KEY_PERMISSION_CHECK=true。
以上是云溪数据库数据库的一些参数,下面数据库集群的安装环节:
由于云溪数据库是分布式数据库,动辄需要安装几十上百个节点,传统的一个节点一个节点的安装部署方式已不适用,因此我们采用ansible批量化部署方式。
一. 在集群任意一台服务器上安装ansible工具
1. wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2. yum install ansible –y
二. 在安装ansible的服务器上配置要安装集群的IP地址
vi /etc/ansible/hosts
[znbase _setup]
192.168.232.241
192.168.232.242
192.168.232.243
三. 解压数据库安装包
上传znbase _install.tar 到安装ansible工具的服务器
2. tar - xvf znbase _install.tar 解压数据库安装包
四. 配置ansible安装脚本
1. cd 到数据库解压后的目录
2. 编辑参数脚本文件param.yaml
server_port: 26457 --数据库服务端口
monitor_port: 9090 --数据库web_ui端口
db_ver: 2.1.1 --安装数据库的版本
cache: .20 --单个store缓存总大小
max_sql_memory: .1 --SQL 查询需要缓存的临时数据所能使用的最大内存空间
db_admin: znbase --数据库初始化创建用户
db_password: znbase @123 --初始化创建用户密码
znbase _admin_user: znbase --数据库操作系统用户
znbase _admin_password: "changeme" --数据库操作系统用户密码
ntpserver: 192.168.232.134 --ntp server 地址(自己指定)
store_path: /hdb-data/{{ znbase _admin_user }}_data ---
#####################################################
bin_path: /home/{{ znbase _admin_user }}/bin --数据库安装包存放位置
certs_dir: /home/{{ znbase _admin_user }}/. znbase -certs --数据库节点证书秘钥存放位置
make_certs_dir: /opt/certs --节点和客户端证书秘钥生成位置
make_ca_keys_dir: /opt/my-safe-directory --ca证书生成位置
五. 执行脚本安装数据库
[root@ znbase 1]# ansible-playbook ins_init.playbook -e "@param.yaml"
PLAY [znbase_setup]
************************************************************************
TASK [prepare]
************************************************************************
changed: [192.168.232.241]
changed: [192.168.232.242]
changed: [192.168.232.243]
……………………..
PLAY RECAP
************************************************************************
127.0.0.1 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.232.241 : ok=34 changed=30 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.232.242 : ok=18 changed=17 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.232.243 : ok=18 changed=17 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
六.查看集群状态
集群安装完成后,在云溪数据库用户的home目录下会自动生成三个可执行文件:
clu_sta.sh --查看集群状态脚本
login_root.sh --root用户登录集群脚本
start.sh --启动集群节点脚本
stop.sh --关闭集群节点脚本
我们通过执行clu_sta.sh 查看集群的状态:
[zbadmin@znbase1 ~]$ sh clu_sta.sh
id | address | build | started_at | updated_at | is_available | is_live
+----+-----------------------+------------+----------------------------+----+
1 | 192.168.232.241:26457 | release-2.1.1-gamma | 2021-07-03 03:12:53.641692| 2021-07-03 05:44:01.171234| true | true
2 | 192.168.232.242:26457 | release-2.1.1-gamma | 2021-07-03 03:12:53.641692| 2021-07-03 05:44:01.171234| true | true
3 | 192.168.232.243:26457 | release-2.1.1-gamma | 2021-07-03 03:12:53.641692| 2021-07-03 05:44:01.171234| true | true
七.扩容节点
我们可以在原有集群不做任何变更的情况下,平滑的添加新的节点,集群会自动平衡新集群的数据,用户完全无感知本次操作我们在现有三节点的集群中添加一个新节点,使集群由原来的三节点变为四节点,同时观察新集群的数据是否是均衡的。
1.将新添加节点的IP添加到ansible配置文件
vi /etc/ansible/hosts
[add_setup]
192.168.232.244
2.执行增加节点的脚本给集群增加新节点
[root@znbase 1 znbase_install]# ansible-playbook add_node.playbook -e "@param.yaml“
PLAY [add_setup]
************************************************************************
TASK [prepare]
************************************************************************
changed: [192.168.232.244]
……………………..
3. 新节点添加完成后,查看集群状态
[zbadmin@znbase1 ~]$ sh clu_sta.sh
id | address | build | started_at | updated_at | is_available | is_live
+----+-----------------------+------------+----------------------------+----+
1 | 192.168.232.241:26457 | release-2.1.1-gamma | 2021-07-03 03:12:57.641692| 2021-07-03 05:44:01.171234| true | true
2 | 192.168.232.242:26457 | release-2.1.1-gamma | 2021-07-03 03:12:57.641692| 2021-07-03 05:44:01.171234| true | true
3 | 192.168.232.243:26457 | release-2.1.1-gamma | 2021-07-03 03:12:57.641692| 2021-07-03 05:44:01.171234| true | true
4 | 192.168.232.244:26457 | release-2.1.1-gamma | 2021-07-03 03:12:57.641692| 2021-07-03 05:44:01.171234| true | true