溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LVS 持久連接 PPC模式、PCC模式、防火墻標記

發布時間:2020-07-24 09:49:54 來源:網絡 閱讀:558 作者:990487026 欄目:網絡安全

持久連接 PPC模式、PCC模式、防火墻標記



【LVS】我的是X86的系統

ipvsadm 功能類似Iptables


管理集群服務 增刪改

管理RS增刪改

查看 –L




【磨刀不誤砍柴工】看清楚,不要配置錯了

兩臺RS都安裝 192.168.3.123     192.168.3.87

網關都一樣

route add default gw 192.168.3.77

【做不同端口持久連接測試用】

yum -y install telnet-server
yum -y install httpd
setenforce 0
service iptables stop

測試網頁

務必保證時間的統一性

看網頁

curl  localhost

看頭部

curl -I localhost



DR -LVS主機雙網卡172.16.0.43192.168.3.77

yum -y install ipvsadm


必須關閉iptables

iptables service iptables stop

打開網卡轉發功能

echo 1 > /proc/sys/net/ipv4/ip_forward


****************改為wr規則 **********************

添加-本機-rr規則

ipvsadm -A -t 172.16.0.43:80 -s rr
ipvsadm -a -t 172.16.0.43:80 -r 192.168.3.87 -m
ipvsadm -a -t 172.16.0.43:80 -r 192.168.3.123 -m

查看

 ipvsadm -l –n

【Ok 測試成功,成功調度兩個主機】

查看狀態

ipvsadm -l -n --stats





**************改為wr規則  權重**************

E | e 為修改

ipvsadm -E -t 172.16.0.43:80 -s wrr
ipvsadm -e -t 172.16.0.43:80 -r 192.168.3.87 -m -w 6
ipvsadm -e -t 172.16.0.43:80 -r 192.168.3.123 -m -w 1

=======本機壓力測試

yum -y install httpd*


打開 web服務

service httpd start


靜態壓力測試

 ab -c 100 -n 10000 http://172.16.0.43/index.html

能看出每個主機的次數

 ipvsadm -l -n –stats




保存寫的規則

 service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ]

看看還在連接的

 ipvsadm -L –c


********************DR 模型*****************

VIP 172.16.0.1 

DIP 172.16.0.2


【這三個連接在一個交換機】

【DR:】

eth0: 172.16.0.2

eth0:0 172.16.0.1 別名


【RS 1:】

eth0: 172.16.0.7

default gw 172.16.0.111


【RS 2:】

eth0: 172.16.0.8

default gw 172.16.0.111




【刪除添加錯誤的路由】 

route del -net 0.0.0.0/32 gw 192.168.3.4

關閉RS1的ARP 請求 

cd /proc/sys/net/ipv4/conf/
#sysctl -w net.ipv4.conf.eth0.arp_announce=2
#sysctl -w net.ipv4.conf.all.arp_announce=2
#echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore 
#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
查看cat /proc/sys/net/ipv4/conf/eth0/arp_ignore
查看cat /proc/sys/net/ipv4/conf/all/arp_ignore


改VIP ARP測試

ifconfig lo:0 172.16.0.1/16【與Derectory的主機同IP】

win7 來ping 172.16.0.1

顯示可以ping 的通,



在win7 查這個IP是哪個MAC來響應的

arp –a

接口: 172.16.0.100 --- 0xb

  Internet 地址         物理地址              類型

  172.16.0.1            00-0c-29-01-2a-5e     動態

   00-0c-29-01-2a-5e對應的是Derectory的MAC 而不是RS1的

測試成功!



關閉RS2的ARP 請求

#echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce 
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# ifconfig lo:0 172.16.0.1/16 up



還是一樣,ping的不是RS的網卡

【繼續配置RS1】

全是網絡地址,只有自己一個在內網 廣播也是自己

#ifconfig lo:0 down
# ifconfig lo:0 172.16.0.1 broadcast 172.16.0.1 netmask 255.255.255.255 up
# route add -host 172.16.0.1 dev lo:0

【繼續配置RS2】

全是網絡地址,只有自己一個在內網 廣播也是自己

#ifconfig lo:0 down
# ifconfig lo:0 172.16.0.1 broadcast 172.16.0.1 netmask 255.255.255.255 up
# route add -host 172.16.0.1 dev lo:0 【目標是172.16.0.1的lo:0作為出口設備】


【Direc主機】

ipvsadm -L –n 查看

#route add -host 172.16.0.1 dev eth2:0

【Directory測試RS1和RS2】

[root@localhost ~]# curl 172.16.0.7
<h2>  S2 192.168.3.123 </h2>
 [root@localhost ~]# curl 172.16.0.8
<h2> LCL 192.168.3.87 </h2>
Ok!


******************  wlc規則  ******************

【Directory DIP的設置】

添加-本機-wlc規則

