1.Base基础/3.Icon图标/操作/search备份
1.Base基础/3.Icon图标/操作/search备份
EN
文档
关于AntDB
快速入门
使用教程
运维
调优
工具和插件
高级服务
数据安全
参考
  • 文档首页 /
  • 部署与升级 /
  • 分布式安装部署 /
  • 高可用集群模式部署

高可用集群模式部署

更新时间:2024-07-01 14:39:42

本章节主要介绍 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] yes

Hunan AsiaInfo Anhui Technologies Co., Ltd.
Software End User License Agreement
……
……

# 第二处交互,默认选择Y。选择N即退出本次安装
[Caution] Do you agree to the product agreement? [yes/no]


# 第三处交互,这里需要选择d,代表安装的是分布式,默认的c是集中式版本安装
[Info] Choose AntDB type "(c)entralized" or "(d)istributed" for installation. [Default: centralized]d

# 第四处交互,选择二进制安装路径(确保该路径为空)
# 默认为用户目录/antdb
[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] Creating file list for uninstall ... ok
[Info] Setting bash environment ... ok
[Attention] For better performance of database, following files can be used as reference to set OS kernel config manually.
  /home/antdb/antdb-t-ee-release-7.2.19.generic.x86_64/setup/common/kernel_limits.conf
  /home/antdb/antdb-t-ee-release-7.2.19.generic.x86_64/setup/common/kernel_sysctl.conf
[Info] AntDB install succeeds!
[Info] AntDB init begins

