LVS小記

19.LVS小記
    LVS的類型:
        nat:是一種基于IP的DNAT的,通過目標端口與目標地址利用特定的算法選取出響就的主機進行響應,通過RS(Real Server)的地址和端口進行轉發
            特點:
                RIP與DIP必需在同一個網段中,RIP應該使用私網地址且RS的網關需要指向DIP(VS的一個IP)
                請求報文與響應報文都需要經過Director進行轉發,Director易于成為并發性瓶頸
                支持端口映射,可修改請求報文的目標端口
                VS必須是Linux系統,而RS可以是任意系統
        DR:是一種基于直鏈路由進行響應轉發,訪問VIP(VS的虛擬IP),修改包的源地址,響應時不再經過VS
            特點:
                Director與所有的RS都需要配置VIP
                確保前端路由將目標IP為VIP的請求報文發往Director上
                    在前端網關做靜態綁定
                    在RS上使用arptables
                    在RS上修改內核參數,以限制arp通告及應答級別
                        /proc/sys/net/ipv4/conf/all/arp_ignore 的值修改為1
                        /proc/sys/net/ipv4/conf/all/arp_announce 的值修改為2
                        把lo網卡的以上值也修改
                RS的RIP可以是公網IP,也可以使用公網IP;RIP與DIP在同一個網段中,RS的網關不可以指向DIP,以確保報文不會流經Director
                請求報文經由Director,而響應報文不經過Director而是直接響應客戶端
                不支持端口映射
        tun:隧道模式,在請求IP的報文外面再次封裝一個IP首部,通過這個IP訪問選定的RS,RS響應的時候不再經過VS直接響應VS
            特點:
                DIP,VIP,RIP都是公網地址(RIP與DIP和VIP八桿子打不著,更別說在同一個網段了)
                請求經由Director,但是響應不經過Director,而是直接響應客戶端
                不支持商品映射
                RS的OS需要支持隧道功能;
        fullnat:通過修改源地址的源IP與目標IP地址進行轉發
            特點:
                VIP是公網地址,RIP與DIP是私網地址,且通常不在同一IP網絡;RIP的網關一般不會指向DIP
                RS收到的請求的報文,源地址是會轉化為DIP目標地址轉化為RIP
                請求與響應都經過Director
                支持端口映射
    十大算法:
        靜態算法:
            RR:輪詢
            WRR:加權輪詢
            SH:Srouce Hashing,將來自同一個IP的請求始終發往第一次挑中的RS,從而實現會話綁定
            DH:Destination Hashing,將發往同一個目標地址的請求始終發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡
        動態算法:
            LC:last connection
                Overhead=activeconns256+inactiveconns
            WLC:Weighted LC
                Overhead=(activeconns
256+inactiveconns)/weight
            SED:Shortest Expection Delay
                Overhead=(activeconns+1)*256/weight
            NQ:Never Queue
            LBLC:Localirty-Based LC,動態DH算法
            LBLCR:LBLC with Replication,帶復制功能的LBLC;
    
    實現LVS_nat
        VS上的腳本
            #!/bin/bash
            echo 1 > /proc/sys/net/ipv4/ip_forward
            network_device=”enp0s3″
            DIP=”192.168.56.103″
            DIP_R=”172.18.250.96″
            PROT=80
            type=rr
            RS1=”192.168.56.101″
            RS2=”192.168.56.102″
            yum -y install ipvsadm >& /dev/null
            ifconfig ${network_device}:0 $DIP netmask 255.255.255.255 broadcast $DIP up
            ipvsadm -A -t ${DIP_R}:${PROT} -s $type
            ipvsadm -a -t ${DIP_R}:${PROT} -r ${RS1} -m  -w 1
            ipvsadm -a -t ${DIP_R}:${PROT} -r ${RS2} -m  -w 1
        RS上的腳本
            #!/bin/bash
            DIP=”192.168.56.101″
            RIP=”192.168.56.102″
            route add -host $RIP gw $DIP
    實現LVS_DR
        VS腳本:
            #!/bin/bash
            VIP=”172.18.35.202″
            PROT=80
            DEVICE=”enp0s3″
            type=wrr
            RS1=”172.18.250.37″
            RS2=”172.18.250.38″
            ifconfig ${DEVICE}:0 $VIP netmask 255.255.255.255 broadcast $VIP up
            ipvsadm -A -t ${VIP}:${PROT} -s $type
            ipvsadm -a -t ${VIP}:${PROT} -r ${RS1} -g -w 1
            ipvsadm -a -t ${VIP}:${PROT} -r ${RS2} -g -w 2
        RS腳本
            #!/bin/bash
            VIP=”172.13.35.202″
            echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
            echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
            echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
            echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
            ifconfig lo:0 ${VIP} netmask 255.255.255.255 broadcast ${VIP} up
            route add -host ${VIP} dev lo:0
        RS的預配置腳本:

!/bin/bash

vip=10.1.0.5
mask=’255.255.255.255′

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 lo:0 $vip netmask $mask broadcast $vip up
route add -host $vip dev lo:0
;;
stop)
ifconfig lo:0 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 “Usage $(basename $0) start|stop”
exit 1
;;
esac

VS的配置腳本:

!/bin/bash

vip=’10.1.0.5′
iface=’eno16777736:0′
mask=’255.255.255.255′
port=’80’
rs1=’10.1.0.7′
rs2=’10.1.0.8′
scheduler=’wrr’
type=’-g’

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 -w 1
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
;;
stop)
ipvsadm -C
ifconfig $iface down
;;
*)
echo “Usage $(basename $0) start|stop”
exit 1
;;
esac

    實現LVS_tun
        ifconfig tunl0 VIP netmask 255.255.255.255 broadcast 172.18.35.202 up     //配置一個隧道IP,生產環境為公有IP,每一個RS上也需要有一個VIP為公有IP而且是配置在tunl網卡上的
        route add -host VIP dev tunl0    //添加路由,使其響應報文的源IP為VIP
    LVS的多端口與長連接
        多端口使用firewall,持久連接使用persistent(timeout),也就是lvs的-f與-p
        多端口要求,這里使用多端口需要用到iptables中的mangle表,在PREROUTING鏈上對請求進行修改,修改為一個數字,這個數字可以是一個十進制數值如3,也可以是一個十六制數字如0xffff等等
            iptables -t mangle -A PREROUTING -d VIP -p tcp -m multiport –dport 80,8080 -j MARK –set-mark 0xffff
            ipvsadm -A -f 0xffff -s wrr -p 300
            ipvsadm -a -f 0xffff -r RIP -g -w 2
            ….
            這個后面的就是LVS的DR配置了
        長連接是在指定時間內連接不斷開,而且在/proc/net/….會生成一個時間表
    LVS的ldirectord自動監控LVS的健康指數使用elrepo源可以進行rpm包安裝,此源清華與aliyun有
        配置文件說明
            # Global Directives
checktimeout=3
checkinterval=1

fallback=127.0.0.1:80

fallback6=[::1]:80

autoreload=yes

logfile=”/var/log/ldirectord.log”

logfile=”local0″

emailalert=”admin@x.y.z”

emailalertfreq=3600

emailalertstatus=all

quiescent=no

Sample for an http virtual service

virtual=172.18.35.202:80
       real=172.18.250.37:80 gate
       real=172.18.250.38:80 gate
       #real=192.168.6.6:80 gate
       fallback=127.0.0.1:80 gate
       service=http
       scheduler=wrr
       persistent=600
       #netmask=255.255.255.255
       protocol=tcp
       checktype=negotiate
       checkport=80

      request=”index.html”   //七層健康監測

      receive=”Test Page”        //七層健康監測的內容

      virtualhost=www.x.y.z

    使用LVS發布wordpress

        拓撲圖:

                LVS小記

            見LVS_DR_wordpress.png
        配置步驟
            RS_LAMP配置:
                yum -y install showmount
                service rpcbind start
                service nfs start
                mkdir /data/www -p
                echo “/data/www 172.18.250.38(rw,async)” > /etc/exports
                exportfs -ua
                下載wordpress
                unzip wordpress-4.3.1-zh_CN.zip
                chmod -R a+w wordpress
                vim /etc/httpd/conf/httpd.conf
                    #DocumentRoot “/var/www/html”    //注釋掉
                    DirectoryIndex index.php index.html index.html.var   //添加一個index.php
                vim /etc/httpd/conf.d/vhost.conf
                    <VirtualHost :80>
   DocumentRoot /data/www
   ServerName www.a.com
   ErrorLog logs/dummy-host.example.com-error_log
   CustomLog logs/dummy-host.example.com-access_log common
   <Directory /data/www>
       Order allow,deny
       Allow from all
   </Directory>
</VirtualHost>
                service httpd start
                mysql -u root
                create database wordpress;
                grant all privileges on *.