# ipvsadm -A -t 172.16.0.1:80 -s wlc
# ipvsadm -a -t 172.16.0.1:80 -r 172.16.0.7:80 -g -w 5
# ipvsadm -a -t 172.16.0.1:80 -r 172.16.0.8:80 -g -w 2
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.0.1:80 wlc
  -> 172.16.0.7:80                Route   5      0          0         
  -> 172.16.0.8:80                Route   2      0          0         
# service iptables stop
# echo 1 > /proc/sys/net/ipv4/ip_forward
# setenforce 0
win7 訪問 172.16.0.1  成功調度RS1 和RS2

【shell數組練習】

[root@localhost ~]# RS=("192.168.0.1" "172.168.0.4")
[root@localhost ~]# echo ${RS}
192.168.0.1
[root@localhost ~]# echo ${#RS}
11
[root@localhost ~]# echo ${#RS[0]}
11
[root@localhost ~]# echo ${#RS[*]}
2
[root@localhost ~]# echo ${#RS[*]}
[root@localhost ~]# echo ${RS[*]}
192.168.0.1 172.168.0.4




**********  DR模型    LVS   ************

【缺點】隨便宕掉一臺RS機,當DIP指向這臺機器時,瀏覽器就無響應,不支持健康狀態檢查



【拓展】刪除的使用方法例如

 ipvsadm -d -t 172.16.0.1:80 -r 127.0.0.1


把本機的 DIP 172.16.0.2 也加入 VIP 172.16.0.1

果斷開啟本機web服務測試

ipvsadm -a -t 172.16.0.1:80 -r 172.16.0.2:80 -g -w 5
ipvsadm -a -t 172.16.0.1:80 -r 127.0.0.1 -g -w 5

這兩條效果是一樣的

ipvsadm -L –n 查看





*********LVS健康管理***********

ipvsadm -L –n 查看

bash -x health.sh  執行

RS 是后面的服務器VIP

可以根據RS的健康狀況,自動增加,剔除機器

前提是,自己初始化好兩個正在執行的服務,不然就自動加不上去

[root@localhost ~]# ipvsadm -l -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.0.1:80 wlc
  -> 172.16.0.7:80                Route   2      0          0         
  -> 172.16.0.8:80                Route   1      0          0


RS健康狀態檢查腳本示例第一版:------------------------------------------------

#!/bin/bash
VIP=172.16.0.1
CPORT=80
FAIL_BACK=127.0.0.1
RS=("172.16.0.7" "172.16.0.8")
RSTATUS=("1" "1")
RW=("2" "1")
RPORT=80
TYPE=g
add() {
        ipvsadm -a -t $VIP:$CPORT -r $1:$RPORT -$TYPE -w $2
        [ $? -eq 0 ] && return 0 || return 1
}
del() {
        ipvsadm -d -t $VIP:$CPORT -r $1:$RPORT
        [ $? -eq 0 ] && return 0 || return 1
}
while : ; do
    let COUNT=0
    for I in ${RS[*]} ; do
      if curl --connect-timeout 1 http://$I &> /dev/null ;then
        if [ ${RSTATUS[$COUNT]} -eq 0 ] ;then
        add $I ${RW[$COUNT]}
        [ $? -eq 0] && RSTATUS[$COUNT]=1
        fi
     else
       if [ ${RSTATUS[$COUNT]} -eq 1 ];then
       del $I
       [ $? -eq 0 ] && RSTATUS[$COUNT]=0
       fi
    fi
  let COUNT++
  done
  sleep 5
done
******************************************************************

RS健康狀態檢查腳本示例第二版

檢查次數CHKLOOP=3再踢你出去

tail -f /var/log/ipvsmonitor.log

什么時候消失,什么時候回來的 都有記錄

#!/bin/bash
#
VIP=192.168.10.3
CPORT=80
FAIL_BACK=127.0.0.1
RS=("192.168.10.7" "192.168.10.8")
declare -a RSSTATUS
RW=("2" "1")
RPORT=80
TYPE=g
CHKLOOP=3
LOG=/var/log/ipvsmonitor.log
addrs() {
  ipvsadm -a -t $VIP:$CPORT -r $1:$RPORT -$TYPE -w $2
  [ $? -eq 0 ] && return 0 || return 1
}
delrs() {
  ipvsadm -d -t $VIP:$CPORT -r $1:$RPORT 
  [ $? -eq 0 ] && return 0 || return 1
}
checkrs() {
  local I=1
  while [ $I -le $CHKLOOP ]; do 
    if curl --connect-timeout 1 http://$1 &> /dev/null; then
      return 0
    fi
    let I++
  done
  return 1
}
initstatus() {
  local I
  local COUNT=0;
  for I in ${RS[*]}; do
    if ipvsadm -L -n | grep "$I:$RPORT" && > /dev/null ; then
      RSSTATUS[$COUNT]=1
    else 
      RSSTATUS[$COUNT]=0
    fi
  let COUNT++
  done
}
initstatus
while :; do
  let COUNT=0
  for I in ${RS[*]}; do
    if checkrs $I; then
      if [ ${RSSTATUS[$COUNT]} -eq 0 ]; then
         addrs $I ${RW[$COUNT]}
         [ $? -eq 0 ] && RSSTATUS[$COUNT]=1 && echo "`date +'%F %H:%M:%S'`, $I is back." >> $LOG
      fi
    else
      if [ ${RSSTATUS[$COUNT]} -eq 1 ]; then
         delrs $I
         [ $? -eq 0 ] && RSSTATUS[$COUNT]=0 && echo "`date +'%F %H:%M:%S'`, $I is gone." >> $LOG
      fi
    fi
    let COUNT++
  done 
  sleep 5
