第十九周

一、簡述lvs四種集羣特色及使用場景

一、lvs-nat:修改請求報文的目標IP ,多目標IP的DNAT html

本質是多目標IP的DNAT,經過將請求報文中的目標地址和目標端口修改成某挑 出的RS的RIP和PORT實現轉發  
(1)RIP和DIP應在同一個IP網絡,且應使用私網地址;RS的網關要指向DIP  
(2)請求報文和響應報文都必須經由Director轉發,Director易於成爲系統瓶頸  
(3)支持端口映射,可修改請求報文的目標PORT  
(4)VS必須是Linux系統,RS能夠是任意OS系統

二、lvs-dr:操縱封裝新的MAC地址 前端

Direct Routing,直接路由,LVS默認模式,應用最普遍,經過爲請求報 文從新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的MAC,目標 MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標 IP/PORT均保持不變 
(1) Director和各RS都配置有VIP 
(2) 確保前端路由器將目標IP爲VIP的請求報文發往Director
(3)RS的RIP可使用私網地址,也能夠是公網地址;RIP與DIP在同一IP網絡; RIP的網關不能指向DIP,以確保響應報文不會經由Director 
(4)RS和Director要在同一個物理網絡 
(5)請求報文要經由Director,但響應報文不經由Director,而由RS直接發往 Client 
(6)不支持端口映射(端口不能修敗) 
(7)RS可以使用大多數OS系統

三、lvs-tun:在原請求IP報文以外新加一個IP首部 vim

轉發方式:不修改請求報文的IP首部(源IP爲CIP,目標IP爲VIP),而在原IP報文 以外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發往挑選出的目標 RS;RS直接響應給客戶端(源IP是VIP,目標IP是CIP) 
(1) DIP, VIP, RIP都應該是公網地址 
(2) RS的網關通常不能指向DIP 
(3) 請求報文要經由Director,但響應不經由Director 
(4) 不支持端口映射 
(5) RS的OS須支持隧道功能

四、lvs-fullnat:修改請求報文的源和目標IP後端

經過同時修改請求報文的源IP地址和目標IP地址進行轉發 
(1) VIP是公網地址,RIP和DIP是私網地址,且一般不在同一IP網絡;所以, RIP的網關通常不會指向DIP
(2) RS收到的請求報文源地址是DIP,所以,只需響應給DIP;但Director還 要將其發往Client 
(3) 請求和響應報文都經由Director 
(4) 支持端口映射 
注意:此類型kernel默認不支持

二、描述LVS-DR工做原理,並配置實現。

原理:centos

Director Server做爲羣集的訪問入口,但不做爲網關使用,後端服務器池中的Real Server與Director Server在同一個物理網絡中,發送給客戶機的數據包不須要通過Director Server。爲了響應對整個羣集的訪問,DS與RS都須要配置有VIP地址。
路由器開啓路由轉發功能,一個網卡nat一個橋接;
dip和rip同一網絡,
Vip能夠公網,dip和rip私網
不通網卡配置不一樣網段bash

實驗環境:服務器

Client:CIP:  192.168.3.106 
 router:eth0:192.168.43.107 
                eth1:192.168.3.107
 Lvs: : DIP: 191.168.43.137    VIP:192.168.43.100 gateway:192.168.3.107
 Rs1:RIP: 192.168.43.147   VIP: 192.168.43.100  GATEWAY:192.168.3.107
 Rs2: RIP:192.168.43.157   VIP: 192.168.43.100  GATEWAY:192.168.3.107

一、rs服務器配置:
每臺rs上執行,lvs_dr_rs.sh 腳本,準備環境,安裝httpd服務,配置vip,改arp規則;網絡

lvs_dr_rs.sh 腳本curl

[root@rs1~]#cat lvs_dr_rs.sh 
#!/bin/bash
vip=192.168.43.100
mask='255.255.255.255'
dev=lo:1
rpm -q httpd &> /dev/null || yum -y install httpd &>/dev/null
service httpd start &> /dev/null && echo "The httpd Server is Ready!"
echo "<h1>`hostname`</h1>" > /var/www/html/index.html

case $1 in
start)
    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
    ifconfig $dev $vip netmask $mask #broadcast $vip up
    #route add -host $vip dev $dev
    echo "The RS Server is Ready!"
    ;;
stop)
    ifconfig $dev down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo "The RS Server is Canceled!"
    ;;
*) 
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
Esac

執行腳本ide

[root@rs2 ~]#sh /data/lvs_dr_rs.sh  start
The httpd Server is Ready!
The RS Server is Ready!
[root@rs1 ~]#sh /data/lvs_dr_rs.sh  start
The httpd Server is Ready!
The RS Server is Ready!

執行結果:
第十九周

二、lvs服務器配置:lvs服務器上執行 lvs_dr_vs.sh腳本,完成lvs配置 ,使用dr模式,rr輪訓,配置vip地址,添加lvs規則,端口80

