nat dr (ipvsadm route)

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

大致拓撲圖:

80050122e29f033afaee58e09baafdf1.png

注意:

(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交替被訪問

客戶端測試

ee91477c9e9ba7822b24da77a5e687e9.png

d6703d65b968673b1389966f383a8191.png

循環測試

~]# 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

客戶端測試

e776401c92b9a325d6d22d4387c17e99.png


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

大致拓撲圖:

76d35b0d9baf59af63ae2677524a0a89.png

注意:

和上面的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

c9a43c689079fd6b2b0f72d040a3523a.png

安裝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 ///運行腳本環境即可配置成功

客戶端測試

49f74c96f395815a30a32890c37fd181.png

87cd8bacb5534ed936a14057153a0763.png

nfs共享存儲服務器配置

和上面的nat模型基本一樣,在這裏就不再贅述,需要注意的是更改/etc/exports此文件中的網段爲本次dr模型實驗的網段。

最後同樣將共享目錄分別掛載到rs1和rs2中,可以用mount命令查看掛載信息:

ebfc50bc9d8838b0039e197ed5d243e5.png

客戶端測試

3aaa0b2ac6eb190d311ca03eafe76985.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章