在centos6系統上基於session綁定實現nat模型的lvs集羣,並在RS上安裝Discuz論壇

實驗環境:四臺虛擬機,安裝的操作系統是CentOS6.5,各自的功能及IP地址如下:

Director: 

    eth0 192.168.2.1(作爲VIP使用),eth1:10.0.0.1(作爲DIP使用)

RS1:

    eth0:10.0.0.2

RS2:

    eth0:10.0.0.3

數據庫服務器:安裝的mariadb

    eth0:10.0.0.4

拓撲圖:

    wKiom1QHJuzzhEUrAAPkT1hkdjo705.jpg實驗步驟:

    一準備數據庫服務器,安裝mariadb,創建一個用於遠程連接數據庫的用戶,創建一個數據庫,用於兩臺RS服務器連接時使用,授權給該用戶對應的數據庫所有權限。

MariaDB [(none)]> CREATE USER cluster@'10.%.%.%' IDENTIFIED BY 'cluster';
MariaDB [(none)]> CREATE DATABASE cluster;
MariaDB [(none)]> GRANT ALL ON cluster.* TO 'cluster'@'10.%.%.%';
MariaDB [(none)]> FLUSH PRIVILEGES;

    二、準備兩臺RS服務器,這兩臺RS服務器都要提供httpd服務。將Discuz論壇安裝程序解壓後的目錄文件upload複製到/var/www/html/bbs目錄下,複製到其中一臺就可以,以RS1爲例。使用系統自帶的httpd

[root@node1 ~]# yum install -y php
[root@node1 ~]# yum install -y php-mysql
[root@node1 ~]# service httpd start
[root@node1 Discuz]# unzip Discuz_X2.5_SC_GBK.zip  #將解壓出來的upload目錄複製到/var/www/html目錄下
[root@node1 Discuz]# cp upload/ /var/www/html/bbs
[root@node1 Discuz]# cp upload/ /var/www/html/bbs^C
[root@node1 Discuz]# cd /var/www/html/bbs
[root@node1 bbs]# chmod -R 777 config/ data/ uc_client/ uc_server/

在RS1和RS2上都安裝xinetd並將rsync啓動爲服務,以便將/var/www/html目錄的內容做到同時同步的效果,以達到兩臺服務器上內容一致。編輯/etc/rsyncd.conf文件,內容爲:

# Global Settings
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
# Directory to be synced
[backup]
path = /var/www/html
ignore errors = yes
read only = no
write only = no
hosts allow = 10.0.0.0/8
hosts deny = *
list = true
uid = root
gid = root
auth users = backup_transfer
secrets file = /etc/rsyncd.passwd
[root@node2 ~]# echo "backup_transfer:redhat" > /etc/rsyncd.passwd  #這個文件用於認證另外一個節點推送數據時的用戶身份。
backup_transfer:redhat
[root@node2 ~]# echo "redhat" > /etc/rsyncd.passwd2 #這個文件用於向對方節點推送時在腳本中指定密碼文件,免去交互的過程。
[root@node2 ~]# chmod 600 /etc/rsyncd.passwd
[root@node2 ~]# chmod 600 /etc/rsyncd.passwd2
[root@node2 ~]# chkconfig rsync on
[root@node2 ~]# service xinetd start

提供腳本文件,以便在兩臺服務器中站點數據目錄內的文件發生變化時,可以自動推送文件。腳本的內容爲:

#!/bin/bash
#
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %w%f %e' -e modify,delete,create,attrib /var/www/html | while read file;
do
/usr/bin/rsync -vzrtopg --delete --progress /var/www/html/ [email protected]::backup --password-file=/etc/rsyncd.passwd2
echo "${files} was rsynced" >> /var/log/rsync.log 2>&1
done

腳本中定義的傳送IP爲對方服務器的IP地址,只需要修改這一點就可以,其他的配置可以完全一樣,就不再重複。

另外可以在站點根目錄下各添加index.html文件,簡單的在文件中寫入對應的主機名稱,之後方便在測試的時候查看director在調度的時候調度請求到不同的主機的效果。

由於是在虛擬機中模擬實驗,所以兩臺RS與Director之間的通信需要RS指向Director的DIP作爲網關。

[root@node1 ~]# route add default gw 10.0.0.1 #兩臺RS上都要設置。

三、設置Director

Director上配置了兩塊網卡一個作爲連接外網的網卡使用,即VIP:192.168.2.1,另外一塊網卡作爲內網的網關使用,IP地址爲10.0.0.1,另外要打開IP地址轉發功能,這樣在模擬的實驗環境中RS1和RS2纔可以和192.168.2.1正常通信:

[root@director ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@director ~]# ipvsadm -A -t 192.168.2.1:80 -s rr   #定義集羣服務
[root@director ~]# ipvsadm -a -t 192.168.2.1:80 -r 10.0.0.2 -m   #添加RS1
[root@director ~]# ipvsadm -a -t 192.168.2.1:80 -r 10.0.0.3 -m   #添加RS2

先在瀏覽器內測試默認主頁的效果:

wKioL1QHO1_ghvBAAAEE6j4obU8432.jpg

wKiom1QHQFmyJdibAAEc_-HGiOs675.jpg

四、安裝discuz,測試完畢後,先在集羣服務中刪除node2,在node1上安裝Discuz論壇,刪除的目的是爲了安裝過程中可以準確定位到node1上。在瀏覽器內輸入192.168.2.1/bbs安裝論壇,安裝完畢後,再將node1在集羣服務中添加進來。

#[root@director ~]# ipvsadm -d -t 192.168.2.1:80 -r 10.0.0.3

wKiom1QHSCLS9pIwAARCDujZGVk495.jpg

wKioL1QHSEPQd5ShAAGshVUl_S8187.jpg

wKiom1QHSGTg4h-SAAFZ-AfNokY887.jpg

wKioL1QHSMmiwzCHAAG3tDYWl-Y544.jpg

wKioL1QHSPPSIORxAAHVPCsI8wU554.jpg

在node1上安裝完discuz以後,啓動rsync的腳本文件,然後向node2上同步數據文件,同樣,node2上也啓動腳本文件,以便以後有數據更新時向node1同步。

[root@node1 ~]# ./rsync.sh &

將node2添加進集羣服務中,這樣director可以調度用戶請求到不同的RS上。

[root@director ~]# ipvsadm -a  -t 192.168.2.1:80 -r 10.0.0.3

因爲會話信息是保存在服務器端的,而兩臺RS之間開啓了雙方Rsync同步,所以會話數據信息也會同步成一致的。

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