LVS + Keeplaved 配置

一.  LVS集羣組成

LVS ( Linux Virtual Server ) 集羣由3部分組成,最前端是負載均衡層( Load Balancer ),中間是服務器羣組層 ( Server  Array ) ,底端是數據共享層 ( Share Storage )html

 

1.  LVS集羣有三種配置模式DR、TUN、NAT

VS/NAT  即 Virtual Server via Nitwork Address Translation   網絡地址翻譯技術實現虛擬服務器前端

VS/TUN 即  Virtual Server via IP Tunneling                           經過IP隧道技術實現虛擬服務器算法

VS/DR    即 Virtual SErver via  Direct Routing                       直接路由技術實現虛擬服務器vim

2.  LVS 調度算法

http://sbexr.rabexc.org/latest/sources/ac/22ff6f9bd1bf8c.html

靜態調度
1. rr    Round Robin                 輪詢調度
2. wrr   weight                      加權            以權重之間的比例實如今各主機之間進行調度
3. sh    source hashing              源地址散列      主要實現會話綁定,可以將此前創建的session信息保留
4. dh    Destination hashing         目標地址散列     把同一個IP地址的請求,發送給同一個server
5. mh    maglev hashing scheduling   磁懸浮哈希調度

動態調度
1. lc    Least-Connection                                  最少鏈接
2. wlc   Weighted Least-Connection Scheduling              加權最少鏈接
3. sed   Shortest Expected Delay                           最短時間望延遲
4. nq    never queue                                       永不排隊(改進的sed)
5. lblc  Locality-Based Least Connection                   基於局部性的最少鏈接
6. lblcr Locality-Based Least Connections withReplication  帶複製的基於局部性最少連接
7. fo    weighted failover scheduling                      加權故障轉移調度算法
8. ovf   weighted overflow scheduling                      加權溢出調度

ip_vs_fo  found in Linux kernels: 3.18–3.19, 4.0–4.18, 4.19-rc+HEAD
ip_vs_ovf found in Linux kernels: 4.3–4.18, 4.19-rc+HEAD
ip_vs_mh  found in Linux kernels: 4.18, 4.19-rc+HEAD

二.  經過Keepalived搭建LVS高可用集羣

     地址規劃bash

主負載調度器 Director Server            Hostname DR1
eth1:  192.168.12.130
eth1:1 192.168.12.200   Virtual IP
eth2:  10.10.10.11

備負載調度器 Director Server            Hostname DR2
eth1:  192.168.12.131
eth1:1 192.168.12.200  Virtual IP
eth2   10.10.10.12

Real server 1                            Hostname rs1
eth1  192.168.12.132
eth2  10.10.10.13

Real server 2                            Hostname rs2
eth1  192.168.12.133
eth2  10.10.10.14

1. 在DR1和DR2服務器安裝keepalived   ipvsadm ( IPVS管理軟件 )

yum -y install keepalived  ipvsadm服務器

chkconfig   --level  2345  keepalived on網絡

systemctl enable keepalivedsession

 

在DR1和DR2打開ip_forward負載均衡

cat <<EOF >>  /etc/sysctl.conf
net.ipv4.ip_forward = 1
EOF
sysctl -p /etc/sysctl.conf
 oop

 

2. 配置獨立日誌      安裝完默認日誌路徑爲 /var/log/message 

vim /etc/sysconfig/keepalived

修改 KEEPALIVED_OPTIONS="-D -d -S 0"

或用命令修改   sed  -i  's/KEEPALIVED_OPTIONS=.*/KEEPALIVED_OPTIONS="-D -d -S 0"/'  /etc/sysconfig/keepalived

 

修改配置文件  /etc/rsyslog.conf  

cat   >> /etc/rsyslog.conf << EOF

#keepalived -S 0

local0.* /var/log/keepalived.log

EOF

重啓日誌服務 service rsyslog restart      檢查 /var/log/keepalived.log 文件是否存在

3. 加載ipvs相關內核模塊

touch /etc/sysconfig/modules/ipvs.modules
chmod 755 /etc/sysconfig/modules/ipvs.modules

