使用NAT模型的TCP協議類型的lvs服務負載均衡一個php應用,如Discuz!論壇或者phpMyAdmin;php
首先了解nat模型:用戶端,經過訪問172.16.0.146端口,調度器會將請求隨機轉換到,後端的連個服務器,本次採用輪迴調度的方式html
在調度器上的,配置
mysql
a.建立集羣服務,並添加服務器web
[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.開啓此主機的核心轉發功能sql
[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.修改此主機的防火牆策略,讓此服務器能夠給調度器的請求作響應
bash
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 不能夠添加端口