1.使用NAT模型的TCP協議類型的lvs服務負載均衡一個php應用,如Discuz!論壇或者phpMyAdmin;php
2.使用DR模型的FWM類型的lvs服務負載均衡一個php應用,如Discuz!論壇或者phpMyAdmin;html
注意:以上兩個集羣須要考慮兩個問題:mysql
1) 是否須要會話保持;linux
2) 是否須要共享存儲;web
-------------------------------------------------------------------------------------------算法
1.使用NAT模型負載均衡wordpresssql
環境部署:數據庫
serverA :調度器 外網:172.16.1.2 內網:192.168.100.7apache
serverB :rs1 內網:192.168.100.8vim
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命令查看掛載信息:
客戶端測試