lvs+keepalived實現Mycat的負載均衡--高可用

上一篇的mysql主備已經完成,但是mycat只在130主上有一個,接下來在140master2上通過docker運行一個一模一樣的mycat,就可以來配置lvs+keepalived了。

  1. 再準備兩臺虛擬機150(keepalived主),151(keepalived從)
  2. 下載安裝keepalived ipvsadm 執行
    yum install keepalived ipvsadm
    cp /etc/keepalived/keepalived.conf $PWD/keepalived.conf.bak
    vim /etc/keepalived/keepalived.conf

    keepalived.conf內容:(主)

    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         [email protected]
         [email protected]
         [email protected]
       }
       notification_email_from [email protected]
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.209.100/24 dev eth0 label eth0:3
        }
    }
    
    virtual_server 192.168.209.100 8066 { 
        delay_loop 6
        lb_algo rr
        lb_kind DR
        nat_mask 255.255.255.0
        persistence_timeout 0
        protocol TCP
    
    
    
        real_server 192.168.209.130 8066 {
    
                  weight 1
             TCP_CHECK {
                connect_timeout 10
                nb_get_retry 3
                delay_before_retry 3
            }
    
        }
    
     real_server 192.168.209.140 8066 {
    
            weight 1
                TCP_CHECK {
                connect_timeout 10
                nb_get_retry 3
                delay_before_retry 3
            }
    
    
        }
    
    
    }
    virtual_server端口必須與real_server端口一樣是8066 否則無法通過vip連接mycat


    keepalived.conf內容:(備)

    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         [email protected]
         [email protected]
         [email protected]
       }
       notification_email_from [email protected]
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }
    
    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 52
        priority 90
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.209.100/24 dev eth0 label eth0:3
        }
    }
    
    virtual_server 192.168.209.100 8066 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        nat_mask 255.255.255.0
        persistence_timeout 0
        protocol TCP
    
        real_server 192.168.209.130 8066 {
    
                  weight 1
             TCP_CHECK {
                connect_timeout 10
                nb_get_retry 3
                delay_before_retry 3
            }
    
        }
    
     real_server 192.168.209.140 8066 {
    
            weight 1
                TCP_CHECK {
                connect_timeout 10
                nb_get_retry 3
                delay_before_retry 3
            }
    
    
        }
    }

    配置完成後啓動keepalived:

    service keepalived start

     

  3. 將這兩臺 Mycat 服務器都配置成 lvs 的 real server,編輯 realserver 腳本文件:vim /etc/init.d/realserver
    然後在兩臺mycat中執行以下腳本內容:
    #!/bin/bash
    
    VIP=192.168.209.100
    
    /etc/rc.d/init.d/functions
    
    case "$1" in
    start)
           ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
           route add -host $VIP dev lo:0
           echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
           echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
           echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
           echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
           sysctl -p >/dev/null 2>&1
           echo "RealServer Start OK"
           ;;
    stop)
           ifconfig lo:0 down
           route del $VIP >/dev/null 2>&1
           echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
           echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
           echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
           echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
           echo "RealServer Stoped"
           ;;
    *)
           echo "Usage: $0 {start|stop}"
           exit 1
    esac
    
    exit 0

    保存腳本文件後更改該文件權限:chmod -R 755 /etc/init.d/realserver 

    同時再更改 functions 文件權限:chmod -R 755 /etc/init.d/functions

    首先啓動 mysql,接着啓動 mycat,然後啓動 realserver(./realserver start),再啓動 keepalived

  4. 測試高可用:
    關掉130(mysql01 和mycat01)



    開啓130關掉150(keepalived主)

    無論哪種情況,通過sqlyog連接192.168.209.100:8066 服務均可用,即實現了mysql集羣高可用

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章