集群管理MGR部署
部署集群
第一步:配置环境变量
编译或安装adbmgr之后,会在指定目录(即$ADBHOME
目录)的bin目录下产生initmgr
和mgr_ctl
可执行文件。要想初始化adbmgr还需要配置PATH变量才行。 向当前用户下的隐藏文件.bashrc
中(执行vim ~/.bashrc
打开文件)追加如下内容:
export ADBHOME=/opt/app/antdb
export PATH=$ADBHOME/bin:$PATH
export LD_LIBRARY_PATH=$ADBHOME/lib:$LD_LIBRARY_PATH
export PGDATABASE=postgres
export mgrdata=/data/antdb/mgr1
alias adbmgr='psql -p 6432 -d postgres '
alias mgr_stop='mgr_ctl stop -D $mgrdata -m fast'
alias mgr_start='mgr_ctl start -D $mgrdata'
注意:ADBHOME需要根据AntDB的编译产生的二进制可执行文件的存放路径设置。 mgrdata 同样需要根据各自环境的实际路径进行修改。
然后执行source ~/.bashrc
使其生效即可。
第二步:初始化adbmgr
initmgr -D $mgrdata
其中$mgrdata
是用户自己指定的存放adbmgr 的安装目录(该文件目录需要预先创建)。
初始化后,在指定的目录下生成如下文件:
[gd@INTEL175 ~]$ cd /data/antdb/mgr1
[gd@INTEL175 mgr1]$ ll
total 112
drwx------ 5 gd gd 4096 Oct 17 17:28 base
drwx------ 2 gd gd 4096 Oct 17 17:28 global
drwx------ 2 gd gd 4096 Oct 17 17:28 pg_clog
drwx------ 2 gd gd 4096 Oct 17 17:28 pg_commit_ts
drwx------ 2 gd gd 4096 Oct 17 17:28 pg_dynshmem
-rw------- 1 gd gd 4450 Oct 17 17:28 pg_hba.conf
-rw------- 1 gd gd 1636 Oct 17 17:28 pg_ident.conf
drwx------ 4 gd gd 4096 Oct 17 17:28 pg_logical
drwx------ 4 gd gd 4096 Oct 17 17:28 pg_multixact
drwx------ 2 gd gd 4096 Oct 17 17:28 pg_notify
drwx------ 2 gd gd 4096 Oct 17 17:28 pg_replslot
drwx------ 2 gd gd 4096 Oct 17 17:28 pg_serial
drwx------ 2 gd gd 4096 Oct 17 17:28 pg_snapshots
drwx------ 2 gd gd 4096 Oct 17 17:28 pg_stat
drwx------ 2 gd gd 4096 Oct 17 17:28 pg_stat_tmp
drwx------ 2 gd gd 4096 Oct 17 17:28 pg_subtrans
drwx------ 2 gd gd 4096 Oct 17 17:28 pg_tblspc
drwx------ 2 gd gd 4096 Oct 17 17:28 pg_twophase
-rw------- 1 gd gd 4 Oct 17 17:28 PG_VERSION
drwx------ 3 gd gd 4096 Oct 17 17:28 pg_xlog
-rw------- 1 gd gd 88 Oct 17 17:28 postgresql.auto.conf
-rw------- 1 gd gd 22234 Oct 17 17:28 postgresql.conf
第三步:修改adbmgr配置参数
- 修改postgresql.conf
cat >> ${mgrdata}/postgresql.conf << EOF
port = 6432
listen_addresses = '*'
log_directory = 'pg_log'
log_destination ='csvlog'
logging_collector = on
log_min_messages = error
max_wal_senders = 3
hot_standby = on
wal_level = replica
EOF
adbmgr 的默认端口是 6432
,用户可以根据规划设置一个可用的端口。
- 修改pg_hba.conf
cat >> ${mgrdata}/pg_hba.conf << EOF
host replication all 10.0.0.0/8 trust
host all all 10.0.0.0/8 trust
EOF
hba中的IP需要根据实际情况进行修改。
第四步:启动 adbmgr
adbmgr初始化成功后,就可以启动它了。
mgr_ctl start -D /data/antdb/mgr1
/data/antdb/mgr1
要与初始化路径保持一致,均为变量mgrdata
的值。
[gd@INTEL175 ~]$ mgr_ctl start -D /data/antdb/mgr1
server starting
[gd@INTEL175 ~]$ LOG: database system was shut down at 2017-10-17 17:38:15 CST
LOG: MultiXact member wraparound protections are now enabled
LOG: database system is ready to accept connections
LOG: autovacuum launcher started
LOG: adb monitor launcher started
若adbmgr在启动的过程中报端口被占用,原因是当前端口号已经被其他进程使用(adbmgr默认使用端口是6432)。需要修改 /data/antdb/mgr1/postgresql.conf
文件中变量 port
的值使其不与其他的进程冲突即可。
启动后,ps可以查看mgr的进程如下:
67456 ? S 0:00 /data/antdb/app/bin/adbmgrd -D mgr
67458 ? Ss 0:00 \_ adbmgr: checkpointer process
67459 ? Ss 0:00 \_ adbmgr: writer process
67460 ? Ss 0:00 \_ adbmgr: wal writer process
67461 ? Ss 0:00 \_ adbmgr: autovacuum launcher process
67462 ? Ss 0:00 \_ adbmgr: stats collector process
67463 ? Ss 0:00 \_ adbmgr: adb monitor launcher process
第五步:配置备机adbmgr(可选)
在实际的生产环境中,adbmgr也需要做高可用,所以也需要给adbmgr配置备机。 在功能验证阶段可不加adbmgr的备机,在后期验证高可用的时候再进行添加。
在选定的部署adbmgr备机的主机上,使用antdb
用户执行:
pg_basebackup -h 10.20.16.175 -p 6432 -U antdb -D /data/antdb/mgr_standby --nodename mgr -Xs -Fp -R
其中:
-
-h adb05
中的adb05
为adbmgr master的主机名,此处也可以使用IP。 -
-p 6432
为adbmgr master的端口。 -
-U antdb
表示使用antdb用户去连接adbmgr master -
-D
指定了 adbmgr slave 在执行主机上的数据目录,确保权限正确。 - 其他参数保持不变。
执行完成后,启动 adbmgr slave:
mgr_ctl start -D /data/antdb/mgr_standby
第六步:add 主机
根据规划,集群部署在几台主机上,就添加几台主机。
add host 主机名(port=22,protocol='ssh',adbhome='对应主机的AntDB安装路径]',address='服务器IP',agentport=agent端口号,user=主机用户);
- port:ssh端口号,默认22;
- protocol:登录协议,默认ssh,用户可以不写;
- adbhome:antdb安装目录,下一步deploy二进制程序会将mgr上的二进制程序复制到此目录;
- address:主机IP地址;
- agentport:由于在每一个host上会启动一个agent进程,这里就是对应的端口号;
- user:ssh登录用户名;
例如:
add host host1(port=22,protocol='ssh',adbhome='/home/uatadb/app',address='10.20.16.227',agentport=31001,user='uatadb');
add host host2(port=22,protocol='ssh',adbhome='/home/uatadb/app',address='10.20.16.228',agentport=31001,user='uatadb');
第七步:deploy二进制程序
deploy命令会将AntDB的二进制执行文件打包发送到host表中所有主机上,就是上一步添加的主机。
在集群内各主机之间如果没有设置互信的情况下,执行deploy all需要输入用户密码(当前用户的登录密码),如果设置主机间互信,则可以省去密码的繁琐设置。
一次部署所有主机:
deploy all password '123456';
部署指定的主机,例如部署指定的主机adb01和adb02:
deploy adb01,adb02 password '123456';