0
点赞
收藏
分享

微信扫一扫

opengauss高可用之keepalived配置

一、安装keepalived

yum install -y kernel-devel (安装kernerl-devel,目的是给keepalived提供和LVS搭配使用)
yum install -y openssl-devel ( HTTPS 服务的时候要用到此模块)
yum install gcc gcc-c++ make -y (提供编译工具)
tar -xf keepalived-2.0.12.tar.gz -C /usr/local/src/
cd /usr/local/src/keepalived-2.0.12/
./configure --prefix=/usr/local/keepalived
make && make install
 mkdir /etc/keepalived
cp  /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
systemctl restart keepalived

二、第一个节点配置

vi /etc/keepalived/keepalived.conf
--------------------------------------------
! Configuration File for keepalived
## 全局定义
global_defs {
  router_id Keepalived_openGauss01          #运行 keepalived 服务器的一个标识
  script_user root                        #执行脚本的用户
}
vrrp_script chk_opengauss_active {
  script "/etc/keepalived/chk_opengauss_active.sh" #脚本路径
  interval 2 #脚本检测频率
  fall 2 #如果连续两次检测失败,认为节点服务不可用
  rise 1 #如果连续一次检查成功则认为节点正常
}
## VRRP实例定义
## 通常如果master服务Down掉后backup会变成master,但是当master服务又好了的时候 master此时会抢占VIP,这样就会发生两次数据库切换。
## 建议使用nopreempt参数设置为非抢占模式,此时主库从故障中恢复后,不会从新的主库抢回VIP,但这需要将master和backup的state都设置成backup。
vrrp_instance VI_1 {
  state BACKUP                            #指定Keepalived的角色(BACKUP需大写)
  interface eth0                          #指定 HA 监测的网络接口
  virtual_router_id 59                    #虚拟路由的数字标识,同一个 vrrp_instance 下,MASTER 和 BACKUP 一致
  nopreempt                               #非抢占模式,主库从故障中恢复后,不会从新的主库抢回VIP
  priority 100                            #优先级,备节点需要适当降低优先级 
  advert_int 1                            #MASTER 和 BACKUP 负载均衡器同步检查的时间间隔(秒)
  authentication {                        #设置验证码和验证类型
      auth_type PASS
      auth_pass 1111
  }
  virtual_ipaddress {                     #设置虚拟 IP 地址,可以设置多个,每个一行
      192.168.1.10
  }
  notify_master "/etc/keepalived/change_to_master.sh"
  track_script {
    chk_opengauss_active
  }
}

三、第二个节点配置

vi /etc/keepalived/keepalived.conf
--------------------------------------------
! Configuration File for keepalived
## 全局定义
global_defs {
  router_id Keepalived_openGauss02          #运行 keepalived 服务器的一个标识
  script_user root                        #执行脚本的用户
}
vrrp_script chk_opengauss_active {
  script "/etc/keepalived/chk_opengauss_active.sh" #脚本路径
  interval 2 #脚本检测频率
  fall 2 #如果连续两次检测失败,认为节点服务不可用
  rise 1 #如果连续一次检查成功则认为节点正常
}
## VRRP实例定义
## 通常如果master服务Down掉后backup会变成master,但是当master服务又好了的时候 master此时会抢占VIP,这样就会发生两次数据库切换。
## 建议使用nopreempt参数设置为非抢占模式,此时主库从故障中恢复后,不会从新的主库抢回VIP,但这需要将master和backup的state都设置成backup。
vrrp_instance VI_1 {
  state BACKUP                            #指定Keepalived的角色(BACKUP需大写)
  interface eth0                          #指定 HA 监测的网络接口
  virtual_router_id 59                    #虚拟路由的数字标识,同一个 vrrp_instance 下,MASTER 和 BACKUP 一致
  nopreempt                               #非抢占模式,主库从故障中恢复后,不会从新的主库抢回VIP
  priority 90                            #优先级,备节点需要适当降低优先级 
  advert_int 1                            #MASTER 和 BACKUP 负载均衡器同步检查的时间间隔(秒)
  authentication {                        #设置验证码和验证类型
      auth_type PASS
      auth_pass 1111
  }
  virtual_ipaddress {                     #设置虚拟 IP 地址,可以设置多个,每个一行
      192.168.1.10
  }
  notify_master "/etc/keepalived/change_to_master.sh"
  track_script {
    chk_opengauss_active
  }
}

四、存活脚本

vi /etc/keepalived/chk_opengauss_active.sh
--------------------------------------------
#!/bin/bash
active_num=$(netstat -tlnp|grep 26000|grep gaussdb|wc -l)
if [ ${active_num} -eq 0 ]; then
  service keepalived stop
fi

五、切换脚本

vi /etc/keepalived/change_to_master.sh
--------------------------------------------
master_process=$(su - omm -c "gs_om -t status --detail"|grep Primary|wc -l)
if [ ${master_process} -eq 0 ]; then
  su - omm -c "gs_ctl failover -D /data/opengauss/dn"
  su - omm -c "gs_om -t refreshconf"
fi

举报

相关推荐

0 条评论