cat << EOF > /etc/sysconfig/modules/ipvs.modules 
#!/bin/bash
ipvs_modules_dir="/usr/lib/modules/\`uname -r\`/kernel/net/netfilter/ipvs"
for i in \`ls \$ipvs_modules_dir | sed  -r 's#(.*).ko.*#\1#'\`; do
    /sbin/modinfo -F filename \$i  &> /dev/null
    if [ \$? -eq 0 ]; then
        /sbin/modprobe \$i
    fi
done
EOF


sh /etc/sysconfig/modules/ipvs.modules

查看內核支持的ipvs模塊
grep -i ip_vs /boot/config-`uname -r`

查看內核已加載的ipvs模塊
lsmod | grep ip_vs

 

4. 配置 Keepalived

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc     # 設置報警郵件,每行一個
     failover@firewall.loc    # 須要開啓本機sendmail服務
     sysadmin@firewall.loc
   }
   notification_email_from Keepalived@localhost   # 設置郵件發送地址
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL        # 表示Keepalived 服務器的一個標識.發郵件時顯示在郵件主題中的信息
}
# vrrp 實例定義部分
vrrp_instance VI_1 {
    state MASTER              # 指定Keepalived 角色,BACKUP表示備用
    interface eth1            # 指定 HA監測網絡的接口
    virtual_router_id 51      # 虛擬路由標識,同一個 vrrp_instancd下, MASTER AND BACKUP 必須是一致的
    priority 100              # 定義優先級,數字越大,優先級越高 在同一個 vrrp_instancd下.  MASTER 優先級必須大於 BACKUP
    advert_int 1              # 主備同步檢查時間間隔,時間爲秒
    authentication {          # 設置驗證類型和密碼
        auth_type PASS        # 設置驗證類型 主要有 PAS S和 AH 兩種
        auth_pass 1111        # 設置驗證密碼 在同一個 vrrp_instancd下
    }
    virtual_ipaddress {
        192.168.12.200        # 虛擬IP,能夠設置多個,每行一個
    }
}
# 虛擬服務器定義部分
virtual_server 192.168.12.200 80 {
    delay_loop 6              # 設置運行狀況檢查時間,單位爲秒
    lb_algo rr                # 設置負載調度算法 rr 即輪詢算法
    lb_kind DR                # 設置 LVS 負載均衡機制  NAT  TUR  DR
    nat_mask 255.255.255.0
    persistence_timeout 50    # 會話保持時間 註釋掉此行纔會輪詢. 這個選項對動態網頁很是有用,爲集羣session 共享提供了很好的解決方案, 有了這個會話保持功能,用戶的
                              # 請求會被一直髮到某個服務節點, 直到超過這個會話保持時間. 須要注意的是這個會話保持時間是最大無響應超時時間,也就是說,用戶在操做動態
                              # 頁面時, 若是在50秒內沒有執行任何操做, 那麼接下來的操做會被分發到另外的節點, 可是若是用戶一直在動態頁面, 則不受50秒時間限制

    protocol TCP              # 指定轉發協議 TCP UDP兩種

    real_server 192.168.12.132 80 {
        weight 3                      # 權重 數字越大, 權重越高
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3            # 重試次數
            delay_before_retry 3      # 重試間隔
        }
    }

    real_server 192.168.12.133 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

 

配置完成後將此文件複製到備用 Director Server , 進行如下修改便可

 將 state  MASTER 改成 state BACKUP

 priority 100 更改成一個較小的值,這裏改成80

 

5. 配置 Real server

在 LVS 的 DR 和 TUN 模式下,用戶的訪問請求到達 Real Server 後, 是直接返回給用戶的, 再也不通過前端的 Director Server ,所以 ,須要在每一個Real server 節點上增長虛擬的 VIP 地址,

這樣數據才能直接返回給用戶.增長 VIP 地址的操做能夠經過建立腳本的方式來實現.

建立文件 /etc/init.d/lvsrs  

touch   /usr/bin/lvsrs
chmod 755  /usr/bin/lvsrs
vi  /usr/bin/lvsrs 

腳本內容以下

#!/bin/bash
# description : Start Real Server

VIP=192.168.12.200
. /etc/rc.d/init.d/functions
case "$1" in
     start)
     echo " Start LVS of Real Server "
     /usr/sbin/ip addr add ${VIP}/28 dev lo
     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
     ;;
      stop)
     /usr/sbin/ip addr del ${VIP}/28 dev lo
     echo " close LVS Director server "
     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 "Usage: $0 {start|stop}"
     exit 1
esac

 

6. 啓動 Keepalived + LVS 集羣

在主 備Director Server 上分別啓動 Keepalived 服務

/etc/init.d/keepalived  start

在兩個 Real server 上執行以下腳本 

/etc/init.d/lvsrs start

相關文章
相關標籤/搜索