# 第五处交互,选择是否使用默认配置部署AntDB分布式简易版本,选择no退出安装进程,选择yes继续部署进程
# 一般选择no退出简易版本安装
[Attention] Continue to do AntDB initialization? [yes/no, Default: yes] no
[Info] AntDB init terminates
[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/setup/common/kernel_limits.conf
/home/antdb/app/setup/common/kernel_sysctl.conf

数据库初始化

集群内主机 SSH 互信配置

本章提供两种集群内主机 SSH 互相配置的方式:工具配置和命令行配置。

工具配置

进入安装包 cd 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-d.ini 进行配置。配置信息与构建环境保持一致,各个字段信息参考该文件中的说明。

其中,antdb_apppath 的目录应该写上面安装的目录(默认目录或者用户指定的目录)。

  • antdb_apppath 的目录应该写上面安装的目录(默认目录或者用户指定的目录)。

  • [standby_info] 中的 antdb_apppath 应该和 [primary_info] 中的 antdb_apppath 保持一致。

  • adbdcs 的数据目录 adbdcs_datapath 不要和 AntDB 的数据目录 antdb_datapath 配置一样。

  • mgr 节点数据目录 antdb_datapath 应与各节点数据目录 antdb_datapath 不同。

注意: 该配置文件最后的换行符不可全删掉(配置文件最后要有换行符)。

## cluster_info 配置项说明:
##
## cluster_type 分类:
##   D 表示分布式版本:需要配置此文件内所有信息
##   D_HA 表示分布式高可用集群版本:需要配置此文件内所有信息
## cluster_name:数据库集簇的名称
## cluster_user: 数据库的超级用户,一般设定为执行此安装程序的操作系统用户

[cluster_info]
cluster_type = D_HA
cluster_name = antdbcluster
cluster_user = antdb


## mgr_info 配置项说明(mgr 为分布式管理节点):
##
## antdb_apppath:mgr 节点数据库程序目录
## antdb_datapath:mgr 节点数据库的数据目录;需要设定为空目录,且不要和其它配置项中的目录交叉
## antdb_password:数据库的超级用户的初始密码(超级用户名参见 “cluster_user”)
## antdb_port:mgr 节点数据库端口号
## primary_ip:mgr 节点数据库 ip,即执行此安装程序的主机 ip
## primary_sshport:执行此安装程序的主机的 SSH 服务端口号

[mgr_info]
primary_ip = 10.21.10.175
primary_sshport = 22
antdb_apppath = /home/antdb/app
antdb_datapath = /home/antdb/data/mgr
antdb_password = XXX
antdb_port = 3456


## host_info 配置项说明
##
## host_info 格式:hostname,protocol_port,protocol,antdb_apppath,antdb_agent_port,host_user,host_ip
##   host_name:在 AntDB 内部标识一台主机所用的名称,唯一
##   protocol_port:AntDB 所用的通信协议服务端口号(目前为 SSH 端口)
##   protocol:AntDB 依赖的通信协议(目前为 SSH)
##   antdb_apppath:主机上 AntDB 程序的安装目录;需要指定为空目录,在初始化过程中自动安装
##   antdb_agent_port: 主机上 AntDB Agent 程序使用的端口号
##   host_user: 主机上操作系统用户,一般与 mgr_info 中使用相同用户名
##   host_ip:主机 ip 地址

[host_info]
host =  adb01,22,ssh,/home/antdb/app,60102,antdb,10.21.10.175
host =  adb02,22,ssh,/home/antdb/app,60102,antdb,10.21.10.176
host =  adb03,22,ssh,/home/antdb/app,60102,antdb,10.21.10.177



## node_info 配置项说明
##
## node_info 格式:node_name,node_type,host_name,antdbdb_port,antdb_datapath,role[,master_nodename,sync_mode]
##   node_name:分布式节点名称,作为 AntDB 内部的标识,唯一
##   node_type:分布式节点类型,包括 GC、CN、DN
##   host_name:此节点所在的 host,参加上述 host_info
##   antdbdb_port:此节点使用的端口号
##   antdb_datapath:此节点使用的数据库数据目录;需要指定为空目录
##   role:此节点的角色,包括 master(主节点)、slave(备节点)
##   master_nodename:主节点名称;当节点类型为 slave 时需要填写此项
##   sync_mode:备节点类型,包括 sync(同步)、async(异步);当节点类型为 slave 时需要填写此项

[node_info]
node = cn1,CN,adb01,7788,/home/antdb/data/cn1,master
node = cn2,CN,adb02,7788,/home/antdb/data/cn2,master
node = cn3,CN,adb03,7788,/home/antdb/data/cn3,master
node = dn1,DN,adb01,60104,/home/antdb/data/dn1,master
node = dn2,DN,adb02,60105,/home/antdb/data/dn2,master
node = dn3,DN,adb03,60106,/home/antdb/data/dn3,master
node = ds1a,DN,adb02,60104,/home/antdb/data/ds1a,slave,dn1,sync
node = ds1b,DN,adb03,60104,/home/antdb/data/ds1b,slave,dn1,async
node = ds2a,DN,adb01,60105,/home/antdb/data/ds2a,slave,dn2,sync
node = ds2b,DN,adb03,60105,/home/antdb/data/ds2b,slave,dn2,async
node = ds3a,DN,adb01,60106,/home/antdb/data/ds3a,slave,dn3,sync
node = ds3b,DN,adb02,60106,/home/antdb/data/ds3b,slave,dn3,async
node = gc_1,GC,adb01,60103,/home/antdb/data/gc_1,master
node = gc_2,GC,adb02,60103,/home/antdb/data/gc_2,slave,gc_1,sync
node = gc_3,GC,adb03,60103,/home/antdb/data/gc_3,slave,gc_1,async


## standbyinfo 配置项说明:
##
## 分布式集群高可用集群:配置的节点目前只能是mgr节点
## 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,10.21.10.176,22,/home/antdb/app,/home/antdb/data/mgr,3456
standby_node = standby2,10.21.10.177,22,/home/antdb/app,/home/antdb/data/mgr,3456


## 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,12390,primary
adbhamgr_node = adbhamgr-2,12390,standby1
adbhamgr_node = adbhamgr-3,12390,standby2


## parameter 配置项说明:
##
## 此配置项用于设定数据库配置选项。
## config 格式:config_name=config_value
##     config_name: 配置项名称
##     config_value:配置项值
##
## 注意:
## 1、‘=’作为名称和值的分隔符,请注意按此格式书写。
## 2、config_value 的格式请按照数据库全局配置时的格式书写(集中式与分布式可能存在区别),安装工具不会对 config_value 的格式进行检查。

# [parameter]
# shared_buffers = '128MB'
# max_locks_per_transaction = 256


## init_option 配置项说明:
##
## 此配置项用于设定数据库初始化选项。
## config initall=init_value
##     initall:为初始化配置项的的固定名称,不需要修改
##     init_value:初始化选项。下面示例的含义为:设置 walsegsize 为 256MB
##
## 注意:
## 1、分布式仅支持设置 walsegsize。
# [init_option]
# initall = walsegsize,256
 initall = walsegsize,256 encoding,UTF8 locale,C

执行部署

执行如下命令进行初始化部署。

sh antdb_init.sh -c setup/common/initconf-d.ini

执行完成后,会输出集群的部署信息。

[antdb@localhost ~]$ adbhamgrctl -c /etc/adbhamgr/adbhamgr_antdbcluster.yaml  list
+ Cluster: antdbcluster (7321985655274230003) --+---------+----+-----------+-----------------+
| Member     | Host              | Role         | State   | TL | Lag in MB | Pending restart |
+------------+-------------------+--------------+---------+----+-----------+-----------------+
| adbhamgr-1 | 10.21.10.175:3456 | Leader       | running |  2 |           | *               |
| adbhamgr-2 | 10.21.10.176:3456 | Sync Standby | running |  2 |         0 | *               |
| adbhamgr-3 | 10.21.10.177:3456 | Replica      | running |  2 |         0 | *               |
+------------+-------------------+--------------+---------+----+-----------+-----------------+

执行以下命令检查 adbdcs 状态:

adbdcsctl --endpoints=http://10.21.10.175:12379,http://10.21.10.176:12379,http://10.21.10.177:12379  member list
32bf7150b4cd3fa1: name=adbdcs-3 peerURLs=http://10.21.10.177:12380 clientURLs=http://10.21.10.177:12379,http://127.0.0.1:12379 isLeader=true
e7335378f8181f19: name=adbdcs-2 peerURLs=http://10.21.10.176:12380 clientURLs=http://10.21.10.176:12379,http://127.0.0.1:12379 isLeader=false
f395bf1a5b94c58d: name=adbdcs-1 peerURLs=http://10.21.10.175:12380 clientURLs=http://10.21.10.175:12379,http://127.0.0.1:12379 isLeader=false

部署完成后,可以用 adb 命令登录 mgr 管理节点:

adb -d postgres -p 3456

查看各节点信息:

antdb=# monitor all;
 nodename |      nodetype      | status | description |     host     | port  | recovery |           boot time           | nodezone
----------+--------------------+--------+-------------+--------------+-------+----------+-------------------------------+----------
 gc_1     | gtmcoord master    | t      | running     | 10.21.10.175 | 60103 | false    | 2024-01-11 17:04:38.870926+08 | local
 gc_2     | gtmcoord slave     | t      | running     | 10.21.10.176 | 60103 | true     | 2024-01-11 17:04:39.897305+08 | local
 gc_3     | gtmcoord slave     | t      | running     | 10.21.10.177 | 60103 | true     | 2024-01-11 17:04:39.911249+08 | local
 cn1      | coordinator master | t      | running     | 10.21.10.175 |  7788 | false    | 2024-01-11 17:04:40.899928+08 | local
 cn2      | coordinator master | t      | running     | 10.21.10.176 |  7788 | false    | 2024-01-11 17:04:40.949381+08 | local
 cn3      | coordinator master | t      | running     | 10.21.10.177 |  7788 | false    | 2024-01-11 17:04:40.939051+08 | local
 dn1      | datanode master    | t      | running     | 10.21.10.175 | 60104 | false    | 2024-01-11 17:04:42.232178+08 | local
 dn2      | datanode master    | t      | running     | 10.21.10.176 | 60105 | false    | 2024-01-11 17:04:42.257425+08 | local
 dn3      | datanode master    | t      | running     | 10.21.10.177 | 60106 | false    | 2024-01-11 17:04:42.271038+08 | local
 ds1a     | datanode slave     | t      | running     | 10.21.10.176 | 60104 | true     | 2024-01-11 17:04:43.441449+08 | local
 ds1b     | datanode slave     | t      | running     | 10.21.10.177 | 60104 | true     | 2024-01-11 17:04:43.448628+08 | local
 ds2a     | datanode slave     | t      | running     | 10.21.10.175 | 60105 | true     | 2024-01-11 17:04:43.488864+08 | local
 ds2b     | datanode slave     | t      | running     | 10.21.10.177 | 60105 | true     | 2024-01-11 17:04:43.528483+08 | local
 ds3a     | datanode slave     | t      | running     | 10.21.10.175 | 60106 | true     | 2024-01-11 17:04:43.541617+08 | local
 ds3b     | datanode slave     | t      | running     | 10.21.10.176 | 60106 | true     | 2024-01-11 17:04:43.579849+08 | local
(15 rows)
问题反馈