1. 程式人生 > >基於keepalived的LVS-DR模型構建

基於keepalived的LVS-DR模型構建

修改 添加 images alt 正常 規則 權重 生成 需要

實驗拓撲:
技術分享圖片
基礎環境的準備:
兩臺keepalived的高可用服務器,兩臺real server用於配置httpd服務
在兩臺real server上安裝httpd服務並創建測試頁面:

 關閉防火墻跟selinux之後開始配置
 yum install -y httpd
 systemctl start httpd
 systemctl enable httpd
 vim /var/www/html/index.html   //創建測試頁面
 This httpd-1 Page
 另一臺real server做同樣配置

配置兩臺高可用服務器,在安裝keepalived之前先驗證以下LVS-DR模型,驗證完之後在安裝keepalived進行高可用的配置

yum install -y ipvsadm
添加vip地址
ip addr add 192.168.153.100/32 dev ens33

技術分享圖片

配置兩個real server
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
將vip地址配置在兩臺real server的回環接口的別名上
ifconfig lo:0 192.168.153.100  netmask 255.255.255.255 broadcast 192.168.153.100  up
route add  -host 192.168.153.100  dev lo:0

技術分享圖片

在LVS調度器上面添加規則
ipvsadm -A -t  192.168.153.100:80 -s rr
ipvsadm -a -t 192.168.153.100:80 -r 192.168.153.7 -g -w 1
ipvsadm -a -t 192.168.153.100:80 -r 192.168.153.8 -g -w 2
將會話連接時長設置為1秒
ipvsadm --set 1 1 1
使用客戶端瀏覽器驗證一下

技術分享圖片
技術分享圖片
備註:這裏有一個註意事項,我們自己平時在做練習的時候習慣使用vmware虛擬出幾臺主機進行使用,有時候我們在使用同一個vmware軟件虛擬出來的主機進行LVS-DR模型構建時有可能造成MAC地址錯亂,導致實驗失敗致使調度器只能將請求調度到一臺後端服務器上面,此時我們可以在windews的客戶端上面查看一下arp地址解析,如果VIP物理地址跟調度器的DIP物理地址一樣則配置成功,如果不一樣就需要進行故障排查了。這裏建議如果實驗機器不夠用的話使用兩臺不同的物理主機安裝兩個vmware軟件,讓負載均衡調度器跟real server服務器在兩個環境中進行實驗。


技術分享圖片
然後將這臺調度器的ipvs規則清空,在另一臺負載均衡調度器上面配置ipvs規則進行測試,當測試完畢後我們清空兩臺調度器的所有規則,因為keepalived的LVS高可用性不需要ipvsadm工具進行規則配置。
此時安裝keepalived軟件包並配置高可用服務器的錯誤頁面

yum install -y keepalived
systemctl start keepalived
systemctl enable keepalived
yum install -y httpd
vim /var/www/html/index.html
Sorry,The httpd-1 page is not have
修改keepalived的配置文件
cp /etc/keepalived/keepalivd.conf   keepalived.conf.bak
vim keepalived.conf

配置信息如下:

! Configuration File for keepalived

global_defs {
   notification_email {
        [email protected]
   }

   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL     //定義router_id
}
vrrp_script chk_file {
        script "/etc/keepalived/chk_file.sh"    //定義服務啟動關閉腳本文件
        interval 1
        weight -2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 43   //虛擬路由id,兩臺高可用服務器路由id保持一致
    priority 100              
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass qwer
    }
    virtual_ipaddress {
        192.168.153.100/32 dev ens33 label   ens33:0  //將VIP地址配置在virtual中
        }
   track_script {
        chk_file    //調用腳本
        }
}
virtual_server 192.168.153.100 80 {   //定義虛擬服務器的配置信息
    delay_loop 6
    lb_algo wrr   //調度方法
    lb_kind DR //LVS類型
    nat_mask 255.255.255.0
   persistence_timeout 50     //會話連接時長
    protocol TCP               //使用TCP協議
   sorry_server 127.0.0.1 80  //定義錯誤頁面,當後端服務器全部宕機則返回此頁面

    real_server 192.168.153.7 80  {   //定義後端的real server信息
        weight 1    //權重為1
        HTTP_GET {    //使用健康狀態檢測
            url {
              path /    //路徑為根目錄
              status_code  200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.153.8 80  {     //另一臺real server
        weight 2        //權重為2
        HTTP_GET {
            url {
              path /
              status_code  200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

重啟keepalived服務,查看ip地址
技術分享圖片
使用ipvsadm -L -n查看規則發現ipvs的規則自動生成
技術分享圖片
在keepalived配置文件目錄下創建chk_file.sh腳本文件

#!/bin/bash
if [ -f /etc/keepalived/down ];then
        exit 1
fi
exit 0
~        

復制文件到另一臺高可用服務器,並修改vrrp_instance VI_1中的 state 為BACKUP, priority 為99,保存配置文件並重新啟動第二臺高可用服務器的keepalived服務。
使用客戶端瀏覽器訪問
技術分享圖片
這時發現只能訪問到一個節點,是因為我們開啟了keepalived的會話連接功能,我們現在將配置文件中的 persistence_timeout 50 一項註釋掉
然後再次使用客戶端瀏覽器重新請求

技術分享圖片
技術分享圖片
根據定義的腳本信息,在keepalived配置文件的目錄下touch一個down文件讓第一臺高可用宕掉
查看第二臺高可用服務器

技術分享圖片
技術分享圖片
使用客戶端訪問依然可以訪問到後端的real server
這裏我們手動停止兩臺real server的httpd服務
查看一下高可用服務器的ipvs規則

技術分享圖片
使用客戶端請求法發現返回sorry_server信息
技術分享圖片
此時配置完畢,所有服務運行正常

基於keepalived的LVS-DR模型構建