1. 程式人生 > >利用LVS-NAT和DR模型分別負載均衡一個php應用

利用LVS-NAT和DR模型分別負載均衡一個php應用

lvs nat dr wordpress

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應用