lvs_dr_vs.sh 腳本

[root@lvs]#cat  lvs_dr_vs.sh

#!/bin/bash
vip='192.168.43.100'
iface='lo:1'
mask='255.255.255.255'
port='80'
rs1='192.168.43.147'
rs2='192.168.43.157'
scheduler='rr'
type='-g'
rpm -q ipvsadm &> /dev/null || yum -y install ipvsadm &> /dev/null

case $1 in
start)
    ifconfig $iface $vip netmask $mask #broadcast $vip up
    iptables -F

    ipvsadm -A -t ${vip}:${port} -s $scheduler
    ipvsadm -a -t ${vip}:${port} -r ${rs1} $type
    ipvsadm -a -t ${vip}:${port} -r ${rs2} $type
    echo "The VS Server is Ready!"
    ;;
stop)
    ipvsadm -C
    ifconfig $iface down                                                                                                                                                 
    echo "The VS Server is Canceled!"
    ;;
*)
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
Esac

[root@lvs ~]#sh /data/lvs_dr_vs.sh start
The VS Server is Ready!

結果
第十九周

三、客戶端測試:

[root@centos6 ~]#while true ;do curl 192.168.43.100;sleep 1 ;done
<h1>rs1</h1>
<h1>rs2</h1>
<h1>rs1</h1>
<h1>rs2</h1>
<h1>rs1</h1>
<h1>rs2</h1>
<h1>rs1</h1>
<h1>rs2</h1>

第十九周

三、實現LVS+Keepalived高可用。

實驗環境:

Client:192.168.3.106
Router:192.168.43.107
Keepalived1:192.168.43.117
Keepalived2:192.68.43.127
浮動ip:192.168.43.100
Rs1:192.168.43.147 VIP: 192.168.43.100 GATEWAY:192.168.3.107
Rs2:192.168.43.157 VIP: 192.168.43.100 GATEWAY:192.168.3.107

一、ka1和ka2上配置

安裝keepalived服務;
[root@ka1 ~]# yum -y install keepalived
[root@ka2 ~]# yum -y install keepalived
[root@ka1 ~]# systemctl start keepalived
[root@ka2 ~]#systemctl start keepalived

二、配置keepalived,實現ip浮動;

ka1配置:

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
      913254539@qq.com
   }

   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id ka1
   vrrp_mcast_group4 224.0.100.100
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 7
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.43.100 dev eth0 label eth0:1
    }
}

ka2配置:

[root@ka2 ~]#vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
      913254539@qq.com
   }

   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id ka2
   vrrp_mcast_group4 224.0.100.100
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 7
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.43.100 dev eth0 label eth0:1                                                                                                                             
    }
}

第十九周

第十九周

3、配置keepalived,添加rs配置,配置sorry server;

在源keepalived配置上,添加配置

virtual_server 192.168.43.100 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP
    sorry_server 127.0.0.1 80
    real_server 192.168.43.147 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
    real_server 192.168.43.157 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
}

重啓keepalived:

[root@ka1 ~]# systemctl restart keepalived
[root@ka2 ~]#systemctl restart keepalived

第十九周

第十九周

四、rs1和rs2上配置:

跑腳本,配置VIP,和arp規則,以及安裝httpd服務
lvs_dr_rs.sh 腳本:

[root@rs1 ~]#cat   /data/lvs_dr_rs.sh 

#!/bin/bash
#Author:wangxiaochun
#Date:2017-08-13
vip=192.168.43.100
mask='255.255.255.0'
dev=eth0:1                                                                                                                                                               
rpm -q httpd &&gt; /dev/null || yum -y install httpd &&gt;/dev/null
service httpd start &&gt; /dev/null && echo "The httpd Server is Ready!"
echo "&lt;h1&gt;`hostname`&lt;/h1&gt;" &gt; /var/www/html/index.html

case $1 in
start)
    echo 1 &gt; /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 1 &gt; /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 &gt; /proc/sys/net/ipv4/conf/all/arp_announce
    echo 2 &gt; /proc/sys/net/ipv4/conf/lo/arp_announce
    ifconfig $dev $vip netmask $mask #broadcast $vip up
    #route add -host $vip dev $dev
    echo "The RS Server is Ready!"
    ;;
stop)
    ifconfig $dev down
    echo 0 &gt; /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 &gt; /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 &gt; /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 &gt; /proc/sys/net/ipv4/conf/lo/arp_announce
    echo "The RS Server is Canceled!"
    ;;
*)
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac

第十九周

第十九周

五、驗證

第十九周
第十九周
中止主keepalived,訪問不受影響
第十九周

第十九周

第十九周

後臺全部rs服務都停以後,sorry server提供服務

第十九周

第十九周

相關文章
相關標籤/搜索