負載均衡基礎實踐
使用NAT模型的TCP協議類型的lvs服務負載均衡一個php應用,如Discuz!論壇或者phpMyAdmin;
首先了解nat模型:用戶端,通過訪問172.16.0.146端口,調度器會將請求隨機轉換到,後端的連個服務器,本次采用輪回調度的方式
在調度器上的,配置
a.創建集群服務,並添加服務器
[root@www ~]# ipvsadm -A -t 172.16.0.146:80 -s rr [root@www ~]# ipvsadm -a -t 172.16.0.146:80 -r 192.168.100.100:80 -m [root@www ~]# ipvsadm -a -t 172.16.0.146:80 -r 192.168.100.200:8000 -m
b.開啟此主機的核心轉發功能
[root@www ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
4.服務器上的配置,192.168.100.100服務器上配置,安裝httpd,php,php-mysql,mysql-server
a.為此主機配置,phpmyadmin服務,並在資源目錄下做測試頁面index.html
<VirtualHost 192.168.100.100:80> ServerName www.admin.com DocumentRoot "/myweb/admin/" <Directory "/myweb/admin/"> Options None AllowOverRide None Order deny,allow Allow from all </Directory> </VirtualHost>
b.給此服務器的數據庫創建新用戶並授權
mysql> grant all on *.* to 'wang'@'localhost' identifide by '111111';
c.修改此主機的防火墻策略,讓此服務器可以給調度器的請求做響應
d.給此主機做默認網關,網關為192.168.100.1
[root@localhost ~]# route add default gw 192.168.100.1
5.給192.168.100.200:8000服務器也做同樣的操作
6.在客戶端172.16.0.150做網關172.16.0.146,並對調度器進行訪問測試
[root@localhost ~]# for i in {1..10};do curl 172.16.0.146/index.html;done 192.168.100.200:8000 192.168.100.100:80 192.168.100.200:8000 192.168.100.100:80 192.168.100.200:8000 192.168.100.100:80 192.168.100.200:8000 192.168.100.100:80 192.168.100.200:8000 192.168.100.100:80
7。使用網頁訪問phpmyadmin,因為沒有建立持久連接,所以會一直保留在此頁面上,
但是在調度器上,使用ipvsadm -ln,可以看到,後端real server被訪問的次數,每登錄一次則,會自動跳到另一個服務器
8.當我們建立持久連接時,則可以訪問此程序,為了顯示更直觀,倆臺服務器,數據庫不同
因為長連接是有時間限制的,所以我們需要等一段時間,然後重新訪問,可以看到數據庫發生變化,證明負載均衡成功
9.為了使倆個服務器提供內容一樣,需要做數據庫共享;
使用samba,做目錄共享,共享/mydata目錄,並賦予mysql用戶寫權限,同時在文件系統上讓/mydata文件系統對mysql用戶有寫權限,將192.168.100.100服務器的數據庫復制到/mydata下,使用192.168.100.200,用mysql用戶掛載到/data/下
[root@bogon ~]# mount -t cifs -o username=mysql //192.168.100.100/discuz /data
更改192.168.100.200數據庫目錄,修改/etc/my.cnf的datadir=/data
重啟mysql服務,這樣無論使用哪臺服務器訪問,都是同一個數據庫
2.使用DR模型的FWM類型的lvs服務負載均衡一個php應用,如Discuz!論壇或者phpMyAdmin;
所謂FWM類型,是利用防火墻標記進行,然後利用此標記填加集群服務
所謂DR模型:是對報文的MAC地址進行重新封裝,轉發,但在整個過程中ip地址,端口號不會發生變化
----DR原理簡析:
客戶端向調度器VIP發送請求報文
調度器會對請求報文重新封裝,使得源MAC地址變為DIP,目標MAC地址為後端RIP
後端的real server,將請求報文解封裝後,對資源進行處理
後端real server在發送響應報文時,不再通過調度器,發送給客戶端,而是利用自己的環回接口為VIP的地址進行相應給客戶端
a.首先觀察其拓撲圖
b.對調度器進行設置:
1.設置DIP與VIP,DIP和VIP在同一個網卡上,且VIP應該設在標簽端口上(保證DIP和VIP是同一個MAC地址)
2.做防火墻標記,在mangle表上標記
3.使用該標記做集群服務
4.給集群添加服務器
[root@localhost ~]# iptables -t mangle -A PREROUTING -d 172.16.0.150 -p tcp --dport 80 -j MARK --set-mark 2 localhost ~]# ipvsadm -A -f 2 -s rr [root@localhost ~]# ipvsadm -a -f 2 -r 172.16.0.151 -g -w 1 [root@localhost ~]# ipvsadm -a -f 2 -r 172.16.0.152 -g -w 1 [root@localhost ~]#
c.對real server的配置:
1.配置相應的RIP
2.在環回接口上配置VIP,
3.配置http,php,mysql服務
4.設置合理的安全策略
5.修改內核參數
6.給lo接口做特定路由
13 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore //只響應目的IP地址為接收網卡上的本地地址的ARP請求 14 echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 15 echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 16 echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce //忽略IP數據包的源IP地址,選擇該發送網卡上最合適的本地地址作為ARP請求的源IP地址 17 route add -host 172.16.72.254 dev lo:0 //使響應報文從lo:0標簽接口向外封裝發送數據
d.同樣使用客戶端先進行測試訪問
e.建立長連接
f.使用網頁進行測試訪問
註意:使用網頁訪問時,應該使用VIP作為目標IP
添加集群服務器時,後端real server 不可以添加端口
負載均衡基礎實踐