postgresql+keepalived HA VIPドリフトを実現
2787 ワード
!/bin/bash################################
yum clean all&&yum repolistyum install vim tree-y#インストールkeepalived############################################mkdir-p/keepalived/scriptmkdir-p/var/log/keepalived#追加keepalived主従切替スクリプト###########################tee>/etc/keepalived/scriptcheck.sh <
#!/bin/bashVIP=
Else#は主掛を判断し、vipが浮上し、if[$VIP-eq 1]&&[$Standby_Wait-eq 1]&&[$Standby_Primary-eq 0]&[$Standby_Primary-eq 0]を読み書きできるようになった.thensu - postgres -c "pg_ctl promote -D/var/lib/pgsql/9.6/data/" echo "[$(date +"%F %T")] standby promote">>/var/log/keepalived/check_pg.logfi#は自分が主であることを判断し、連絡を失ったif[$VIP-eq 1]&[$Standby_Wait-eq 0]&&[$Standby_Primary-eq 0]&[$Primary_Standby-eq 0]&[$thensleep 5 && echo "[$(date +"%F %T")] can not find standby">>/var/log/keepalived/check_pg.logfifiEOFsleep 3chmod +x/etc/keepalived/script/pgsql_check.shyum install keepalived-y#keepalivedプロファイルの変更########################################################tee>/etc/keepalived/keepalived.conf global_defs {router_id PRO_PGSQL}
vrrp_script chk_pgsql_proxy {script "/etc/keepalived/script/pgsql_check.sh"interval 2weight -20}
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 90priority 200advert_int 1nopreemptauthentication {auth_type PASSauth_pass 363747}virtual_ipaddress {10.10.10..247/24 dev eth0 label eth0:vip}track_script{chk_pgsql_proxy}}EOF#修正keepalivedログ##############sed-i'14 s#KEEPALIVED_OPTIONS="-D"#KEEPALIVED_OPTIONS="-D -d -S 0"#g'/etc/sysconfig/keepalivedsed -i '1 i/var/log/keepalived/keepalived.log'/etc/logrotate.d/syslogsed -i '42 i# keepalived'/etc/rsyslog.confsed -i '43 ilocal0./var/log/keepalived/keepalived.log'/etc/rsyslog.confsed -i '44 i.err;kern.debug;daemon.notice;local0.none/var/log/messages'/etc/rsyslog.confsed -i '45 i\'/etc/rsyslog.confsystemctl restart rsyslog
Author: xgmin
## Version: 1.0
## Date: 20191121
################################
yum clean all&&yum repolistyum install vim tree-y#インストールkeepalived############################################mkdir-p/keepalived/scriptmkdir-p/var/log/keepalived#追加keepalived主従切替スクリプト###########################tee>/etc/keepalived/scriptcheck.sh <
#!/bin/bashVIP=
ip a | grep 10.10.10.247 | wc -l
#ライブラリから待機している状態かどうかを判断Standby_Wait=ps -ef | grep postgres | grep 'startup process' | wc -l
#スレーブリンクマスターライブラリが正常かどうかを判断Standby_Primary=ps -ef | grep postgres | grep 'receiver' | wc -l
#メインライブラリ接続スレーブライブラリが正常かどうかを判断するPrimary_Standby=ps -ef | grep postgres | grep 'sender' | wc -l
#pgstgresqlポート番号が存在しない場合、メッセージをログに書き込みkeepalivedif[$(netstat-lntup|grep 5432|wc-l)-eq 0]を閉じます.thenecho "[$(date +"%F %T")] postgresql stop so vip stop">>/var/log/keepalived/check_pg.logsystemctl stop keepalived Else#は主掛を判断し、vipが浮上し、if[$VIP-eq 1]&&[$Standby_Wait-eq 1]&&[$Standby_Primary-eq 0]&[$Standby_Primary-eq 0]を読み書きできるようになった.thensu - postgres -c "pg_ctl promote -D/var/lib/pgsql/9.6/data/" echo "[$(date +"%F %T")] standby promote">>/var/log/keepalived/check_pg.logfi#は自分が主であることを判断し、連絡を失ったif[$VIP-eq 1]&[$Standby_Wait-eq 0]&&[$Standby_Primary-eq 0]&[$Primary_Standby-eq 0]&[$thensleep 5 && echo "[$(date +"%F %T")] can not find standby">>/var/log/keepalived/check_pg.logfifiEOFsleep 3chmod +x/etc/keepalived/script/pgsql_check.shyum install keepalived-y#keepalivedプロファイルの変更########################################################tee>/etc/keepalived/keepalived.conf global_defs {router_id PRO_PGSQL}
vrrp_script chk_pgsql_proxy {script "/etc/keepalived/script/pgsql_check.sh"interval 2weight -20}
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 90priority 200advert_int 1nopreemptauthentication {auth_type PASSauth_pass 363747}virtual_ipaddress {10.10.10..247/24 dev eth0 label eth0:vip}track_script{chk_pgsql_proxy}}EOF#修正keepalivedログ##############sed-i'14 s#KEEPALIVED_OPTIONS="-D"#KEEPALIVED_OPTIONS="-D -d -S 0"#g'/etc/sysconfig/keepalivedsed -i '1 i/var/log/keepalived/keepalived.log'/etc/logrotate.d/syslogsed -i '42 i# keepalived'/etc/rsyslog.confsed -i '43 ilocal0./var/log/keepalived/keepalived.log'/etc/rsyslog.confsed -i '44 i.err;kern.debug;daemon.notice;local0.none/var/log/messages'/etc/rsyslog.confsed -i '45 i\'/etc/rsyslog.confsystemctl restart rsyslog