利用LVS-NAT和DR模型分別負載均衡一個php應用
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
大致拓撲圖:
註意:
(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配置
安裝服務 yum -y install httpd php php-mysql
設置網關
route add default gw 192.168.100.7
配置主頁信息
echo "rs2.zrs.com" > /var/www/html/index.html
啟動服務
systemctl start httpd.service
查看一下
~]# curl http://localhost
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交替被訪問
客戶端測試
循環測試
~]# for i in {1..10};do curl http://172.16.1.2 ;done
rs1.zrs.com
rs2.zrs.com
rs1.zrs.com
rs2.zrs.com
rs1.zrs.com
rs2.zrs.com
rs1.zrs.com
rs2.zrs.com
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
客戶端測試
-------------------------------------------------------------------------------------------
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
大致拓撲圖:
註意:
和上面的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
安裝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
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> 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配置
安裝服務 yum -y install httpd php php-mysql
配置主頁信息
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 ///運行腳本環境即可配置成功
客戶端測試
nfs共享存儲服務器配置
和上面的nat模型基本一樣,在這裏就不再贅述,需要註意的是更改/etc/exports此文件中的網段為本次dr模型實驗的網段。
最後同樣將共享目錄分別掛載到rs1和rs2中,可以用mount命令查看掛載信息:
客戶端測試
本文出自 “12657170” 博客,請務必保留此出處http://12667170.blog.51cto.com/12657170/1975782
利用LVS-NAT和DR模型分別負載均衡一個php應用