LVS DR模式搭建、keepalived+LVS

12月21日任務html

18.11 LVS DR模式搭建nginx

18.12 keepalived + LVS算法

 

LVS DR模式搭建

實例準備vim

  • 分發器(調度器dir) 內網:192.168.65.130 外網:192.168.19.128
  • rs1 內網:192.168.65.133 網關:192.168.65.2
  • rs2 內網:192.168.65.134 網關:192.168.65.2
  • vip(綁定到全部設備上) 192.168.65.200

分發器上編輯並執行腳本bash

[root@director ~]# vi /usr/local/sbin/lvs_dr.sh
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/usr/sbin/ipvsadm
vip=192.168.65.200
rs1=192.168.65.133
rs2=192.168.65.134
#注意這裏的網卡名字,有些系統能夠爲eth0
# ifdown/ifup清空以前命令行下的配置ip命令,在腳本屢次運行時就能夠清空以前的配置
ifdown ens33 > /dev/null
ifup ens33 > /dev/null
# 配置虛擬網卡ens33:2
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
# 設置網關
route add -host $vip dev ens33:2
$ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

[root@director ~]# sh /usr/local/sbin/lvs_dr.sh

rs1和rs2上配置並執行腳本服務器

[root@rs1 ~]# vi /usr/local/sbin/lvs_dr_rs.sh
[root@rs2 ~]# vi /usr/local/sbin/lvs_dr_rs.sh

代碼相同,以下:
#/bin/bash
vip=192.168.65.200
ifdown lo > /dev/null
ifup lo > /dev/null
#把vip綁定在lo上,是爲了實現rs直接把結果返回給客戶端
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#如下操做爲更改arp內核參數,目的是爲了讓rs順利發送mac地址給客戶端
#參考文檔www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
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

[root@rs1 ~]# sh /usr/local/sbin/lvs_dr_rs.sh
[root@rs2 ~]# sh /usr/local/sbin/lvs_dr_rs.sh

驗證效果

lvs DB mode

分發器數據包數據信息tcp

[root@director ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.65.200:80 wrr
  -> 192.168.65.133:80            Route   1      2          0         
  -> 192.168.65.134:80            Route   1      0          2

ipvsadm經常使用命令

  1. 管理集羣訪問 例:ipvsadm -A -t 192.168.65.200:80 -s rr
    • 添加:-A -t|u|f service-address [-s 調度算法]
      • -t tcp協議的集羣服務
      • -u udp協議的集羣服務
      • -f 防火牆標記
    • 修改:-E
    • 刪除:-D
  2. 管理集羣服務中的RS 例如:ipvsadm -a -t 192.168.65.200:80 -r 192.168.65.133 -m
    • 添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight]oop

      • -t|u|f service-address 事先定義好的某集羣服務
      • -r server-address 某RS的地址,NAT方法中能夠使用ip:port方式
      • -g|i|m LVS類型
        • -g DR
        • -i TUN
        • -m NAT
      • -w weight 定義權重
    • 查看信息 -L | -l option測試

      • option包含
        • -n 數字形式顯示主機地址和端口號
        • --stats 統計信息
        • --rate 速率
        • --timeout 顯示超時時間
        • --daemon
        • --sort 排序(默認升序)
        • -c 顯示當前ipvs鏈接情況
    • 刪除 -C 清空ipvs規則spa

    • 保存規則 -S

      ipvsadm -S > /tmp/ipvs

    • 載入規則 -R

      ipvsadm -R < /tmp/ipvs


keepalived+LVS

keepalived內置了ipvsadm的功能,所以不須要額外安裝ipvsadm,也不須要編寫與執行相關腳本。

配置相關信息

  • dir:192.168.65.130
    • vip:192.168.65.200
  • rs1:192.168.65.133
  • rs2:192.168.65.134

編輯分發器的配置文件

[root@director ~]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    #備用服務器上爲 BACKUP
    state MASTER
    #綁定vip的網卡爲ens33,你的網卡和阿銘的可能不同,這裏須要你改一下
    interface ens33
    virtual_router_id 51
    #備用服務器上爲90
    priority 100  
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass test
    }
    # 指定vip地址
    virtual_ipaddress {
        192.168.65.200
    }
}
virtual_server 192.168.65.200 80 {
    #(每隔10秒查詢realserver狀態)
    delay_loop 10
    #(lvs 算法)
    lb_algo wlc
    #(DR模式)
    lb_kind DR
    #(同一IP的鏈接60秒內被分配到同一臺realserver)
    persistence_timeout 60
    #(用TCP協議檢查realserver狀態)
    protocol TCP
    real_server 192.168.65.133 80 {
        #(權重)
        weight 100
        TCP_CHECK {
        #(10秒無響應超時)
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.65.134 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

測試效果

啓動分發器director上的keepalived,能夠看到有2個RS啓動

[root@director ~]# systemctl start keepalived
[root@director ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.65.200:80 wlc persistent 60
  -> 192.168.65.133:80            Route   100    0          0         
  -> 192.168.65.134:80            Route   100    0          0

關閉rs2上的nginx服務

[root@rs2 ~]# systemctl stop nginx

再次查看分發器上的狀態,已檢測到rs2宕機

[root@test3 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.65.200:80 wlc persistent 60
  -> 192.168.65.133:80            Route   100    0          0

注意:兩臺服務器上的lvs_rs.sh腳本依然要執行,去綁定vip、設置內核參數;分發器上不須要執行綁定vip的操做,可是須要開啓轉發功能。

相關文章
相關標籤/搜索