lvs應用

練習:負載均衡一個php應用:

測試是否需要會話保持;

是否需要用到共享存儲;

   為了檢測是否需要會話保持和共享存儲,要在兩臺主機上分別配置LAMP環境;這樣就使得兩者之間沒有了共享存儲;負載均衡使用nat模型的wlc算法,并且不使用lvs的長連接選項。數據庫故意使用了相同的賬號密碼來進行安裝。

步驟一:配置環境:

使用yum分別安裝兩臺主機的環境,分別安裝Discuz論壇;

blob.png

blob.png

此種方式可以在安裝的時候就會發現,因為沒有會話保持,每次安裝的下一步都可以正確使用,但是安裝之后就不能正常訪問了,每次刷新頁面都會報錯,是如下兩個頁面的來回切換:

blob.png

blob.png

而第一張圖片的錯誤應該是刷新到了沒有安裝論壇的主機,而第二張雖然能夠訪問,但是連接數據庫出現了錯誤,因為點擊登錄并不能登錄成功。我們再打開一個新的頁面進行訪問,結果還是相同。

我們重新負載均衡,這時使用會話保持的非共享存儲:使用lvs自帶的保持連接機制:

[root@localhost ~]# ipvsadm  -E -t 10.1.49.11:80  -p 360
[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.49.11:80 wlc persistent 360
  -> 192.168.49.2:80              Masq    1      0          0         
  -> 192.168.49.3:80              Masq    1      0          0

重新安裝:

blob.png

訪問正常,發表一個帖子,查看也正常。但是此時很明顯另一臺主機并沒有安裝discuz,并且數據庫相互獨立。我們將另一臺主機安裝discuz,查看效果:

blob.png

可以正常訪問,但是可以看到我們在另一臺主機上發表的一個帖子,在此主機上并不能看得到,這對于用戶來說并不是想要的結果。因此我們需要共享存儲,利用nas、san、ds等等或者主從復制等方法將數據庫同步,才可以使用,如下圖所示:

blob.png

blob.png

  當使用了共享存儲,但沒有會話保持的時候:登錄之后,確實能夠看到同樣的內容,但是因為沒有會話保持,登錄之后刷新,登錄就會斷開,也會影響用戶體驗,類似于在淘寶上面買東西,從登錄=》拍得東西=》添加地址=》付款,這是一個一系列的過程,也可以理解成一次操作過程,所有這一系列的操作過程都應當由一臺服務器完成,而不能被負載均衡器分配到不同的服務器上。

 

課后作業dr模型中vipdip/rip不在同一個網段的實驗環境設計及配置實現;

 

先配置VIPDIP/RIP在同一網段的情況,此時兩臺RS主機的網關指向的是10.1.0.1,響應報文會從交換機發送出去。

blob.png

而在配置不同網段的情況下,可以將RIP的網關指向其它路由器,從而從另一個途徑直接發給用戶,其源地址是VIP,目標地址是CIP。如下圖:

blob.png

步驟一:配置準備,此處使用一臺客戶端,一臺Director和兩臺RS

同步時間

[root@localhost ~]# ntpdate 10.1.0.1

centos7中:

[root@localhost ~]# vim /etc/chrony.conf

blob.png

重啟服務:

[root@localhost ~]# systemctl restart chronyd.service 
[root@localhost ~]# date
2016年 10月 26日 星期三 22:13:42 CST

打開Director的核心轉發功能:

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

更改兩臺RS的內核參數及網卡,此處使用腳本更改:

[root@localhost ~]# cat set.sh 
#!/bin/bash
#
vip=10.1.49.49
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"
exit 1
;;
esac

將網卡改為同一網段,并執行腳本:

blob.png

blob.png

Director上創建DR模型,使用腳本:

[root@localhost ~]# cat rs.sh 
#!/bin/bash
#
vip='10.1.49.49'
iface='eno16777736:0'
mask=255.255.255.255
port='80'
rs1='10.1.252.28'
rs2='10.1.49.10'
scheduler='wrr'
type='-g'
 
case $1 in
start)
ifconfig $iface $vip netmask $mask broadcast $vip up #Director上直接配置別名,使用VIP
iptables -F 
ipvsadm -A -t $vip:$port -s $scheduler
ipvsadm -a -t $vip:$port -r $rs1 $type -w 1
ipvsadm -a -t $vip:$port -r $rs2 $type -w 1
;;
stop)
ipvsadm -C 
ifconfig $iface down 
;;
*)
echo "usage"
exit 1
;;
esac
[root@localhost ~]# ipvsadm -ln 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.49.49:80 wrr
  -> 10.1.49.10:80                Route   1      0          0         
  -> 10.1.252.28:80               Route   1      0          0

