罗名岳
发布于

OushuDB配置IP高可用

一、配置 Keepalive 服务

1.master 和 standby 节点安装 keepalived

sudo yum install -y keepalived

2.编辑 hawq_master_keepalived.conf 和 hawq_standby_keepalived.conf 文件, 替换其中的变量:

${hawq_master_ip}: master 节点 ip
${master_ethnet}: 上述 ip 对应的 eth 端口名
${hawq_standby_ip}: standby 节点 ip
${standby_ethnet}: 上述 ip 对应的 eth 端口名
${hawq_port}: hawq 监听的端口,默认为 5432
${virtual_router_id}: 标识符,不与其他 keepalived 实例冲突即可
${lb_ip}: 浮动 ip,上层应用直接与这个 ip 建连,可以指定子网掩码,格式如 "192.168.1.1/16"

3.hawq_master_keepalived.conf

vrrp_script chk_hawq {
    script "/etc/keepalived/hawq_check_master.sh"
    interval 2
}

vrrp_instance VI_1 {
    interface ${master_ethnet}
    state MASTER
    priority 200

    virtual_router_id ${virtual_router_id}
    unicast_src_ip ${hawq_master_ip}
    unicast_peer {
        ${hawq_standby_ip}
    }

    authentication {
        auth_type PASS
        auth_pass hawq_lbha
    }
	
    virtual_ipaddress { #设置vip
        ${lb_ip}
    }
	
    track_script {
        chk_hawq
    }

    notify_master "iptables -F INPUT"

    notify_backup "iptables -F INPUT; iptables -I INPUT -p TCP --destination ${hawq_master_ip} --dport 5432 -j DROP; iptables -I INPUT -p TCP --source ${hawq_master_ip} --dport 5432 -j ACCEPT; iptables -I INPUT -p TCP --source ${hawq_standby_ip} --dport 5432 -j ACCEPT"

    notify_fault "iptables -F INPUT; iptables -I INPUT -p TCP --destination ${hawq_master_ip} --dport 5432 -j DROP; iptables -I INPUT -p TCP --source ${hawq_master_ip} --dport 5432 -j ACCEPT; iptables -I INPUT -p TCP --source ${hawq_standby_ip} --dport 5432 -j ACCEPT"
}

4.hawq_standby_keepalived.conf

vrrp_script chk_hawq {
    script "/etc/keepalived/hawq_check_master.sh"
    interval 2
}

vrrp_instance VI_1 {
    interface ${standby_ethnet}
    state BACKUP
    priority 100

    virtual_router_id ${virtual_router_id}
    unicast_src_ip ${hawq_standby_ip}
    unicast_peer {
        ${hawq_master_ip}
    }

    authentication {
        auth_type PASS
        auth_pass hawq_lbha
    }
    
    virtual_ipaddress { #设置vip
        ${lb_ip}
    }

    track_script {
        chk_hawq
    }

    notify_master "iptables -F INPUT"

    notify_backup "iptables -F INPUT; iptables -A INPUT -p TCP --destination ${hawq_standby_ip} --dport 5432 -j DROP; iptables -I INPUT -p TCP --source ${hawq_master_ip} --dport 5432 -j ACCEPT; iptables -I INPUT -p TCP --source ${hawq_standby_ip} --dport 5432 -j ACCEPT"

    notify_fault "iptables -F INPUT; iptables -A INPUT -p TCP --destination ${hawq_standby_ip} --dport 5432 -j DROP; iptables -I INPUT -p TCP --source ${hawq_master_ip} --dport 5432 -j ACCEPT; iptables -I INPUT -p TCP --source ${hawq_standby_ip} --dport 5432 -j ACCEPT"
}

5.拷贝文件

拷贝hawq_master_keepalived.conf覆盖master节点下的 /etc/keepalived/keepalived.conf
拷贝hawq_standby_keepalived.conf覆盖standby节点下的 /etc/keepalived/keepalived.conf

6.编辑/etc/keepalived/hawq_check_master.sh

#!/usr/bin/env bash
ps -ef | grep postgres | grep master

7.启动 keepalived 服务

sudo service keepalived start

二、启动主备切换监听程序

1.修改权限(master 和 standby 节点)

chmod 755 /usr/local/hawq/bin/standby_daemon
chmod 755 /usr/local/hawq/bin/hawq_heartbeat_monitor
chmod 755 /usr/local/hawq/bin/hawq_ctl
chown gpadmin:gpadmin /usr/local/hawq/bin/standby_daemon
chown gpadmin:gpadmin /usr/local/hawq/bin/hawq_heartbeat_monitor
chown gpadmin:gpadmin /usr/local/hawq/bin/hawq_ctl
chmod +x /etc/keepalived/hawq_check_master.sh

2.启动监听服务

#Master节点
su - gpadmin
source /usr/local/hawq/greenplum_path.sh; 
nohup /usr/local/hawq/bin/standby_daemon 2>&1 >/dev/null &
#Standby节点
su - gpadmin
source /usr/local/hawq/greenplum_path.sh; 
nohup /usr/local/hawq/bin/standby_daemon 2>&1 >/dev/null &
nohup /usr/local/hawq/bin/hawq_heartbeat_monitor 2>&1 >/dev/null &
评论
    test