1. 程式人生 > >Linux環境下實現keepalive支援的LVS高可用性和NGINX的單主模型雙主模型高可用

Linux環境下實現keepalive支援的LVS高可用性和NGINX的單主模型雙主模型高可用

實驗:實現高可用的LVS-DR模型

 1、準備兩臺RS伺服器

image.png

2、將兩臺lVS安裝httpd或nginx,用來做sorry server

image.png

3、定義RS伺服器

在後端伺服器RS1寫配置指令碼

image.png

執行指令碼後,ifconfig

image.png

之後指令碼傳給RS2,執行此指令碼,同樣存在lo:0 10.0.56.10

4、LVS伺服器安裝ipvsadm,之後新增虛擬網路

ifconfig ens33:0 10.0.56.10 netmask 255.255.255.255 broadcast 10.0.56.10 up

image.png

5、配置新增RS伺服器被lvs排程

image.png

6、測試,注意測試機加上到10.0.56.0/24的路由,此時基本的已完成

image.png

7、LVS1下線,配置LVS2

LVS1:ifconfig ens33:0 down

LVS2:

ifconfig ens33:0 10.0.56.10 netmask 255.255.255.255 broadcast 10.0.56.10 up

ipvsadm -A -t 10.0.56.10:80 -s rr

ipvsadm -a -t 10.0.56.10:80 -r 192.168.239.72 -g

ipvsadm -a -t 10.0.56.10:80 -r 192.168.239.73 -g

image.png

之後結果會等一個間隔時間後才會出現

image.png

8、配置keepalived

清空ipvsadm的規則,ipvsadm -C

兩個LVS主機上均有在/etc/keepalived/keepalived.conf:

virtual_ipaddress {

        10.0.56.10/24 dev ens33 label ens33:1

    }

virtual_server 10.0.56.10 80 {

        delay_loop 2

        lb_algo wrr

        lb_kind DR

        protocol TCP

        sorry_server 127.0.0.1 80

        real_server 192.168.239.72 80 {

                weight 1

                HTTP_GET {

                        url {

                        path /

                        status_code 200

                }

                connect_timeout 1

                nb_get_retry 3

                delay_before_retry 1

                }

        }

        real_server 192.168.239.73 80 {

                weight 1

                HTTP_GET {

                url {

                        path /

                status_code 200

        }

                connect_timeout 1

                nb_get_retry 3

                delay_before_retry 1

                }

        }

}

之後兩臺LVS全部停止keepalived

先啟動LVS1的keepalived

image.png

測試1(如果游標閃爍,檢視LVS伺服器的iptables -vnL中是否有個DROP,由此規則原因是keepalive.conf中有vrrp_strict)

image.png

測試2

image.png

測試3

image.png

測試4

image.png

暫停片刻後恢復排程

附:整個LVS的keepalive.conf

global_defs {

   notification_email {

        [email protected]

   }

   notification_email_from [email protected]

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id lvs1

   vrrp_skip_check_adv_addr

   vrrp_strict

   vrrp_garp_interval 0

   vrrp_gna_interval 0

   vrrp_mcast_group4 224.0.156.18

}

 

vrrp_instance VI_1 {

    state MASTER

    interface ens33

    virtual_router_id 55

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass passwd

    }

    virtual_ipaddress {

        10.0.56.10/24 dev ens33 label ens33:1

    }

        notify_master "/etc/keepalived/notify.sh master"

        notify_backup "/etc/keepalived/notify.sh backup"

        notify_fault "/etc/keepalived/notify.sh fault"

}

virtual_server 10.0.56.10 80 {

        delay_loop 2

        lb_algo wrr

        lb_kind DR

        protocol TCP

   

sorry_server 127.0.0.1 80  

 

real_server 192.168.239.72 80 {

                weight 1

                HTTP_GET {

                        url {

                        path /

                        status_code 200

                }

                connect_timeout 1

                nb_get_retry 3

                delay_before_retry 1

                }

        }

 

        real_server 192.168.239.73 80 {

                weight 1

                HTTP_GET {

                url {

                        path /

                status_code 200

        }

                connect_timeout 1

                nb_get_retry 3

                delay_before_retry 1

                }

        }

}

實驗:keepalive實現高併發nginx代理nginx伺服器(單主模型)

1、簡易拓撲圖

image.png

2、在兩臺keepalive伺服器中更改配置/etc/keepalive/keepalive.conf

image.png

做一步測試一步,說明兩臺keepalive的nginx配置正確

image.png

2、/etc/keepalive/keepalive.conf的配置

image.png

systemclt restart keepalived

image.png

3、測試1

image.png

測試2

image.png

此時依舊成功

image.png

測試3

image.png

加入nginx檢測指令碼,判斷nginx程序是否存在

image.png

測試4

image.png

image.png

實驗:keepalive實現高併發nginx代理nginx伺服器(雙主模型)

1、簡易拓撲圖

image.png

2、配置ka1

image.png

配置ka2

image.png

配置儲存後重啟keepalive

image.png

3、配置RS伺服器

4、配置ka1的nginx.conf

image.png

image.png

配置ka 2的nginx,和ka 1的基本一致,最好兩個default的server_name和proxy_pass換到各自對應的RS主機位置

image.png

5、客戶機配置/etc/hosts解析

image.png

6、測試

image.png

測試結果

image.png

測試結果

image.png