高可用集群模式部署
本章节主要介绍 AntDB 集中式集群模式部署,主要分两步:
-
安装数据库(二进制文件)
-
数据库初始化
安装数据库
以 AntDB 7.2 版本的安装包 antdb-t-ee-release-7.2.generic.* 举例。
将安装包(antdb-t-ee-release-7.2.generic.*) 拷贝到 AntDB 用户(如:antdb)的目录下,并修改该安装包的权限。
chown -R antdb:antdb antdb-t-ee-release-7.2.generic.* #将安装包的用户权限更改为antdb
登陆新建的用户进行 AntDB 的安装。
su - antdb #登陆新建的antdb用户
tar -xzvf antdb-t-ee-release-7.2.generic.* #解压改安装包
cd antdb-t-ee-release-7.2.generic.* #通过cd命令进入解压后目录
使用 tar 包安装,通过执行 antdb_install.sh 脚本来实现交互形式安装和极简模式安装。
在 antdb-t-ee-release-7.2.generic.* 下执行 sh antdb_install.sh
进行 AntDB 的交互形式安装。
sh antdb_install.sh
或者
sh antdb_install.sh -i
交互式安装有五处可以自定义,如下所示。可以选择默认值,也可以自定义。
# 第一处交互,默认选择Y。选择N即退出本次安装。
[Info] AntDB install begins
[Info] Checking OS information ... ok
[Info] Checking hardware information ... ok
[Info] Checking SHA256 ... ok
[Attention] What will be shown below is AntDB product use agreement. Ready to read it? [yes/no, Default: yes]
……
……
# 第二处交互,默认选择Y。选择N即退出本次安装。
[Caution] Do you agree to the product agreement? [yes/no]
# 第三处交互,(c)entralized代表安装的是集中式,(d)istributed代表安装的是分布式。默认选择c。
# 此处填c或者默认选项,选择集中式。
[Info] Choose AntDB type "(c)entralized" or "(d)istributed" for installation. [Default: centralized]
# 第四处交互,安装路径选择。
# 默认的安装路径是”用户目录/antdb“,用户也可以输入其它的空目录。
# 注意,该目录必须为空。
[Info] Use default deployment mode ... "centralized"
[Info] Choose an empty directory to install AntDB. [Default: /home/antdb/antdb]/home/antdb/app
[Info] Checking install path ... ok
[Info] Decompressing package ... ok
[Info] Creating setup directory ... ok
[Info] Copying files ... ok
[Info] Install high-availability components ... ok
[Info] Setting adbhamgr Shebang ... ok
[Info] Creating file list for uninstall ... ok
……
……
#第五处交互,选择是否执行初始化。选择no退出默认配置初始化数据库/选择yes使用默认配置初始化数据库。
#此处填写no
[Attention] Continue to do AntDB initialization? [yes/no, Default: yes]no
……
[Info] AntDB init succeeds
[Attention] Excute 'source /home/antdb/.bashrc' to make the environment variables take effect.
上述执行完后,根据提示,需要 source 环境变量,source 完后,二进制文件安装完毕。
source /home/antdb/.bashrc
参考:安装后会自动在安装目录中生成两个文件,用户可以参考设置系统参数。如上,安装最后,会有如下提示。如果用户已经修改过参数,则忽略即可。
Please refer to the following files in the installation directory to manually set the recommended kernel config.
/home/antdb/app/antdb/setup/common/kernel_limits.conf
/home/antdb/app/antdb/setup/common/kernel_sysctl.conf
数据库初始化
集群内主机 SSH 互信配置
本章提供两种集群内主机 SSH 互相配置的方式:工具配置和命令行配置。
工具配置
进入安装包 antdb-t-ee-release-7.2.generic.*/setup/tool 目录下对 sshconfig.ini 进行配置。
注意: 该配置文件最后的换行符不可全删掉(配置文件最后要有换行符)。
## ip_list:ip地址用逗号分隔
## port、user、password 只能填写一个,因此各主机需要使用相同的端口、用户、密码
[host]
ip_list = 192.168.XX.220,192.168.XX.221,192.168.XX.222
port = 22
user = antdb
password = antdb
sh antdb_sshmutualtrust -c sshconfig.ini
命令行配置
# 切换到 antdb 用户
su - antdb
# 生成公钥和密钥
# 执行下面的命令,按三次回车
ssh-keygen -t rsa
# 用ssh-copy-id 把公钥复制到远程主机上
# $sshport替换为相应主机SSH服务端口号,一般为22或者22022(默认为22)
# antdb用户名替换为相应的用户名,例如:antdb。
# 目标ip换成其他主机的ip,
ssh-copy-id -p $sshport -i ~/.ssh/id_rsa.pub antdb用户名@目标ip
# 循环在每个节点执行上面的步骤,让每个节点之间互信
# 验证互信是否生效,如果不需要密码即可远程登录,就表示已经生效
ssh -p $sshport antdb用户名@目标ip
数据库参数配置
数据库初始化前,可以通过修改自定义参数配置文件 setup/common/postgresql.conf.template 来设置参数配置。
在 antdb-t-ee-release-7.2.generic.* 下编辑 setup/common/postgresql.conf.template,如下所示:
# 下述参数为默认参数配置,可以自定义修改
listen_addresses='*'
superuser_reserved_connections=13
tcp_keepalives_idle=60
tcp_keepalives_interval=5
tcp_keepalives_count=10
work_mem=16MB
min_wal_size=2GB
maintenance_work_mem=1GB
max_stack_depth=7000
wal_sync_method=open_datasync
wal_compression=on
wal_log_hints=on
checkpoint_timeout=15min
checkpoint_completion_target=0.9
archive_mode=on
archive_command='/bin/date'
log_destination='csvlog'
logging_collector=on
log_directory='pg_log'
log_rotation_size=100MB
log_min_messages=error
track_activity_query_size=2048
autovacuum_max_workers=5
autovacuum_vacuum_threshold=500
autovacuum_analyze_threshold=500
idle_in_transaction_session_timeout=3600s
max_locks_per_transaction=256
#log_statement=ddl
#port=6655
#max_connections=100
#max_prepared_transactions=0
#max_worker_processes=108
#shared_buffers=128MB
#effective_cache_size=4GB
#max_wal_size=1GB
#random_page_cost=4.0
# 还可以自己增加相应的参数配置
port=5555
max_connections=1000
设置初始化配置文件
环境部署:
在 antdb-t-ee-release-7.2.generic.* 下对 编辑setup/common/initconf-c.ini
,与构建环境保持一致,各个字段信息参考该文件中的说明。
其中,antdb_apppath 的目录应该写上面安装的目录(默认目录或者用户指定的目录)。
-
antdb_apppath 的目录应该写上面安装的目录(默认目录或者用户指定的目录);
-
[standby_info] 中的 antdb_apppath 应该和 [primary_info] 中的 antdb_apppath 保持一致;
-
adbdcs 的数据目录 adbdcs_datapath 不要和 AntDB 的数据目录 antdb_datapath 配置一样。
注意: 该配置文件最后的换行符不可全删掉(配置文件最后要有换行符)。
## cluster_info 配置项说明:
##
## cluster_type 分类:
## C_ALONE 表示集中式单机版:只需要设定 cluster_info 和 primary_info
## C_HA 表示集中式高可用版:需要设定 primary_info、standby_info、adbdcs_info、adbhamgr_info 的配置信息
## cluster_name:数据库集簇的名称
## cluster_user: 数据库的超级用户,一般设定为执行此安装程序的操作系统用户
[cluster_info]
cluster_type = C_HA #高可用环境部署选择C_HA
cluster_name = antdbcluster #自定义集群名
cluster_user = antdb #自定义用户名
## primary_info 配置项说明:
##
## antdb_apppath:主节点数据库程序目录
## antdb_datapath:主节点数据库的数据目录;需要设定为空目录,且不要和其它配置项中的目录交叉
## antdb_password:数据库的超级用户的初始密码(超级用户名参见 “cluster_user”)
## antdb_port:主节点数据库端口号
## primary_ip:主节点数据库 ip,即执行此安装程序的主机 ip
## primary_sshport:执行此安装程序的主机的 SSH 服务端口号
[primary_info]
primary_ip = XX.XX.XX.XX
primary_sshport = 22
antdb_apppath = /home/antdb/app #此处的路径需要与上一章节中二进制安装的路径保持一致
antdb_datapath = /home/antdb/data #data目录必须为空
antdb_password = XXX
antdb_port = 6655 #该端口号不能被占用
## standbyinfo 配置项说明:
##
## standby_node 格式:name,standby_ip,standby_sshport,antdb_apppath,antdb_datapath,antdb_port
## name:备节点名称,仅作为标识,唯一
## standby_ip:备节点 ip 地址
## standby_sshport:备节点 SSH 服务端口号
## antdb_apppath:备节点存放数据库应用程序的目录,建议与主节点使用相同路径
## antdb_datapath:备节点存放数据库数据的目录,建议与主节点使用相同路径
## antdb_port:备节点数据库的端口号
[standby_info]
standby_node = standby1,XX.XX.XX.XX,22,/home/antdb/app,/home/antdb/data,6655
standby_node = standby2,XX.XX.XX.XX,22,/home/antdb/app,/home/antdb/data,6655
## adbdcs_info 配置项说明:
##
## adbdcs_node 格式:name,adbdcs_datapath,clienport,peerport,hostinfo
## name:adbdcs 节点名称,唯一
## adbdcs_datapath:adbdcs 数据目录,不要与数据库数据目录交叉
## clienport:客户端访问 adbdcs 使用的端口号
## peerport:adbdcs 通信端口号
## hostinfo:数据库节点名称,primary 表示主节点,其它为备节点名称;标识了 adbdcs 与哪个数据库节点位于同一节点
[adbdcs_info]
adbdcs_node = adbdcs-1,/home/antdb/adbdcs,12379,12380,primary
adbdcs_node = adbdcs-2,/home/antdb/adbdcs,12379,12380,standby1
adbdcs_node = adbdcs-3,/home/antdb/adbdcs,12379,12380,standby2
## adbhamgr_info 配置项说明:
##
## adbhamgr_node 格式:name,adbhamgr_port,hostinfo
## name:adbhamgr 节点的名称,唯一
## adbhamgr_port:adbhamgr 服务使用的端口号
## hostinfo:数据库节点名称,primary 表示主节点,其它为备节点名称;标识了 adbhamgr 与哪个数据库节点位于同一节点
[adbhamgr_info]
adbhamgr_node = adbhamgr-1,8008,primary
adbhamgr_node = adbhamgr-2,8008,standby1
adbhamgr_node = adbhamgr-3,8008,standby2
## parameter 配置项说明:
##
## 此配置项用于设定数据库配置选项。
## config 格式:config_name=config_value
## config_name: 配置项名称
## config_value:配置项值
##
## 注意:
## 1、‘=’作为名称和值的分隔符,请注意按此格式书写。
## 2、config 的格式请按照数据库全局配置时的格式书写(查阅数据库使用手册,集中式与分布式可能存在区别),
## 安装工具不会对 config 的格式进行检查。
# [parameter]
# shared_buffers = 128MB
# max_locks_per_transaction = 256
## init_option 配置项说明:
##
## 此配置项用于设定数据库初始化选项。
## config initall=init_value
## initall:为初始化配置项的的固定名称,不需要修改
## init_value:初始化选项。下面示例的含义为:开启数据库校验和,设置 walsegsize 为 256MB
##
## 注意:
## 1、在 init_value 不要使用等号,使用空格分隔选项名称和数值。
# [init_option]
# initall = -k --wal-segsize 256
执行部署
执行如下命令进行初始化部署。
sh antdb_init.sh -c setup/common/initconf-c.ini
执行完成后,会输出集群的部署信息。
[antdb@bogon ~]$ adbhamgrctl -c /etc/adbhamgr/adbhamgr_antdbcluster.yaml list
+ Cluster: antdbcluster (7308609900027656685) ---+---------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+------------+--------------------+--------------+---------+----+-----------+
| adbhamgr-1 | 10.21.10.222:6655 | Leader | running | 2 | |
| adbhamgr-2 | 10.21.10.223:6655 | Sync Standby | running | 2 | 0 |
| adbhamgr-3 | 10.21.10.224:6655 | Replica | running | 2 | 0 |
+------------+--------------------+--------------+---------+----+-----------+
部署完成后,可以用 adb 命令登录数据库:
adb -d postgres -p 6655