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
下一篇 2017-05-15

相關推薦

  • 硬鏈接與軟鏈接的聯系與區別

    硬鏈接與軟鏈接的聯系與區別     文件都有文件名與數據,這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。元數據中的inode才是…

    Linux干貨 2016-10-20
  • 對防火墻的初步認識

      防火墻,就是用于實現Linux下訪問控制的功能的,它分為硬件的或者軟件的防火墻兩種。無論是在哪個網絡中,防火墻工作的地方一定是在網絡的邊緣。而我們的任務就是需要去定義到底防火墻如何工作,這就是防火墻的策略,規則,以達到讓它對出入網絡的IP、數據進行檢測。    目前市面上比較常見的有3、4層的防火墻,叫網絡層的防火墻,還有7…

    Linux干貨 2017-06-15
  • nginx初步

    一、知識整理 1、查看進程使用的cpu;ni查看nice值 [root@localhost html]# ps axo pid,comm,psr,ni  43769 nginx          &n…

    Linux干貨 2016-10-31
  • 網絡配置與可視化監控工具

    nmcli  [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { general | networking | radio | connection | device | agent  }    OPTIONS := {    -t[erse] : 簡…

    Linux干貨 2016-09-07
  • 簡單的shell腳本結合awk實現防止對web服務的dos攻擊

    一 實驗環境         鄙人使用的是centos 6.8操作系統   需要安裝iptables(常見的linux系統貌似都會自動安裝iptables)這條可以忽略   awk也需要安裝沒有的話就用yum裝下吧       &…

    2017-04-24
  • N25第一周作業

    1、描述計算機的組成及其功能。 硬件部分: 軟件(系統)組成部分 功能模塊劃分: 進程管理:系統資源的分配單位(線程是CPU分配單位) 存儲管理:內存分配,存儲保護,虛擬存儲 設備管理:管理外設接口 文件管理:保存程序和數據等軟件信息 程序接口:提供指令或函數的調用方式,使程序能夠調用系統的資源 用戶界面:為用戶提供操作環境    &nb…

    Linux干貨 2016-12-12
欧美性久久久久