Keepalived雙主ipvs集群實(shí)現(xiàn)后端nginx負(fù)載均衡

Keepalived雙主ipvs集群實(shí)現(xiàn)后端nginx負(fù)載均衡

實(shí)驗(yàn)準(zhǔn)備

初始設(shè)置
(1)時間同步
systemctl restart chronyd
(2)關(guān)閉SELinux和防火墻
(3)互相之間/etc/hosts文件添加對方主機(jī)名
(4)確認(rèn)接口支持多播(組播),略,基本新的網(wǎng)卡都支持。

實(shí)驗(yàn)規(guī)劃

主機(jī):A B C D
A B Keepalived+LVS集群
C D 后端RS

實(shí)驗(yàn)步驟

RS主機(jī)配置

C D
1每個RS安裝nginx服務(wù)并配置測試主頁
yum -y install nginx
vim /usr/share/nginx/html/index/html
<h1>RS1</h1>
2 每個RS配置兩個回環(huán)地址
vim setrs.sh

#!/bin/bash
vip1=172.16.42.199
vip2=172.16.42.200
mask=255.255.255.255
iface1="lo:0"
iface2="lo:1"

case $1 in
start)  
        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
        echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

        ifconfig $iface1 $vip1 netmask $mask broadcast $vip1 up
        ifconfig $iface2 $vip2 netmask $mask broadcast $vip2 up
        route add -host $vip1 dev $iface1 
        route add -host $vip2 dev $iface2 
        ;;
stop)   
        ifconfig $iface1 down
        ifconfig $iface2 down

        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
        ;;
*)      
        echo "Usage: $(basename $0) start|stop"
        exit 1  
        ;;
esac

bash -x setrs.sh start
ip a可看到每個RS主機(jī)上都配備了兩個回環(huán)地址

Keepalived+lvs集群配置

A B
yum -y install ipvsadm
yum -y install keepalived
vim /etc/keepalived/keepalived.conf

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from ka1@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 60
   vrrp_mcast_group4 224.111.111.222     ##組播地址
}
####虛擬路由相關(guān)配置
vrrp_instance VI_1 {       ##虛擬路由1
    state BACKUP            ##此處B為MASTER
    interface eth1
    virtual_router_id 191  ##上下兩個虛擬路由辨識號不能一樣,但需主備一樣
    priority 95                    
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 0702f7ab  ##上下兩個虛擬路由驗(yàn)證不能一樣,但需主備一樣
    }
    virtual_ipaddress {
        172.16.42.199          ##上下兩個虛擬路由虛擬路由ip不能一樣,但需主備一樣
    }
}
vrrp_instance VI_2 {        ##虛擬路由2
    state MASTER             ##此處B為BACKUP
    interface eth1
    virtual_router_id 192
    priority 100                   ##此處B為95
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 85c9a27b
    }
    virtual_ipaddress {
        172.16.42.200
    }
}
####以下是ipvs規(guī)則的相關(guān)配置
virtual_server 172.16.42.199 80 {        ##虛擬路由1對應(yīng)ipvs規(guī)則配置
    delay_loop 3
    lb_algo sh         ##算法為源地址哈希
    lb_kind DR        ##為dr模型
    protocol TCP
    real_server 172.16.100.216 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
    real_server 172.16.250.170 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
}
virtual_server 172.16.42.200 80 {     ##虛擬路由2對應(yīng)ipvs規(guī)則配置
    delay_loop 3
    lb_algo sh
    lb_kind DR
    protocol TCP
    real_server 172.16.100.216 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
    real_server 172.16.250.170 80 {
        weight 1
        HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
}

systemctl stop keepalived
systemctl start keepalived
此時在A B兩臺主機(jī)上都可查看到ipvs規(guī)則

[root@centos nginx]# ipvsadm -Ln                   
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.42.199:80 sh
  -> 172.16.100.216:80            Route   1      0          0         
  -> 172.16.250.170:80            Route   1      0          0         
TCP  172.16.42.200:80 sh
  -> 172.16.100.216:80            Route   1      0          0         
  -> 172.16.250.170:80            Route   1      0          0        

ip a 可看到虛擬ip分別漂移在A B 主機(jī)端口上
for i in {1..10}; do curl http://172.16.42.200;done
for i in {1..10}; do curl http://172.16.42.199;done
返回的結(jié)果始終是第一次匹配到的RS主機(jī)頁
當(dāng)停掉A B其中一臺主機(jī)上的Keepalived服務(wù)時,調(diào)度并不受影響且故障切換后,同一個客戶端訪問依然能關(guān)聯(lián)至此前綁定的RS

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、高可用集群 (一)提升系統(tǒng)高可用性的解決方案:冗余(redundant) 工作模式active/passive...
    哈嘍別樣閱讀 1,806評論 2 5
  • 負(fù)載均衡集群是 load balance 集群的簡寫,翻譯成中文就是負(fù)載均衡集群。常用的負(fù)載均衡開源軟件有ngin...
    jiangmo閱讀 1,465評論 0 1
  • 集群的概念LVS介紹ipvsadm的使用實(shí)現(xiàn)LVS-NAT實(shí)現(xiàn)LVS-DRLVS高可用 一、集群的概念 (一)系統(tǒng)...
    哈嘍別樣閱讀 848評論 0 2
  • 一、場景需求 解決Nginx的高可用集群問題 1、 阿里云: SLB 2、 硬件負(fù)載均衡器(如: F5、 Radw...
    突突兔007閱讀 2,611評論 1 3
  • 眾所周知,趙雷在《歌手》舞臺上演唱了一首《成都》,火了。 對他的熟知起源于那首《南方姑娘》,那是在大學(xué)校園里不知哼...
    小酒茵子閱讀 318評論 0 1

友情鏈接更多精彩內(nèi)容