pacemaker+corosync+kingbase 8.6
在pacemaker中如果用systemd agent方式创建kingbase资源,无法检测到kingbase的异常终止(其他资源完好的情况下),
所以改用ocf:heartbeat:pgsql agent的方式创建资源,因为ocf:heartbeat:pgsql是针对postgreSQL的,所以需要少许修改。
环境:OS:麒麟V10 SP3,corosync 3.1.8,pacemaker 2.1.6 ,crmsh 4.5 , resource-agents 4.2.0, fence-agents 4.2.1
1. /usr/lib/ocf/resource.d/heartbeat/pgsql种的postmaster.pid改成kingbase.pid,将 PG_VERSION改成SYS_VERSION
2. 给数据库创建用户kingbase,需要和pgdba(OS用户名)一样:
create user kingbase with password ‘123456’;
正常情况下应该给资源设置ocf:heartbeat:pgsql的monitor_user和monitor_password,指定监控用户和口令,但是设置了也不起作用,一直用kingbase(pgdba)连接数据库,应该是pgsql agent的bug,后续研究看升级resource agent是否能解决问题。
3.设置免密登陆:
ocf:heartbeat:pgsql agent连接数据库时,需要免密登陆,本来是用PGUSER,PGPASSWORD环境变量的方式,使命令行不需要交互,但是这种方式,在kingbase高版本不起作用,所以需要用encpwd工具设置免密登陆。
/opt/Kingbase/ES/V8/Server/bin/sys_encpwd -H \* -P \* -D \* -U kingbase -W 123456
工具会生成/home/kingbase/.encpwd文件,口令加密存储在这个文件里; 星号是通配符,需要用\转义,使用通配符不安全。
/opt/Kingbase/ES/V8/Server/bin/sys_encpwd -H 192.168.0.181 -P 54321 -D template1 -U kingbase -W 123456
测试免密登陆:
/opt/Kingbase/ES/V8/Server/bin/ksql -p 54321 -U kingbase template1
4. 用crmsh创建pacemaker资源:
crm configure primitive kingbasedb1 ocf:heartbeat:pgsql \
params pgctl=”/opt/Kingbase/ES/V8/Server/bin/sys_ctl” \
ctl_opt=”-w” \
psql=”/opt/Kingbase/ES/V8/Server/bin/ksql” \
pgdata=”/data01/kbdb” \
pgdba=”kingbase” \
pghost=”0.0.0.0″ \
config=”/data01/kbdb/kingbase.conf” \
pgport=”54321″ \
pglibs=”/opt/Kingbase/ES/V8/Server/lib” \
pgdb=”template1″ \
logfile=”/data01/kbdb/sys_log/kingbasedb1.log” \
op start interval=”0″ timeout=”120″ \
op stop interval=”0″ timeout=”120″ \
op monitor interval=”9s” timeout=”30″