成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

開源企業(yè)級web高并發(fā)解決方案

開源企業(yè)級web 高并發(fā)解決方案主要介紹利用開源的解決方案,來為企業(yè)搭建web 高并發(fā)服務(wù)器架構(gòu)花了一個多小時,畫了張圖片,希望能先幫你理解整個架構(gòu),之后我在一一介紹.linux 的大型架構(gòu)其實是一點

開源企業(yè)級web 高并發(fā)解決方案

主要介紹利用開源的解決方案,來為企業(yè)搭建web 高并發(fā)服務(wù)器架構(gòu)花了一個多小時,畫了張圖片,希望能先幫你理解整個架構(gòu),之后我在一一介紹.linux 的大型架構(gòu)其實是一點點小架構(gòu)拼接起來的,筆者從各個應(yīng)用開始配置,最后在完全整合起來,以實現(xiàn)效果。

筆者所使用的環(huán)境為RHEL5.4 內(nèi)核版本2.6.18 實現(xiàn)過程在虛擬機中,所用到的安裝包為DVD 光盤自帶rpm 包

裝過 Development Libraries Development Tools 包組

筆者所使用的環(huán)境為RHEL5.4 內(nèi)核版本2.6.18 實現(xiàn)過程在虛擬機中,所用到的安裝包為DVD 光盤自帶rpm 包

裝過 Development Libraries Development Tools 包組

筆者虛擬機有限,只演示單邊varnish 配置

一、配置前端LVS 負載均衡

筆者選用LVS 的DR 模型來實現(xiàn)集群架構(gòu),如果對DR 模型不太了了解的朋友建議先去看看相關(guān)資料。

本模型實例圖為:

,

現(xiàn)在director

上安裝ipvsadm ,筆者yum 配置指向有集群源所以直接用yum 安裝。 yum install ipvsadm

下面是Director 配置:

DIP 配置在接口上 172.16.100.10

VIP 配置在接口別名上:172.16.100.1

varnish 服務(wù)器配置:RIP 配置在接口上:172.16.100.11 ;VIP 配置在lo 別名上

如果你要用到下面的heartbeat 的ldirectord 來實現(xiàn)資源轉(zhuǎn)換,則下面的#Director配置不用配置

1. # Director配置

2. ifconfig eth0 172.16.100.10/16

3. ifconfig eth0:0 172.16.100.1 broadcast 172.16.100.1 netmask 255.25

5.255.255 up

4. route add -host 172.16.100.1 dev eth0:0

,

5. echo 1 > /proc/sys/net/ipv4/ip_forward

1. # varnish服務(wù)器修改內(nèi)核參數(shù)來禁止響應(yīng)對VIP 的ARP 廣播請求

2. echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

3. echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

4. echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

5. echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

1. # 配置VIP

2. ifconfig lo:0 172.16.100.1 broadcast 172.16.100.1 netmask 255.255.

255.255 up

3. # 凡是到172.16.100.1主機的一律使用lo:0響應(yīng)

4. route add -host 172.16.100.1 dev lo:0

1. # 在Director 上配置Ipvs ,筆者虛擬機有限,只演示單臺配置

2. ipvsadm -A -t 172.16.100.1:80 -s wlc

3. ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.11 -g -w 2

4. ipvsadm -Ln

至此,前端lvs 負載均衡基本實現(xiàn),下面配置高可用集群 二、heartbeat 高可用集群

本應(yīng)用模型圖:

,

高可用則是當主服務(wù)器出現(xiàn)故障,備用服務(wù)器會在最短時間內(nèi)代替其地位,并且保證服務(wù)不間斷。

簡單說明:從服務(wù)器和主服務(wù)器要有相同配置,才能在故障遷移時讓無界感受不到,從而保證服務(wù)不間斷運行。在你的兩臺機器(一臺 作為主節(jié)點,另一臺為從節(jié)點) 上運行

heartbeat, 并配置好相關(guān)的選項,最重要的是lvs 資源一定要配置進去。那么開始時主節(jié)點提供lvs 服務(wù),一旦主節(jié)點崩潰,那么從節(jié)點立即接管lvs 服務(wù)。

SO:

director 主服務(wù)器和從服務(wù)器都有兩塊網(wǎng)卡,一塊eth0是和后面varnish 服務(wù)器通信,另一塊eth1是彼此之間監(jiān)聽心跳信息和故障遷移是資源轉(zhuǎn)移。筆者用的eth0是172.16.100.0網(wǎng)段 vip為172.16.100.1 監(jiān)聽心跳為eth1網(wǎng)卡,主從的IP 分別為10.10.10.1(node1) 和10.10.10.2(node2)