to test@”localhost” identified by “test”;
                grant all privileges on . to test@”127.0.0.1″ identified by “test”;
                grant all privileges on . to test@”%” identified by “test”;
                \q
                ifconfig lo:0 172.18.35.202 netmask 255.255.255.255 broadcast 172.18.35.202 up
                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/lo/arp_announce 
                echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
                route add -host 172.18.35.202 dev lo:0
            RS_LNP配置:’
                yum -y install showmount
                mount -t nfs 172.18.250.37:/data/www /data/www 
                將nginx的主配置文件中的非注釋server注釋掉
                vim /etc/nginx/conf.d/vhost.conf    
               server {
       listen *:80;
       root /data/www;
       index index.php index.html index.htm;
       location ~ .php$ {
               fastcgi_pass localhost:9000;
               fastcgi_index index.php;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               include fastcgi_params;
       }
}
                注釋掉/etc/nginx/nginx.conf.default中的server段
                ifconfig lo:0 172.18.35.202 netmask 255.255.255.255 broadcast 172.18.35.202 up
                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/lo/arp_announce 
                echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
                route add -host 172.18.35.202 dev lo:0
            VS配置:
                ifconfig enp0s3:0 172.18.35.202 netmask 255.255.255.255 broadcast 172.18.35.202 up
                yum -y install ipvsadm
                ipvsadm -A -t 172.18.35.202:80 -s wrr
                ipvsadm -a -t 172.18.35.202:80 -r 172.18.250.37 -g -w 1
                ipvsadm -a -t 172.18.35.202:80 -r 172.18.250.38 -g -w 2 
            網頁配置,完成 

原創文章,作者:gaomei,如若轉載,請注明出處:http://www.www58058.com/75745

(0)
gaomeigaomei
上一篇 2017-05-15 15:45
下一篇 2017-05-15 15:53

相關推薦

  • PHP安全模式詳解(PHP5.4安全模式將消失)

    1. 安全模式      一直沒有用過php的safe_mode安全模式,以此說明作為日后參考。      PHP 的安全模式是為了試圖解決共享服務器(shared-server)安全問題而設立的。在結構上,試圖在 PHP 層上解決這個問題是不合理的,但修改 web 服務器層和操作系統層顯得非常不現…

    Linux干貨 2015-06-02
  • Linux 基礎知識(六.二)

    1、復制/etc/rc.d/rc.sysinit至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加# [root@server01 tmp]# cp /etc/rc.d/rc.sysinit /tmp/ [root@server01 tmp]# sed -n "s@^[[:space:]]\+@#&@…

    Linux干貨 2016-11-14
  • N25第二周視頻作業:用戶、組與權限管理詳解

    此篇博客是根據視頻要求寫的,因為馬哥在視頻中說了,用戶組、權限在linux運維過程中比較重要,所以一定要深入學習 首先,先介紹一下用戶、組與權限是什么:     用戶:用戶時指你在服務器上的標識,通過不同類型的用戶,你享受到不同的待遇,而待遇就是權限的大小。每個用戶在服務器上都有唯一的id標識,即使你將此用戶刪除,再建…

    Linux干貨 2016-11-26
  • LINUX HASH命令

    LINUX:Hash命令 介紹:linux系統下會有一個hash表,剛開始這個hash表為空,每執行過一條命令hash表會緩存下這條命令。Shel優先會查看hash表。 hash緩存表可大大提高命令的調用速率 下面介紹幾個hash常用選項 剛進入系統使用Hash命令 哈希表為空 使用過命令后使用Hash命令 使用過命令后,Hash可顯示緩存的命令 Hash …

    Linux干貨 2017-04-03
  • sed,vim練習

    1 、刪除/etc/grub2.cfg 文件中所有以空白開頭的行行首的 空白字符 [root@localhost ~]# sed -r 's@^[[:space:]]+@@' /etc/grub2.cfg 2 、刪除/etc/fstab 文件中所有以#開頭,后面至少跟一個空白字符的行的行首…

    Linux干貨 2016-08-10
  • haproxy 監控配置

    方法一:在defaults段增加如下配置: stats refresh 30s #統計頁面自動刷新時間stats uri /stats #統計頁面urlstats realm baison-test-Haproxy #統計頁面密碼框上提示文本stats auth admin:admin123 #統計頁面用戶名和密碼設置stats hide-version #…

    Linux干貨 2018-03-19
欧美性久久久久