實例分析:LVS-NAT模型實現web服務器的負載均衡
1、規劃圖
名詞解釋:
DS:Director Server
RS:Real Server
VS/NAT:Virtual Server via Network AddressTranslation;調度器通過將請求報文的目標地址(VIP)改寫成選定的RealServer地址,同時將報文的目標端口也改寫成指定的Real Server的相應端口,最終將報文請求發送到選定的Real Server 上。Real Server將報文數據返回給客戶端時,需要經過負載均衡器將報文源地址和源端口改寫成Director Server上的VIP地址和相應端口,然後通過DirectorServer將報文數據返回給客戶端
VIP:外網, 192.168.0.2
DIP:內網,172.16.50.10
RS1:RIP 172.16.50.11
RS2:RIP 172.16.50.12
前端是一個directorserver,有兩個網卡,一個是公網(面向互聯網);一個是連接各RIP
網卡1是橋接,網卡2是hostonly
後端是realserver,儘可能使用私有地址,網關應指向DIP,將RS做成web服務器
2、設置各自的IP
DS主機上的eth0:192.168.0.10
eth1:192.168.10.1
RS1:IP 192.168.10.2 網關:192.168.10.1
RS2:IP 192.168.10.3 網關:192.168.10.1
下面在DS主機上配置所要做的工作
3、配置好yum庫,安裝好開發環境,這些很簡單就不詳細演示啦,需要注意的是必須要有Cluster集羣
其中ipvs是系統自帶的有
4、安裝命令行工具
# yum install ipvsadm -y
注意:各節點之間的時間偏差不應該超出1秒鐘
NTP:Network Time Protocol網絡時間協議
# service ntpd strat
5、開啓數據轉發功能
# vim /proc/sys/net/ipv4/ip_forward
ipv4_forward=1
在RS1主機上配置所需要的工作
1、配置好yum庫,安裝好開發環境
2、安裝所需要的包
# yum install httpd telnet-server
3、同步時間
# ntpdate 172.16.0.1
4、提供頁面
# echo “RS1.192.168.10.2" >/var/www/html/index.html
5、啓動服務
# service httpd start
6、在本主機上訪問自己的web服務器和RS2的web服務器
在RS2:主機上配置所需要的工作
1、配置好yum庫,安裝好開發環境
2、安裝所需要的包
# yum install httpd telnet-server
3、同步時間
# ntpdate 172.16.0.1
4、提供頁面
# echo “RS1.192.168.10.2" >/var/www/html/index.html
5、啓動服務
# service httpd start
6、在本主機上訪問自己的web服務器和RS2的web服務器
在DS主機上分別訪問RS1、RS2服務
開始配置規則(在DS上配置的)
# ipvsadm -A -t 192.168.0.10:80 -s rr
# ipvsadm -a -t 172.16.50.2:80 -r192.168.10.2 -m
# ipvsadm -a -t 172.16.50.2:80 -r192.168.10.3 -m
# # ipvsadm -L -n -c
驗證:
在物理主機上訪問VIP,每刷新一次,頁面就會換一次,也就是說RS1與RS2的頁面是輪流出現的
刷新頁面
在DS主機上查看一下
還可以將調度算法改爲加權的wrr
# ipvsadm -E -t 192.168.0.10:80 -s wrr
# ipvsadm -e -t 192.168.0.10:80 -r192.168.10.2 -m -w 3
# ipvsadm -e -t 192.168.0.10:80 -r192.168.10.3 -m -w 1
# # ipvsadm -L -n -c
驗證:
找一個主機測試一下:壓力測試
# ab -n 1000 -c 100http://192.168.0.10/index.html
這就是LVS-NAT的實現過程,很簡單