虛擬叢集LVS及DR模式搭建
LVS(虛擬叢集Linux Virtual Server)
LVS-NAT:地址轉換,資料包來回都要經過NAT轉換,所以Director Server(即LVS伺服器)將成為系統瓶頸。使用NAT模式將需要兩個不同網段的IP,一個IP接受外部請求服務,一般為外網ip,此IP稱為VIP,一個IP與後realserver同一地址段,負責相互通訊,稱為DIP。後端realserver的閘道器地址需指向DIP。同時需開啟linux核心的資料包轉發功能。
LVS-TUN:隧道 ,LVS/TUN與 LVS/DR 類似。只是在報文外面再加一層IP封裝,整個過程比LVS/DR模式多一次報文的封裝/解封過程。LVS/DR只支援本地網路,LVS/TUN卻可以跨機房。
LVS-DR: 直接路由,此種方式是最常用的方式,
所有的Director和RealServer都在同一個物理網路中(交換機)並且都只有一塊網絡卡。
常用的幾種排程:
1. 輪叫排程 rr 所有real_server輪流
2. 加權輪叫 wrr 按照效能比例,好的多分,差的少分
3. 最少連結 lc 給連結數少的分
4. 加權最少連結 wlc 按照效能比例,好的多分,差的少分,連結數也要保持比例
5. 基於區域性性的最少連線排程演算法 lblc
6. 複雜的基於區域性性最少的連線演算法 lblcr
7. 目標地址雜湊排程演算法 dh
8. 源地址雜湊排程演算法 sh
用DR模式配置(必須同一網段)
首先準備構建叢集的三臺裝置
direct_server:192.168.254.17
real_server1:192.168.254.18
real_server2:192.168.254.19
擬定vip為:192.168.254.250
direct_server:
# yum -y install ipvsadm
# yum -y install httpd*
# ipvsadm -C
# ipvsadm -A -t 192.168.11.250:80 -s rr
# ipvsadm -a -t 192.168.11.250:80 -r 192.168.11.138:80 -g
# ipvsadm -a -t 192.168.11.250:80 -r 192.168.11.140:80 -g
# ifconfig ens33:0 192.168.11.250 broadcast 192.168.11.250 netmask 255.255.255.255 up 在ens33的子網絡卡新增一個虛擬ip,保證服務可以訪問到VIP;
# route add -host 192.168.11.250 dev ens33:0
新增一個路由通過ens33來訪問Vip 192.168.254.250
# vim /dev/sysconfig/ipvsadm 隨便編輯一下
# ipvsadm -Ln --stats -L顯示核心虛擬伺服器表
--zero 清空流量 -n 輸出IP地址和埠的數字形式
/# -a新增 -t 新增一個虛擬IP的tcp 協議
/# -C:–clear 清除核心虛擬伺服器表中的所有記錄
/# -A新增一個虛擬IP -s排程器
/# -r real_server -g DR模式
/# ens33:0 是子網絡卡,設定第二個ip
/# broadcast 廣播
/# ipvsadm檔案缺失後會導致ipvsadm start失敗
real_server:
# yum -y install httpd*
# ifconfig lo:0 192.168.11.250 broadcast 192.168.11.250 netmask 255.255.255.255 up
# route add -host 192.168.11.250 dev lo:0
/#loopback網絡卡,預設地址127.0.0.1
# 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
# vim /etc/www/html/index.html
<h1>this is 138(或者140) host</h1>
# systemctl start httpd.service
測試:
用第四臺虛擬機器
# curl 192.168.11.250 出現下圖情況即成功
也可以windows裝curl包後,在命令列輸入上述命令測試
arp_ignore:定義接收到ARP請求時的響應級別
0:預設,只用本地配置的有響應地址都給予響應
1:僅僅在目標IP是本地地址,並且是配置在請求進來的介面上的時候才給予響應
(僅在請求的目標地址配置請求到達的介面上的時候,才給予響應)
arp_announce:定義將自己的地址向外通告時的級別
0:預設,表示使用配置在任何介面的任何地址向外通告
1:儘量僅向目標網路通告與其網路匹配的地址
2:僅向與本地介面上地址匹配的網路進行通告
tun隧道模式
lvs-server:
ifconfig tunl0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.0 up
route add -host 192.168.254.250 dev tunl0
ipvsadm -A -t 192.168.254.250:80 -s rr
ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.18 -i
ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.19 -i
real server:
ifconfig tunl0 192.168.254.250 netmask 255.255.255.255 broadcast 192.168.254.250 up
route add -host 192.168.254.250 dev tunl0
echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/tunl0/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
0:不開啟源地址校驗。
1:開啟嚴格的反向路徑校驗。對每個進來的資料包,校驗其反向路徑是否是最佳路徑。
如果反向路徑不是最佳路徑,則直接丟棄該資料包。
2:開啟鬆散的反向路徑校驗。對每個進來的資料包,校驗其源地址是否可達,即反向路徑是否能通(通過任意網口),
如果反向路徑不同,則直接丟棄該資料包。