1.使用NAT模型的TCP協定類型的lvs服務負載均衡一個php應用,如Discuz!論壇或者phpMyAdmin;
2.使用DR模型的FWM類型的lvs服務負載均衡一個php應用,如Discuz!論壇或者phpMyAdmin;
注意:以上兩個叢集需要考慮兩個問題:
1) 是否需要會話保持;
2) 是否需要共享存儲;
-------------------------------------------------------------------------------------------
1.使用NAT模型負載均衡wordpress
環境部署:
serverA :排程器 外網:172.16.1.2 内網:192.168.100.7
serverB :rs1 内網:192.168.100.8
serverC :rs2 内網:192.168.100.9
serverD :nfs伺服器 内網:192.168.100.6
大緻拓撲圖:
<a href="https://s3.51cto.com/oss/201710/24/80050122e29f033afaee58e09baafdf1.png" target="_blank"></a>
注意:
(1)配置之前把所有主機的防火牆和SElinux關閉,友善實驗
~]# iptables -F && setenforce 0 && systemctl stop firewalld.service
(2)同步時間
時間同步是最重要的環節,Director和背景的RealServer的時間必須同步,并且時間差小于1秒鐘。 本次我們使用Director伺服器作為時間伺服器,全部都向它來同步時間。
~]# service ntpd restart # 重新開機ntp伺服器
Shutting down ntpd: [ OK ]
Starting ntpd: [ OK ]
~]# ntpdate 192.168.100.7 # 用戶端同步三台都要同步這裡我們就不多說了
rs1配置
安裝服務 yum -y install httpd php php-mysql
設定網關
route add default gw 192.168.100.7
配置首頁資訊
echo "rs1.zrs.com" > /var/www/html/index.html
啟動服務
systemctl start httpd.service
檢視一下
~]# curl http://localhost
rs1.zrs.com
rs2配置
route add default gw 192.168.100.7
echo "rs2.zrs.com" > /var/www/html/index.html
systemctl start httpd.service
rs2.zrs.com
排程器配置
測試rs1和rs2主機能否正常通信:
ping 192.168.100.8
ping 192.168.100.9
curl http://192.168.10.8
curl http://192.168.10.9
安裝lvs軟體包 yum -y install ipvsadm
開啟核心轉發功能
~]# echo 1 > /proc/sys/net/ipv4/ip_forward
建立叢集
~]# ipvsadm -A -t 172.16.1.2:80 -s rr
~]# ipvsadm -a -t 172.16.1.2:80 -r 192.168.100.8 -m
~]# ipvsadm -a -t 172.16.1.2:80 -r 192.168.100.9 -m
檢視叢集
~]# ipvsadm -l -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.1.2:80 rr
-> 192.168.100.8:80 Masq 1 0 0
-> 192.168.100.9:80 Masq 1 0 0
由于這個叢集使用的是rr(輪詢)算法,是以rs1和rs2交替被通路
用戶端測試
<a href="https://s2.51cto.com/oss/201710/24/ee91477c9e9ba7822b24da77a5e687e9.png" target="_blank"></a>
<a href="https://s3.51cto.com/oss/201710/24/d6703d65b968673b1389966f383a8191.png" target="_blank"></a>
循環測試
~]# for i in {1..10};do curl http://172.16.1.2 ;done
rs1.zrs.com
rs2.zrs.com
可以儲存一下規則,重新開機後可繼續适用
ipvsadm -S > /etc/sysconfig/ipvsadm.web
重載規則
ipvsadm -R < /etc/sysconfig/ipvsadm.web
nfs伺服器配置
1.安裝所需軟體包
yum -y install nfs-utils
2.準備使用者apache(通路NFS服務時映射為的使用者)
useradd -u 48 apache
3.準備需要導出的目錄,且其屬主、屬組為apahce
install -o apache -g apache -d /data/application/web
4.下載下傳wordpress程式包并解壓至/data/application/web目錄下,并将其屬主、屬組改為apache,wordpress目錄下的wp-content目錄的權限改為777(上傳圖檔時需要寫權限)
unzip wordpress-4.3.1.-zh_CN.zip
mv wordpress /data/application/web
cd /data/application/web
chown -R apache.apache wordpress
chmod 777 wordpress/wp-content
5.在wordpress目錄下,修改配置檔案 :
mv wp-config-sample.php wp-config.php
vim wp-config.php
/** WordPress資料庫的名稱*/
define('DB_NAME', 'wpdb');
/** MySQL資料庫使用者名 */
define('DB_USER', 'wpuser');
/** MySQL資料庫密碼 */
define('DB_PASSWORD', '123456');
/** MySQL主機 */
define('DB_HOST', '192.168.100.6');
6.編輯nfs配置檔案,将/data/application/web目錄導出,允許192.168.10.0/24網段連接配接,導出屬性為rw,async,使用者映射為apache。
vim /etc/exports
/data/application/web 192.168.10.0/24(rw,async,anonuid=48,anongid=48)
7.啟動mysql服務,建立資料庫wpdb和dzdb,并分别授權使用者wpuser對wpdb資料庫下的所有表擁有所有權限,dzuser對dzdb資料庫下的所有表擁有所有權限;
yum -y install mariadb-server php-mysql
systemctl start mariadb.service
MariaDB [(none)]> CREATE DATABASE wpdb;
MariaDB [(none)]> grant all on wpdb.* to 'wpuser'@'192.168.%.%' identified by '123456';
MariaDB [(none)]> FLUSH PRIVILEGES;
rs1和rs2
建立session目錄,存放會話,更改屬組屬主為apache
~]# ll -d /var/lib/php/session/
drwxr-xr-x. 2 apache apache 4096 10月 21 10:28 /var/lib/php/session/
将D主機nfs伺服器上導出的目錄挂載至/var/www/html目錄下
mount.nfs 192.168.100.6:/data/application/web /var/www/html
<a href="https://s1.51cto.com/oss/201710/24/e776401c92b9a325d6d22d4387c17e99.png" target="_blank"></a>
2.使用DR模型的FWM類型的lvs服務負載均衡wordpress
serverA :排程器 VIP:172.16.1.2 DIP:172.16.1.100
serverB :rs1 RIP1:172.16.1.3
serverC :rs2 RIP2:172.16.1.4
serverD :nfs伺服器 nfs:172.16.1.5
<a href="https://s2.51cto.com/oss/201710/24/76d35b0d9baf59af63ae2677524a0a89.png" target="_blank"></a>
和上面的nat模型一樣需要注意時間同步和防火牆及SElinux的設定,在這裡就不再贅述。
排程器主機:
安裝一個僅主機的網卡位址為172.16.1.100,此ip位址為DIP
VIP配置在接口的别名上,如下配置
[root@zj02 ~]# ifconfig eno16777736:0 172.16.1.2 netmask 255.255.255.255 broadcast 172.16.1.2 up
<a href="https://s4.51cto.com/oss/201710/24/c9a43c689079fd6b2b0f72d040a3523a.png" target="_blank"></a>
安裝lvs軟體包 yum -y install ipvsadm
叢集配置
設定FWH規則:
[root@zj02 ~]# iptables -t mangle -A PREROUTING -p tcp --dport 80 -d 172.16.1.2 -j MARK --set-mark 6
[root@zj02 ~]# ipvsadm -A -f 6 -s rr
[root@zj02 ~]# ipvsadm -a -f 6 -r 172.16.1.3:80 -g
[root@zj02 ~]# ipvsadm -a -f 6 -r 172.16.1.4:80 -g
[root@zj02 ~]# ipvsadm -ln
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
FWM 6 rr
-> 172.16.1.3:80 Route 1 0 0
-> 172.16.1.4:80 Route 1 0 0
開啟核心轉發功能
~]# echo 1 > /proc/sys/net/ipv4/ip_forward
rs1&rs2配置
echo "<h1>rs1.zrs.com</h1>" > /var/www/html/index.html
echo "<h1>rs2.zrs.com</h1>" > /var/www/html/index.html
systemctl start httpd.service
在DR模型中,各個主機均需要配置VIP;為了解決位址沖突可以修改對應的核心參數,來限制ARP的通告和應答的級别
arp_ignore:
0:預設值,對于從任何網絡接口接收到對本機任意IP位址的ARP查詢請求均予以回應;
1:隻應答目标IP位址是入站接口上配置的IP位址所在網段的IP位址的ARP請求;
2:隻應答目标IP位址是入站接口上配置的IP位址所在網段的IP位址的ARP請求,且來訪IP位址也必須與該接口的IP位址在同一子網中;
3:不響應該網絡接口的ARP請求,而隻對設定為全局的IP位址做應答;
4-7:保留;
8:不應答所有的ARP請求;
arp_announce:
0:預設值,将本機所有接口的資訊向所有接口所連接配接的網絡中通告;
1:盡量避免向與本接口不同網絡中的其他接口通告;
2:絕對避免向非本網絡的主機通告;
可以用腳本實作
~]# vim arp_para.sh
#!/bin/bash
#
VIP=172.16.1.2
MASK=255.255.255.255
case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig lo:0 $VIP netmask $MASK broadcast $VIP up
route add -host $VIP dev lo:0
;;
stop)
ifconfig lo:0 down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
*)
echo "Usage: $(basename $0) { start | stop }"
esac
~]# chmod +x arp_para.sh ///賦予執行權限
~]# ./arp_para.sh start ///運作腳本環境即可配置成功
<a href="https://s3.51cto.com/oss/201710/24/49f74c96f395815a30a32890c37fd181.png" target="_blank"></a>
<a href="https://s3.51cto.com/oss/201710/24/87cd8bacb5534ed936a14057153a0763.png" target="_blank"></a>
nfs共享存儲伺服器配置
和上面的nat模型基本一樣,在這裡就不再贅述,需要注意的是更改/etc/exports此檔案中的網段為本次dr模型實驗的網段。
最後同樣将共享目錄分别挂載到rs1和rs2中,可以用mount指令檢視挂載資訊:
<a href="https://s1.51cto.com/oss/201710/24/ebfc50bc9d8838b0039e197ed5d243e5.png" target="_blank"></a>
<a href="https://s2.51cto.com/oss/201710/24/3aaa0b2ac6eb190d311ca03eafe76985.png" target="_blank"></a>
本文轉自 Runs_ 51CTO部落格,原文連結:http://blog.51cto.com/12667170/1975782,如需轉載請自行聯系原作者