對於liunx集羣,尤其是DR模式,很不容易理解,因他太有點亂和繞了,其實把理理解了,自然就不難了,我把DR最難理解的三個問題,做了標註和說明,這樣可以讓大家很好的理解。
VS是
linux虛擬服務linux內核自帶的(創始人現在在他淘寶)
LVS 有三種模式
NAT
TUN 隧道模式(過渡階段)
DR
---------------
工作模式:
一、NAT
分發器:Director
VIP 虛擬IP 提供服務的IP
DIP 直連服務器的IP
RIP 服務器的IP
CIP 客戶端IP
數據包過程
第一步:client——>GW
源ip CIP 目標IP VIP 源mac CIPmac 目標mac up口mac
第二步:
GW——>Director 源ip CIP 目標IP VIP 源mac down口mac 目標mac VIP口mac
第三步:
Director——>Real Server [DNAT] 源ip CIP 目標IP RIP 源mac DIP mac 目標mac RIPmac
第四步:
Real Server——>Director 源ip RIP 目標IP CIP 源mac RIPmac 目標mac DIPmac
第五步:
Director——>GW 源ip VIP 目標IP CIP 源mac VIPmac 目標mac down口mac
第六步:
GW——>Client 源ip VIP 目標IP CIP 源mac up口mac 目標mac CIPmac
三、DR(直接路由)
數據包過程
第一步:client——>GW
源ip CIP 目標IP VIP 源mac CIPmac 目標mac up口mac
第二步:
GW——>Director
源ip CIP 目標IP VIP 源mac down口mac 目標mac VIPmac
第三步:
Director——>Real Server
源ip DIP 目標IP RIP 源mac DIP mac 目標mac 廣播
源ip RIP 目標ip DIP 源mac RIPmac 目標mac DIPmac
源ip CIP 目標ip VIP 源mac DIPmac 目標mac RIPmac
第四步:
Real Server——>GW
源ip VIP 目標IP CIP 源mac RIPmac 目標mac down口mac
第五步:
GW——>Client
源ip VIP 目標IP CIP 源mac up口mac 目標mac CIPmac
NAT(地址轉換) 作LB附載均衡的 一個人幹活幹不過來 在加一個 (工作中不會用原理進站數據少出去數據包大服務器承受不了)
分發去器 通過建立策略將接收到的任務分發給服務器
分發到的服務器成爲 真實 server
VIP 對外提供服務的 連接外網的
DIP之連IP 連接AB 服務的地址
RIP是AB服務器的IP
虛擬機倆網卡是在硬件上添加network
連接虛擬機
virt-viewer XU1
SSH IP
virsh console xu1 退出ctrl+右]
如果連不上
在本機上
grep ttys0 /etc/securetty
vim /etc/securetty
添加 ttyS0
grep ttys0 /boot/grub/grub.conf
title Red Hat Enterprise Linux Server (2.6.18-308.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-308.el5
module /vmlinuz-2.6.18-308.el5xen ro root=LABEL=/ rhgb quiet console=ttyS0 添加
module /initrd-2.6.18-308.el5xen.img
title Red Hat Enterprise Linux Server (2.6.18-308.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/ rhgb quiet console=ttyS0
GW電腦上也要打開 地址轉換echo 1
在 director電腦上(創建一個虛擬服務)
在內核寫策略 需要裝 /mnt/cluster/ipvsadm-1.24-
-A 添加一個虛擬接口 輪詢
ipvsadm -A -t 1.1.1.1:80 -s rr ------創建了一個工作
(僞裝)
ipvsadm -a -t 1.1.1.1:80 -r 172.16.1.1 -m ------添加策略
ipvsadm -a -t 1.1.1.1:80 -r 172.16.1.2 -m
ipvasdm -Ln ---查看策略
打開地址轉換 echo 1
在本機上設置
在虛擬機上掛載iso
第一個虛擬機 這個文件 映射到這臺電腦上 爲hdc 以只讀的方式
[root@localhost ~]# xm block-attach 5 file://rhel5u8.iso /dev/hdm r
在掛載 iso
ipvasdm -Ln --stats -----顯示詳細信息
入站流量大於出戰流量 原因一個網站進入的是請求出去的是數據
------------------------------------------
DR 直接路由
第一步 原ip cip 目標ip vip 原mac cip mac 目標mac up口
第一個問題 倆個web服務要有VIP
第二個問題 路由喊VIP的時候 只有真正的VIP迴應
第三個問題 當分發器上分發數據包的時候必須讓dip分發 (向外發包第一步查路由表 在路由表裏第一條寫DIP)
第一個問題原因:爲什麼倆個web服務器要都要有VIP ,因爲: 客戶端發送一個數據包給張三,然後恢復的時候是李四恢復的,計算機一看人不對,誤認爲是李四發錯了,
他會一直等張三的數據包到來,等到超時的時候就會斷開,爲了避免這個問題,所以讓倆個服務器端都把張三的名字保存起來,這樣,數據包回去的時候看到裏面有張三的字眼就會接受了。
所以說 倆個web服務器必須要有VIP。 (在自己的電腦上添加領一個IP地址)(倆個web服務器上添加VIP在lo:1)
第二個問原因:路由喊VIP的時候 只有真正的VIP迴應 第一個問題上面倆個web服務器上有張三的名字了 ,加上真正的張三一共有三個張三 等路由喊張三的時候 會有三個人回答, 這不就亂了馬?
所以說我們要讓 真正的張三回答 不是真的閉嘴,避免亂套。這就又牽扯到第一個問題了,如果在一個eth1上添加了張三,假如一天插上網線,那麼arp一喊eth1必須迴應,
所以我們把這個張三設置在lo:1上回環地址的另一個上確保不會插上網線 他迴應。(設置虛擬服務設置策略 打開倆個內核信息一是 喊真VIP的時候假的不回答, 喊本機的本機回答,喊本機的兄弟IP 本機的IP不回答二是讓自己的IP和兄弟IP都接收 兄弟IP也幫你接收)
第三個問題 當分發器上分發數據包的時候爲什麼必須dip分發
因爲分發器和倆個web服務器是在同一個交換機上 VIP和DIP倆個口都可以進出 不非要DIP出 ,但是 假如讓VIP出包的話 第二個問題說到讓web的VIP提他兄弟接受數據包
他原地址是VIP 接收的地址也是VIP 那麼分發器會誤認爲他給自己發的數據包,這樣就會把數據包給自己, 所以我們要選擇讓DIP發送數據包 ,因爲DIP在這個網絡裏就他一個不會迴環。
在 www1和www2設置
ifconfig lo:1 1.1.1.1/32 ---添加這個地址
內核參數的永久設置
vim /etc/sysctl.conf
喊真VIP的時候假的不回答, 喊本機的本機回答,喊本機的兄弟IP 本機的IP不回答
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore ---喊VIP的時候他不回答 喊我我回答 喊我兄弟我不回答
[root@localhost ~]# echo 2 /proc/sys/net/ipv4/conf/eth0/arp_announce ----VIP幫正真的IP 接收 給我的我收 我給兄弟我也收 +
service httpd restart
touch /var/www/html/index.html
echo "11111" > /var/www/html/index.html
在分發器上 讓DIP在最上面
ipsadm -C 清空
ifdown eth0
ifdown eth1
ifup eth1
ifup eth0
VIP地址
ipvsadm -A -t 1.1.1.1:80 -s rr
ipvsadm -a -t 1.1.1.1:80 -r 1.1.1.10:80 -g
ipvsadm -a -t 1.1.1.1:80 -r 1.1.1.20:80 -g
ipvasdm -Ln --stats -----顯示詳細信息
沒有出站流量了就成功了