修改上面模型圖兩臺主從服務(wù)器的信息

1. vim /etc/hosts

2. 10.10.10.1 node1.heartbeat.com node1

3. 10.10.10.2 node2.heartbeat.com node2

4. #用于實現(xiàn)兩臺director 節(jié)點間域名解析,此操作node1、node2相同

1. vim /etc/sysconfig/network

2. #設(shè)置主機名

3. hostname node1.heartbeat.com

4. #修改主機名使之立即生效,node2也同樣修改為node2.heartbeat.com

為了安全起見,node1和node2的通信需要加密進行

1.

2.

3.

4.

5.

6. ssh-keygen -t rsa #生成密鑰 ssh-copy-id -i .ssh/id_rsa.pub root@node2.heartbeat.com #將公鑰復(fù)制給node2 ssh node2 -- ifconfig #執(zhí)行命令測試,此時應(yīng)該顯示node2的ip 信息

,

準備工作完成,下面開始安裝heartbeat 和ldirectord

所需要的安裝包為

本人直接用yum 來實現(xiàn),能自動解決依賴關(guān)系 ,node1和node2都需要安裝

1. yum localinstall -y --nogpgcheck ./* 2. #安裝此目錄中的所有rpm 包

安裝后配置:

1. cd /usr/share/doc/heartbeat-2.1.4

2. cp authkeys /etc/ha.d/

3. cp haresources /etc/ha.d/

4. cp ha.cf /etc/ha.d/

5. #拷貝heartbeat 所需配置文件到指定目錄下

1. vim /etc/ha.d/ha.cf

2. bcast eth1

3. #定義心跳信息從那一塊網(wǎng)卡傳輸

4. node node1.heartbeat.com

5. node node2.heartbeat.com

6. #添加這兩行,用于指明心跳信號傳輸范圍

7. vim /etc/ha.d/authkeys

8. auth 2

9. 2 sha1 [鍵入隨機數(shù)]

10. chmod 400 authkeys

11. #保存退出并修改權(quán)限400

12. vim /etc/ha.d/haresource

13. node1.heartbeat.com 172.16.100.1/24/eth0/172.16.0.255 ldir

ectord::ldirectord.cf httpd

14. #末行添加主節(jié)點域名,vip 資源,廣播地址,ldirectord 資源,以及用戶提供顯示錯誤

頁面的httpd 資源

同步配置文件到node2

1. /usr/lib/heartbeat/ha_propagate

2. #腳本用來同步ha.cf 和authkeys 文件到node2

3. scp haresources node2:/etc/ha.d/

4.

#復(fù)制haresource 到nod2

,

配置ldirectord ,同步配置文件

1. cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/ldirectord

.cf

2. #復(fù)制ldirector 的配置文件

內(nèi)容如下配置

1. checktimeout =5

2. #當DR 收不到realserver 的回應(yīng),設(shè)定幾秒后判定realserver 當機或掛掉了,

預(yù)設(shè)5秒。

3. checkinterval =3

4. #查詢間隔,每個幾秒偵測一次realserver

5. autoreload =yes

6. #配置文件發(fā)生改變是否自動重讀

7. quiescent =yes

8. #靜態(tài)鏈接,yes :表示偵測realserver 宕機,將其權(quán)值至零(如果開啟了

persistent 參數(shù)不要用yes );no :表示偵測到宕機realserver ,隨即將其對應(yīng)條目從ipvsadm 中刪除。

9. virtual=172.16.100.1:80

10. real=172.16.100.11:80 gate 4

11. fallback =127.0.0.1:80 gate #realserver全部失敗,vip 指向本機

80端口。

12. service =http

13. request ="test.html" #用于健康檢測的url,realserver 的相對路徑

為var/www/html目錄

14. receive ="ok" #用于健康檢測的url 包含的關(guān)鍵字

15. scheduler =wlc

16. #persistent =600

17. #持久鏈接:表示600s 之內(nèi)同意ip 將訪問同一臺realserver

18. protocol =tcp

19. checktype =negotiate

20. #檢查類型:negotiate ,表示DR 發(fā)送請求,realserver 恢復(fù)特定字

符串才表示服務(wù)正常;connect ,表示DR 能夠連線realserver 即正常。

21. checkport =80

啟動兩個節(jié)點上的heartbeat

1. service heartbeat start

2. ssh node2 -- 'service heartbeat start'

3. #啟動兩節(jié)點heartbeat 服務(wù)

,

啟動后查看/var/log/messages

可以看到啟動過程,并可以手動執(zhí)行/usr/lib/heartbeat/

下的hb_standby 來釋放資源hb_takeover來爭奪資源

還可以通過ipvsadm -Ln 在主節(jié)點上查看lvs 的資源狀態(tài)

至此,帶狀態(tài)檢測的前端集群已經(jīng)布置完畢,下面就是varnish 緩存服務(wù)器和后端nginx 的web 應(yīng)用配置

三:varnish 緩存服務(wù)器

可以去varnish 的官網(wǎng)下載最新的源碼包,筆者為了便于演示,就用rpm 包了,(別鄙視我)

varnish 官網(wǎng)地址:http://www.varnish-cache.org/

我下的是最新的varnish-release-3.0-1.noarch.rpm

先rpm -ivh varnish-release-3.0-1.noarch.rpm

它的作用是給你yum 生成varnish 的倉庫,然后你在用yum 安裝varnish

yum install varnish

,

安裝好后配置文件為/etc/default.vcl

本人只實現(xiàn)基本功能,沒有對varnish 做優(yōu)化,所以配置比較簡單

配置完成后保存退出,需手動啟動

varnishd -f /etc/varnish/default.vcl -s malloc,128m -T 127.0.0.1:2000 -f etc/varnish/default.vcl -f 指定varnishd 使用哪個配置文件。

-s malloc,1G -s用來指定varnish 使用的存儲類型和存儲容量。我使用的是 malloc 類型(malloc 是一個 C 函數(shù),用于分配內(nèi)存空間), 1G 定義多少內(nèi)存被 malloced。

-T 127.0.0.1:2000 -T 指定varnish 的管理端口。Varnish 有一個基于文本的管理接口,啟動它的話可以在不停止 varnish 的情況下來管理 varnish。您可以指定管理軟件監(jiān)聽哪個接口。

-a 0.0.0.0:8080 指定varnish 所監(jiān)聽所有IP 發(fā)給80的http 請求。如果不指定-a ,則為默認監(jiān)聽0.0.0.0:

ps:先配置nginx 在配置varnish 可以直接測試效果,本人為了演示架構(gòu)層次,所以就一層一層的配置了,建議如果按我的順序做的話,后端web 服務(wù)器先用yum 裝上apache 方便測試。varnish 到此就配置成功。到此我在幫各位順一下思路

,

目前,如果你完全按照本文章做實驗,我們用了5臺服務(wù)器。

一臺director 它的vip 為172.16.100.1 DIP為172.16.100.10

與它實現(xiàn)高可用的從服務(wù)器vip 為172.16.100.1 DIP為 172.16.100.12

而這兩臺服務(wù)器都裝的有heartbeat 和ipvsadm 并通過ldirectord 把VIP 定義為資源,會自動流動,和自動添加ipvsadm 分發(fā)條目

在ipvsadm 中 定義的有一臺varnish 服務(wù)器 地址為172.16.100.11

varnish 緩存服務(wù)器在做反向代理時后端是兩臺web 服務(wù)器分別為

web1和web2 IP 分別為172.16.100.15和172.16.100.17 下圖幫你順下思路

四:nginx 服務(wù)器 php eAccelerator

(1)編譯安裝PHP 5.3.6所需的支持庫:

1. tar zxvf libiconv-1.13.1.tar.gz

2. cd libiconv-1.13.1/

3. ./configure --prefix=/usr/local

4. make

5. make install

6. cd ../

1. tar zxvf libmcrypt-2.5.8.tar.gz

2. cd libmcrypt-2.5.8/

3. ./configure

4. make

5. make install

,

6. /sbin/ldconfig

7. cd libltdl/

8. ./configure --enable-ltdl-install

9. make

10. make install

11. cd ../../

1. tar zxvf mhash-0.9.9.9.tar.gz

2. cd mhash-0.9.9.9/

3. ./configure

4. make

5. make install

6. cd ../

1. ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la

2. ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so

3. ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4

4. ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.

8

5. ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a

6. ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la

7. ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so

8. ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2

9. ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1

10. ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config

1. tar zxvf mcrypt-2.6.8.tar.gz

2. cd mcrypt-2.6.8/

3. /sbin/ldconfig

4. ./configure

5. make

6. make install

7. cd ../

1. cd php-5.3.6 ./configure --prefix=/usr/local/php-fcgi --enable-fpm --with-config-file-path=/usr/local/php-fcgi/etc

--enable-zend-multibyte --with-libxml-dir=/usr/local/libxml2 --with-gd --with-jpeg-dir --with-png-dir --with-bz2 --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-curl --with-mhash --with-openssl --enable-bcmath --with-mcrypt=/usr/local/libmcrypt --enable-sysvsem --enable-inline-optimization --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-debug --disable-ipv6

標簽: