1. 程式人生 > >Linux集群:LVS搭建負載均衡集群(二)

Linux集群:LVS搭建負載均衡集群(二)

DR模式 keepalived+LV

一、DR模式LVS搭建

1、準備工作

  • 調度器dir:192.168.242.128
  • 真實服務器rs1:192.168.242.129,網關恢復為之前的原始網關
  • 真實服務器rs2:192.168.242.130,網關恢復為之前的原始網關
  • VIP:192.168.242.110

2、dir上編寫腳本

[root@zlinux-01 ~]# vim /usr/local/sbin/lvs_dr.sh

#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/usr/sbin/ipvsadm
vip=192.168.242.110
rs1=192.168.242.129
rs2=192.168.242.130
#ifdown ifup 同等於重啟網卡,對虛擬網卡進行重置
#防止再次啟動腳本的時候,再次設置虛擬網卡的IP地址
ifdown ens33
ifup ens33
#註意這裏的網卡名字
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 rr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

[root@zlinux-01 ~]# sh /usr/local/sbin/lvs_dr.sh 
成功斷開設備 ‘ens33‘。
成功激活的連接(D-Bus 激活路徑:/org/freedesktop/NetworkManager/ActiveConnection/2)

3、rs上編寫腳本(兩臺內容相同)

[root@zlinux-02 ~]# vim /usr/local/sbin/lvs_dr_rs.sh

#!/bin/bash
vip=192.168.242.110
ifdown lo
ifup lo
#把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@zlinux-02 ~]# sh /usr/local/sbin/lvs_dr_rs.sh

4、測試

我在這裏是用的第四臺虛擬機測試的,沒有的話可以直接在瀏覽器輸入VIP地址測試。

[root@zlinux-04 ~]# curl 192.168.242.110
LVS-zlinux03
[root@zlinux-04 ~]# curl 192.168.242.110
LVS-zlinux02
[root@zlinux-04 ~]# curl 192.168.242.110
LVS-zlinux03
[root@zlinux-04 ~]# curl 192.168.242.110
LVS-zlinux02
[root@zlinux-04 ~]# curl 192.168.242.110
LVS-zlinux03

技術分享圖片

二、keepalived+LVS

完整架構需要兩臺服務器(角色為dir)分別安裝keepalived軟件,目的是實現高可用,但keepalived本身也有負載均衡的功能,所以本次實驗可以只安裝一臺keepalived;
keepalived內置了ipvsadm的功能,所以不需要再安裝ipvsadm包,也不用編寫和執行那個lvs_dir的腳本。

1、準備工作

主keepalived(調度器dir):192.168.242.128
真實服務器rs1:192.168.242.129,網關恢復為之前的原始網關
真實服務器rs2:192.168.242.130,網關恢復為之前的原始網關
VIP:192.168.242.110

2、修改keepalived配置問價

[root@zlinux-01 ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak    //備份下配置文件
[root@zlinux-01 ~]# > /etc/keepalived/keepalived.conf     //清空
[root@zlinux-01 ~]# vim /etc/keepalived/keepalived.conf             //添加以下內容

vrrp_instance VI_1 {
    #備用服務器上為 BACKUP
    state MASTER 
    interface ens33 
    virtual_router_id 51
    #備用服務器上為90 
    priority 100 
        auth_pass zlinux
    }   
    virtual_ipaddress {
        192.168.242.110
    }   
}   
virtual_server 192.168.242.110 80 {
    #(每隔10秒查詢realserver狀態) 
    delay_loop 10 
    #(lvs 算法)
    lb_algo wlc
    #(DR模式)
    lb_kind DR
    #(同一IP的連接60秒內被分配到同一臺realserver)
    persistence_timeout 0 
    #(用TCP協議檢查realserver狀態)
    protocol TCP 
    real_server 192.168.242.129 80 {
        #(權重) 
        weight 100
        TCP_CHECK {
        #(10秒無響應超時)
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }   
    real_server 192.168.242.130 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }  
}  

3、啟動keepalived

[root@zlinux-01 ~]# ipvsadm -C           //清空之前的規則,因為之前執行過LVS腳本
[root@zlinux-01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@zlinux-01 ~]# systemctl start keepalived     //啟動
[root@zlinux-01 ~]# ps aux | grep keep
root       3406  0.0  0.0 120720  1404 ?        Ss   18:21   0:00 /usr/sbin/keepalived -D
root       3407  0.0  0.1 127464  3324 ?        S    18:21   0:00 /usr/sbin/keepalived -D
root       3408  0.0  0.1 131656  2848 ?        S    18:21   0:00 /usr/sbin/keepalived -D
root       3414  0.0  0.0 112680   976 pts/0    R+   18:25   0:00 grep --color=auto keep

還需要在兩臺rs上執行sh /usr/local/sbin/lvs_dr_rs.sh

4、測試

檢驗方法1:
在瀏覽器輸入VIP192.168.242.110,然後故意停掉一臺rs的Nginx服務,然後刷新瀏覽器看結果。
檢驗方法2:
在調度器執行相關命令,查看連接數:

[root@zlinux-01 ~]# 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.242.110:80 wlc
  -> 192.168.242.129:80           Route   100    0          0         
[root@zlinux-01 ~]# ipvsadm -ln                 //打開另一臺Nginx服務,刷新之後,兩個連接
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.242.110:80 wlc
  -> 192.168.242.129:80           Route   100    0          0         
  -> 192.168.242.130:80           Route   100    1          0 

Linux集群:LVS搭建負載均衡集群(二)