done
************************************************************





             【持久連接 PPC模式】            

默認 300秒

[root@localhost ~]# ipvsadm -L -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:50  FIN_WAIT    172.16.0.100:58792 172.16.0.1:http    172.16.0.7:http

修改調度算法為輪詢

ipvsadm -E -t 172.16.0.1:80 -s rr

修改調度算法為輪詢,默認-p 300秒可以不寫,改為600秒

ipvsadm -E -t 172.16.0.1:80 -s rr -p 600

現在無論我怎么刷新頁面http://172.16.0.1/ 都一直是一個不變的網頁

查看持久連接狀況

 ipvsadm -L -n --persistent-conn



配置RS服務機,兩臺都要配置一下

chkconfig telnet on
service xinetd restart
netstat -tnlp
看23端口啟動了沒有,默認不允許root登錄,添加一個普通用戶hadoop
useradd hadoop
passwd hadoop

兩臺都做連接測試


連接測試  Xshell:\> telnet 172.16.0.8

查看網卡信息 $ /sbin/ifconfig

把telnet服務做進LVS

# ipvsadm -A -t 172.16.0.1:23 -s rr
# ipvsadm -a -t 172.16.0.1:23 -r 172.16.0.7 -g -w 3
# ipvsadm -a -t 172.16.0.1:23 -r 172.16.0.8 -g -w 1

登錄測試  Xshell:\> telnet 172.16.0.1  多測試幾次 /sbin/ifconfig可以看到哪個RS提供服務


tletnet持久連接 ipvsadm -E -t 172.16.0.1:23 -s rr -p 4000

Xshell:\> telnet 172.16.0.1第一次就會持久

4000秒內不管再登錄多少次,依然是這個RS為你提供服務

此時是PPC 模式,只對一個端口持久,同IP訪問不同服務端口,不是持久的

-----------------------------------------------------------------

看持久連接信息

ipvsadm -l -n -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 14:19  ESTABLISHED 172.16.0.100:59564 172.16.0.1:23      172.16.0.8:23
TCP 00:47  ESTABLISHED 172.16.0.100:59441 172.16.0.1:23      172.16.0.8:23



              持久連接 PCC模式            

清空 ipvsadm –C 

ps -aux 看有沒有搗亂的bash腳本

0端口把所有端口定義為集群服務,一律向RS轉發

# ipvsadm -A -t 172.16.0.1:0 -s rr -p 600
# ipvsadm -a -t 172.16.0.1:0 -r 172.16.0.7 -g -w 2
# ipvsadm -a -t 172.16.0.1:0 -r 172.16.0.8 -g -w 2
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.0.1:0 rr persistent 600
  -> 172.16.0.7:0                 Route   2      0          0         
  -> 172.16.0.8:0                 Route   2      0          0         
[root@localhost ~]#


現在不管你是打開web,telnet,ssh,服務,對于你的IP都是一個固定的RS為你服務


看持久連接信息

ipvsadm -l -n -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 14:19  ESTABLISHED 172.16.0.100:59564 172.16.0.1:23      172.16.0.8:23
TCP 00:47  ESTABLISHED 172.16.0.100:59441 172.16.0.1:23      172.16.0.8:23




防火墻標記

清空規則

標記號0-99,只要不重復就可以

網卡看清楚再寫!-w 2 權重也可以不寫,暫時沒有持久連接

ipvsadm -C
iptables -F -t mangle
iptables -t mangle -A PREROUTING -d 172.16.0.1 -i eth2 -p tcp --dport 80 -j MARK --set-mark 8
iptables -t mangle -A PREROUTING -d 172.16.0.1 -i eth2 -p tcp --dport 23 -j MARK --set-mark 8
ipvsadm -A -f 8 -s rr
ipvsadm -a -f 8 -r 172.16.0.7 -g -w 2
ipvsadm -a -f 8 -r 172.16.0.8 -g -w 2

此時我的IP訪問telnet和web都將會是同一個RS來提供


此時才是持久連接的

ipvsadm -A -f 8 -s rr -p 600




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女