Mycat+haproxy中使用keepalived保障haproxy的高可用

整体结构图

一、安装haproxy

1、在192.168.127.135中安装haproxy。

上一节我们在192.168.127.134中安装haproxy,这节我们在192.168.127.135中安装haproxy

安装过程参考MyCat高可用设计

2、修改haproxy 配置 

vi /etc/haproxy/haproxy.cfg

针对http的配置注释掉

 配置连接两台mycat

 3、启动haproxy

haproxy -f /etc/haproxy/haproxy.cfg

进程已经在了,说明启动成功

4、使用Navicat连接haproxy

1) 使用的端口为5000,防火墙开放5000端口

[root@localhost ~]# firewall-cmd --zone=public --add-port=5000/tcp --permanent
[root@localhost ~]# firewall-cmd --reload

2) Navicat连接haproxy

 到这里,我们在192.168.127.134和192.168.127.135都安装了haproxy。

二、使用Keepalived保障haproxy的高可用

1、在192.168.127.134安装Keepalived

yum search keepalived

yum install -y keepalived.x86_64

2、修改keepalived配置文件

1) 注释vrrp_strict 将影响虚拟IP

cd /etc/keepalived

  vi keepalived.conf

整体配置

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
  # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    interval 2
}

# 配置虚拟IP,一台为Master,另外一台为BACKUP。Master才能得到虚拟IP
vrrp_instance VI_1 {
    state MASTER
    # ens33为网卡名称  使用ip address查看
    interface ens33
    virtual_router_id 51
    priority 100
    # 单播源地址IP
    unicast_src_ip 192.168.127.134
    unicast_peer {
	192.168.127.135 # 单播的目标地址
    }
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟Ip地址
    virtual_ipaddress {
        192.168.127.199
    } 
    track_script {
       chk_haproxy
    }
}

# 虚拟Ip,定义端口为6000
virtual_server 192.168.127.199 6000 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP

    # 本机地址。5000为haproxy端口
    real_server 192.168.127.134 5000 {
        weight 1
        # 心跳监测,监测haproxy是否存活
    }
}

  

  

2、在192.168.127.135安装Keepalived。(参考前面的步骤)

整体配置如下

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
  # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    interval 2
}



# 配置虚拟IP,一台为Master,另外一台为Slave。Master才能得到虚拟IP
vrrp_instance VI_1 {
    state BACKUP
    # ens33为网卡名称  使用ip address查看
    interface ens33
    virtual_router_id 51
    priority 50
    # 单播源地址IP
    unicast_src_ip 192.168.127.135
    unicast_peer {
        192.168.127.134 # 单播的目标地址
    }

    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟Ip地址
    virtual_ipaddress {
        192.168.127.199
    }
    track_script {
        chk_haproxy
    }

}

# 虚拟Ip,定义端口为6000
virtual_server 192.168.127.199 6000 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP

    # 本机地址。5000为haproxy端口
    real_server 192.168.127.135 5000 {
        weight 1
        # 心跳监测,监测haproxy是否存活
    }
}

  

3、启动Keepalived

分别启动134和135的keepalived

keepalived  -f /etc/keepalived/keepalived.conf

使用ps查看是否启动成功

134中查看ip,可以看到多了一个虚拟ip,192.168.127.199

 135中查看ip,则没有199的虚拟IP

4、Navicat连接keepalived

 密码位mycat的密码

如下图,说明已经连接成功

5、移除134的haproxy

 可以发现虚拟IP已经没有

135则由了虚拟IP地址。说明虚拟IP已经由134这台转移到了135这台了。

6、停止134的keepalived,可以发现使用虚拟Ip, keepalived仍然可用。

此时的虚拟IP转移到了135这台, 134则没有了虚拟IP199. 

测试完毕后恢复134的keepalived。 测试虚拟地址在134这台。

6、停止134的haproxy, 可以发现192.168.127.199 任然可以访问, 虚拟IP转移到了135。

 综上所述,就保证了haproxy的高可用。

参考: keepalived两台机器同时出现vip问题

原文地址:https://www.cnblogs.com/linlf03/p/13972833.html