檢測結果:

blob.png

blob.png

[root@localhost ~]# for i in {1..10}; do curl http://10.1.49.49/index.html; done 
RS1
RS2
RS1
RS2
RS1
RS2
RS1
RS2
RS1
RS2

練習三:使用rsync+inotify實現數據同步;

 

(1)實驗拓撲圖:

blob.png

(2)實驗目的:主機client創建有/data/tom/data/jerry的非空目錄并擔任客戶端角色,結合inotify-tools工具;server1server2主機分別創建有/data/test1/data/test2并擔任rsync的服務器。本實驗驗證當clent的目錄內容發生變化時,能否實時同步到服務器端的目錄中。

(3)rsync特性:

可以鏡像備份整個目錄樹或者文件系統。

可以借助于rcpremote file copy)、rshremote shell)、sshsecure shell)傳輸文件,又可以通過sockets直接連接傳輸。

基于增量備份機制,有較高的同步效率。

支持匿名和認證的進程模式傳輸,方便數據傳輸與鏡像。

可以指定排除同步部分目錄或文件。

支持拷貝設備文件、鏈接等特殊文件。

文件或目錄的拷貝可以保留其權限、時間戳、軟硬鏈接等所有屬性。

(4)配置實驗環境:

yum安裝rsyncinotify。

服務端:

[root@localhost ~]# service xinetd start 
正在啟動 xinetd:                                          [確定]
[root@localhost ~]# chkconfig rsync on 
[root@localhost ~]# chkconfig --list | grep rsync 
rsync:          啟用

centos6rsync安裝好之后沒有自己的配置文件,我們需要手動創建配置文件:

[root@localhost ~]# cat /etc/rsyncd.conf
 uid = root
 gid = root
 use chroot = no
 max connections = 20
 pid file = /var/run/rsyncd.pid
 log file = /var/log/rsyncd.log
 lock file = /var/run/rsync.lock
 timeout = 900
[data]
path = /data/tom
ignore errors
read only = false
list = false 
hosts allow = 10.1.49.11/24
auth users = backuser
secrets file = /etc/rsync.passwd

rsync命令:

 rsync [option]SRC [SRC]DEST [DEST]

          optionrsync能夠使用的選項,如下

            -n : 同步測試,不執行同步    

            -v :  verbose,詳細輸出模式,顯示詳細過程    

            -q : quiet,靜默模式,盡可能輸出少的信息    

            -c : checksum,可以對傳輸的文件進行較驗的,強制對文件傳輸進行校驗    

            -r  : recursive,遞歸復制    

            -p : perms,保存文件的權限    

            -t  : times,保留文件的時間戳    

            -l  : links,保留文件的符號鏈接    

            -g : group,保留文件的屬組    

            -o : owner,保留文件的屬主    

            -D : devices,保留設備文件

            -A : acls,保留acl訪問控制列表

            -a : archives歸檔,復制時可以保存原有的屬主屬主等屬性信息,甚至包括一點額外的屬性。等同于-rlptgoD    

            -e SSH : 遠程復制時,表示使用ssh協議作承載。如果ssh端口不是22,可以用-e ssh -p 22   

            -z : 基于網絡時使用,對文件壓縮后傳輸   

            progress : 顯示壓縮進度條的,簡寫-P   

            stats : 顯示如何執行壓縮和傳輸的,也就是顯示傳輸狀態的

(5)inotify,linux內核版本2.6.13以及更新版本支持,提供強大的文件系統監控,通過打開一個獨立的文件描述符并以此監控一個或則多個文件的打開、關閉、移動/重命名、刪除創建或者改變屬性的事件。由于notify是內核功能,因此需要使用時,需要通過其接口程序inotify-tools接口程序調取使用。inotify-tools是基于linux平臺為inotify的提供的C語言開發的接口工具,并提供一系列命令行工具并利用這些工具監控文件系統的事件。

(6)建立rsync用戶名和密碼文件,并更改權限:

[root@localhost ~]# echo "backuser:123" >> /etc/rsync.passwd
[root@localhost ~]# chmod 600 /etc/rsync.passwd

