1. 程式人生 > >LVS-DR+Keepalive高可用群集集

LVS-DR+Keepalive高可用群集集

ML .com 可靠的 _for image Oz arp 可用 work

LVS負載均衡群集其中之一:LVS-DR加上keepalive可實現穩定以及可靠的負載均衡;

實驗結構

技術分享圖片

實驗思路:

  • 調度服務器區域實現接收訪問,調用節點服務器池可用服務器。實現keepalive,實現雙機熱備功能,由於調度服務器由於負載量過大出現拓機情況時,備份調度服務器可直接頂替工作,保證了服務訪問不被中斷。
  • 節點服務器提供網絡服務,利用內部網絡存儲服務器提供的存儲空間,將需要提供的網絡服務搭建其中。

##實驗環境:

服務器 系統環境 IP地址 所需服務
主調度 centos7 192.168.200.201 keepalived+ipvsadm
從調度 centos7 192.168.200.202 keepalived+ipvsadm
節點web1 centos7 外:192.168.200.221 內192.168.100.101 httpd+NFS
節點web2 centos7 外:192.168.200.222 內192.168.100.102 httpd+NFS
NFS存儲 centos7 192.168.100.111 NFS

實驗部署

1、LVS調度服務器

主從調度服務器在LVS調度服務配置基本相同,主要區別在於實現keepalive時配置有所區別,對於區別處,文中有註明。

主調度服務器

調整proc響應參數

#yum install keepalived ipvsadm -y  //安裝所需軟件

#vim /etc/sysctl.conf          

net.ipv4.ip_forward=1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
//proc響應關閉重定向功能

#sysctl -p  //對上述修改立即生效

配置虛擬IP

#cd /etc/sysconfig/network-scripts/   
#cp ifcfg-ens33 ifcfg-ens33:0   //設置虛擬網卡
#vim ifcfg-ens33:0
                   //刪除全部原有內容,寫入以下內容
    DEVICE=ens33:0
    ONBOOT=yes
    IPADDR=192.168.200.10
    NETMASK=255.255.255.0

#ifup ens33:0  //啟動虛擬網卡

配置調度服務腳本

#cd /etc/init.d/
#vim dr.sh

#!/bin/bash
GW=192.168.200.1
VIP=192.168.200.10
RIP1=192.168.200.221
RIP2=192.168.200.222
case "$1" in
start)
        /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm
        systemctl start ipvsadm
        /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up
        /sbin/route add -host $VIP dev ens33:0
        /sbin/ipvsadm -A -t $VIP:80 -s rr
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
        echo "ipvsadm starting --------------------[ok]"
        ;;
        stop)
        /sbin/ipvsadm -C
        systemctl stop ipvsadm
        ifconfig ens33:0 down
        route del $VIP
        echo "ipvsamd stoped----------------------[ok]"
         ;;
        status)
        if [ ! -e /var/lock/subsys/ipvsadm ];then
        echo "ipvsadm stoped---------------"
        exit 1
                else
                echo "ipvsamd Runing ---------[ok]"
        fi
        ;;
        *)
        echo "Usage: $0 {start|stop|status}"
        exit 1
        esac
        exit 0

#chomd +x dr.sh  //增加執行權限
#service dr.sh start  //啟動調度服務
#systemctl stop firewalld.service   //關閉防火墻
#setenforce 0

從調度服務器

從調度服務器配置與主調度服務器配置完全相同,只是若遇到啟動ifup ens33:0 報錯失敗的情況,只需將網卡重新啟動,然後再次ifup即可。

2、主從調度服務器keepalive配置

主調度服務器

#cd /etc/keepalived/
#vim keepalived.conf  //編輯keepalive主配置文件

global_defs {
  ...
  smtp_server 127.0.0.1           //指向本地
  router_id LVS_01   //指定名稱,備份服務器不同名稱
  ...             
}

vrrp_instance VI_1 {
  state MASTER             //備份服務器是BACKUP
  interface ens33          //接口按照系統修改
  virtual_router_id 10     //組號相同
  ...
  auth_pass abc123         //驗證密碼
  priority 100              //優先級備份小於主
  ...
  virtual_ipaddress {
        192.168.100.10     //虛擬IP地址
    }
  ...
virtual_server 192.168.200.10 80 {
    delay_loop 6
    lb_algo rr 
    lb_kind DR   //采用DR直連路由模式
    persistence_timeout 50
    protocol TCP

...
  real_server 192.168.200.221 80 {    //真實節點服務器IP地址
        weight 1
        TCP_CHECK {      //TCP健康檢查方式           
            connect_port 80      //刪除URL地址部分,添加端口
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }   
    }   
    real_server 192.168.200.222 80 {
        weight 1
        TCP_CHECK {
            connect_port 80              //添加端口
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }   
    }    
}
...

#systemctl start keepalived    //啟動keepalive服務
#ip addr show dev ens33:0      //查看虛擬網卡

從調度服務器

從調度服務器的keepalive配置方式同主調度服務器,需要區分的地方已經註明。

3、節點服務器

  • 對於節點服務器需要利用NFS存儲服務器提供的空間來提供服務,在實際工作環境中,實際是將存儲服務器中提供的LVM動態邏輯卷或者raid磁盤掛載使用,對於掛載過程不在重復,可參見LVS-NAT負載均衡群集詳細過程。
  • 節點服務器需要將網絡服務提供出去,為了使得所有節點服務器僅能被調度服務器所調度,需要和調度服務器區建立相同虛擬IP.

節點服務器web1

  • 提供httpd服務
    #systemctl stop  firewalld.service 
    #setenforce 0
    #yum install httpd -y   //安裝httpd服務
    #echo "this is first web" > /var/www/html/index.html    //創建首頁,為了區別,web2首頁需不同
  • 建立虛擬IP

用於僅接受調度服務器所需請求。

#cd /etc/sysconfig/network-scripts
#cp ifcfg-lo ifcfg-lo:0
#vim ifcfg-lo:0

DEVICE=lo:0     //刪除原有內容,寫入以下內容
IPADDR=192.168.200.10      //虛擬IP
NETMASK=255.255.255.255
ONBOOT=yes
  • 調整proc響應參數
#cd /etc/init.d/
#vim web.sh      //編寫服務腳本,方便管理

#!/bin/bash
VIP=192.168.200.10
        case "$1" in
        start)
                ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
                /sbin/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 Stopd"
                ;;
        *)
                echo "Usage: $0 {start|stop}"
                exit 1
        esac
        exit 0

#chmod +x /etc/init.d/web.sh
#ifup lo:0   //啟動虛擬網卡
#service web.sh start  //啟動服務

節點服務器web2

配置方式同web1,唯一區別是為了實驗方便得出結論,采用不同首頁。

4、測試

  • 模擬客戶端訪問,當多次請求時,客戶端得到的是不同節點服務器給予的響應回饋。
  • 模擬當主調度服務器損壞無法工作是,從服務器直接頂替工作,使得服務能夠繼續訪問。

當客戶端多次請求

技術分享圖片
技術分享圖片

當主調度服務器無法工作時

這裏為了簡化操作,直接將主調度服務器關機,達到模擬主調度服務器無法工作情況。然後繼續使用客戶端訪問。

技術分享圖片

LVS-DR+Keepalive高可用群集集