集群管理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';
复制