以上,服務器端配置完成。

(7)客戶端配置:

[root@localhost ~]# echo "123" > /etc/rsync.passwd
[root@localhost ~]# chmod 600 /etc/rsync.passwd

配置inotify:

[root@localhost ~]# yum install inotify-tools

(8)添加腳本:此處只寫了一臺服務器,兩臺以上服務器可以使用for循環執行:

[root@localhost ~]# cat inotify.sh
#!/bin/bash
#
src=/data/tom
des=data
ip=10.1.49.10
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e modify,delete,create,attrib
$src | while read file do
rsync -avzP --delete --progress $src backuser@$ip::$des --password-file=/etc/rsync.passwd
echo "$src was rsynced"
done

注意文件名及變量的書寫。

執行腳本:

[root@localhost ~]# bash inotify.sh &

此處的腳本在測試時會顯示同步過程,是為了檢測錯誤方便;在實際中可以將結果重定向至/dev/null。

(9)測試,此處只測試一個服務器:在客戶端的tom目錄下創建文件:

[root@localhost tom]# touch asdf
[root@localhost tom]# sending incremental file list
tom/
tom/asdf
  0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=1/3)
tom/asdfasdf
  0 100%    0.00kB/s    0:00:00 (xfer#2, to-check=0/3)
sent 144 bytes  received 50 bytes  388.00 bytes/sec
total size is 0  speedup is 0.00
/data/tom was rsynced
/data/tom was rsynced

在服務端查看:

[root@localhost tom]# ls
tom
[root@localhost tom]# cd tom/
[root@localhost tom]# ls
asdf  asdfasdf

確實能夠同步成功,但是此處做的還有不足。

在服務器端可以看出,同步的目錄在tom下又新建了一個tom目錄,說明兩者的配置中的目錄并不是同層的。此處的改進,可使服務器端的配置文件中的目錄更改為path=/data,這樣就可以同步至/data目錄下了。也可以將腳本中的src=/data/tom,更改為/data。

原創文章,作者:SilencePavilion,如若轉載,請注明出處:http://www.www58058.com/56513

(0)
SilencePavilionSilencePavilion
上一篇 2016-11-11
下一篇 2016-11-11

相關推薦

  • OSI參考模型與TCP/IP參考模型的比較

    OSI參考模型與TCP/IP參考模型的比較 OSI參考模型 OSI參考模型是ISO的建議,它是為了使各層上的協議國際標準化而發展起來的。OSI參考模型全稱是開放系統互連參考模型(Open System Interconnection Reference Model)。這一參考模型共分為七層:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。 物理層…

    Linux干貨 2017-05-07
  • N21沉舟13周作業

    1、建立samba共享,共享目錄為/data,要求:(描述完整的過程)   1)共享名為shared,工作組為magedu;   2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為用戶名;   3)添加s…

    Linux干貨 2016-10-24
  • lvs實踐(lvs+nginx+mariadb+php—fpm+nfs搭建wordpress)

    lvs實踐(lvs+nginx+mariadb+php—fpm+nfs搭建wordpress)   lvs實踐(lvs+nginx+mariadb+php—fpm+nfs搭建wordpress) lvs_dr模型 nginx mariadb php-fpm wordpress   lvs實踐(lvs+nginx+mariadb+php—f…

    2017-01-03
  • linux基礎知識之nmcli

           CentOS7才有的功能網絡組:將多塊網卡聚合在一起的方法,從而實現冗錯和提高吞吐量        網絡組不同于舊版中的bonding技術,提供了更好的性能和擴展性        網路組由內核驅動和teamd守護進程實現 &n…

    Linux干貨 2016-09-07
  • ?Nginx

    Nginx 概述 yum安裝Nginx 編譯安裝Nginx 主要文件路徑 主配置文件nginx.conf main block:全局配置段 http/https 協議相關配置段 性能優化初步 調試、定位問題的配置 events段配置 worker、method、accept_mutex http協議相關配置段 虛擬主機 基于PORT、IP、Server Na…

    Linux干貨 2016-10-24
  • 馬哥教育網絡班20期+第二周課程練習

    linux 中一切皆文件,我們所做的一切都是和文件打交道。   文件分為兩部分:元數據和數據           元數據: 即真實數據的屬性??捎?stat  命令查看       &nbs…

    Linux干貨 2016-06-23
欧美性久久久久