一:集羣的定義
集羣(cluster)技術是一種較新的技術,通過集羣技術,可以在付出較低成本的情況下獲得在性能、可靠性、靈活性方面的相對較高的收益,其任務調度則是集羣系統中的核心技術。集羣是一組相互獨立的、通過高速網絡互聯的計算機,它們構成了一個組,並以單一系統的模式加以管理。一個客戶與集羣相互作用時,集羣像是一個獨立的服務器。集羣配置是用於提高可用性和可縮放性。集羣系統的主要優點:高可擴展性、高可用性、高性能、高性價比。
二、集羣類型
1.scale on:向上擴展
將服務器的內存容量調大和cpu數量增加些(簡單說升級服務器硬件)
缺點:在一定的範圍之內它的性能是上升的趨勢,但是超出範圍之後就是下降的趨勢。因爲隨着它的cpu的個數增加我們需要給我們的cpu仲裁,而且隨着cpu個數的增加資源競爭性越大。
2.scale out:向外擴展
一臺服務器應付不過來,我們就再增加一臺服務器。
優點:增減服務器很方便,而且沒有向上擴展隨着增加性能下降。
向外擴張的工作模式:當客戶端向服務器端發送請求,服務器端只拿出來一臺服務器來相應我們的客戶端的請求。
(1).LB:Load Balancing:負載均衡集羣
負載均衡集羣中有一個分發器或者叫調度器,我們將其稱之爲Director,它處在多臺服務器的上面,分發器根據內部鎖 定義的規則或調度方式從下面的服務器羣中選擇一個以此來響應客戶端發送的請求。
(2).HA:High Availability 高可用集羣
高可用集羣是服務的可用性比較高,當我們某臺服務器死機後不會造成我們的服務不可用。其工作模式則是將一個具有故障的服務轉交給一個正常工作的服務器,從而達到服務不會中斷。一般來說我們集羣中工作在前端(分發器)的服務器都會對我們的後端服務器做一個健康檢查,如果發現我們服務器當機就不會對其在做轉發。
衡量標準:可用性=在線時間/(在線時間+故障處理時間)
99%、99.9%、99.99%、99.999%
(3).HP:Hight Performance 高性能
高性能的集羣是當某一個任務量非常大的時候,我們做一個集羣共同來完成這一個任務。這種處理方式我們稱爲並行處理集羣,並行處理集羣是將大任務劃分爲小任務,分別進行處理的機制。一般這樣的集羣用來科學研究與大數據運算等方面的工作。現在比較火的Hadoop就是使用的並行處理集羣。
說明:三種集羣之間的區別
負載均衡着重在於提供服務併發處理能力的集羣,高可用以提升服務在線的能力的集羣。高性能着重用於處理一個海量任務。
三:LB負載均衡的NAT和DR模型。
術語解釋
.LVS中每個主機IP地址的定義
VIP:Director用來向客戶端提供服務的IP地址,也是DNS解析的IP
RIP:集羣節點(後臺真正提供服務的服務器)所使用的IP地址
DIP:Director用來和RIP進行交互的IP地址
CIP:公網IP,客戶端使用的I
1)NAT模型
集羣節點跟director必須在同一個網段上面
RIP通常是私有地址,僅用於個集羣
支持口映射
realsever可以使用任意OS(操作系統)
較大規模應用場景中director已成爲系統瓶頸
notice:負載均衡調度器內網絡轉發要打開cat /proc/sys/net/ipv4/ip_forward
2)DR模型
集羣節點跟director必須在同一個物理網絡中
RIP可以使用公網地址(一般不這樣用).實現便捷的遠程控制服務器
RIP可以使用私網地址,通過NAT轉換經路由器轉發出去。
director只負責處理入站請求,相應報文則有realserver直接發往客戶端
realserver不能將網關指向DIP(減輕director的服務壓力)
director不支持端口映射
大多數操作系統都能應用在real server上
DR比NAT能處理更多的real server
一:實驗目的
利用LVS的NAT模型實現discuz負載均衡
二:實驗拓撲圖
WEB服務器與PHP服務器在同一網段內,mysql服務器同時起着LVS負載均擔作用。
三:搭建WEB服務器
本次WEB服務器採用編譯安裝服務,編譯過程請參考LAMP平臺編譯。接下來配置WEB服務器主配置文件。
vim /etc/httpd24/extra/httpd-vhosts.conf #前面的路徑爲編譯時指定的路徑。 ifconfig eth0 192.168.1.16/24 up #修改主機的IP地址 ifconfig eth0:0 192.168.1.17/24 up route add defauit gw 192.168.1.1 #添加默認路由 <VirtualHost 192.168.1.16:80> #虛擬主機一 DocumentRoot "/mnt/web" ServerName www.llhdiscuz.com ProxyRequests Off ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.1.2:9000/nfs/web/$1 #指向PHP服務器 ErrorLog "logs/pma_error_log" CustomLog "logs/pma_access_log" common <Directory "/mnt/web"> Options none AllowOverride none Require all granted </Directory> </VirtualHost> <VirtualHost 192.168.1.17:80> #虛擬主機二 DocumentRoot "/mnt/web" ServerName www.llhdiscuz.com ProxyRequests Off ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.1.2:9000/nfs/web/$1 #指向PHP服務器 ErrorLog "logs/pma_error_log" CustomLog "logs/pma_access_log" common <Directory "/mnt/web"> Require all granted </Directory> </VirtualHost>
2)要想啓用web服務器的虛擬主機功能需要打開主配置文件相應的模塊。
vim /etc/httpd24/httpd.conf Include /etc/httpd24/extra/httpd-vhosts.conf #啓用此模塊
四:搭建PHP服務器
因爲此次編譯安裝的PHP服務器是在單獨的一臺主機上,所以編譯安裝的模塊選擇中要把--enable-fpm模塊編譯上去。如果使用PHP5.3以上版本,爲了鏈接MySQL數據庫,可以指定mysqlnd,這樣在本機就不需要先安裝MySQL或MySQL開發包了。mysqlnd從php 5.3開始可用,可以編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定形成依賴),從PHP 5.4開始它就是默認設置了。其他的編譯過程請參考LAMP平臺編輯博客。
由於本次編譯啓動了fpm模塊,要提供fpm配置文件。
1)配置php-fpm 爲php-fpm提供SysV init腳本,並將其添加至服務列表: # cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm # chmod +x /etc/rc.d/init.d/php-fpm # chkconfig --add php-fpm # chkconfig php-fpm on 2)爲php-fpm提供配置文件: # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf 編輯php-fpm的配置文件: # vim /usr/local/php/etc/php-fpm.conf 3)配置fpm的相關選項爲你所需要的值,並啓用pid文件(如下最後一行): pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 8 pid = /usr/local/php/var/run/php-fpm.pid listen = 192.168.1.2:9000 #修改Mysql的監聽IP地址 ifconfig eth0 192.168.1.2/24 up #修改主機的IP地址 route add default gw 192.168.1.1 #添加默認路由
五:提供NFS服務器
打開NFS主配置文件
vim /etc/exports /nfs/web 192.168.1.16(no_root_squash,rw,no_all_squash)192.168.1.17(no_root_squash,rw,no_a ll_squash) 192.168.1.2(no_root_squash,rw,no_all_squash) #172.16.16.2 爲NFS文件服務器 #在web服務器上和PHP服務器上掛載NFS文件服務 mount -t nfs 172.16.16.2:/nfs/web /mnt/web 在web服務器上掛載 mount -t nfs 172.16.16.2:/nfs/web /nfs/web 在PHP服務器上掛載
六:搭建mysql服務器
mysql搭建請參考編譯安裝LAMP博客
七:提供LVS服務
yum -y install ipvsadm #安裝ipvs ipvsadm -A -t 172.16.16.2:80 -s rr ipvsadm -a -t 172.16.16.2:80 -r 192.168.1.16 -m ipvsadm -a -t 172.16.16.2:80 -r 192.168.1.17 -m 查看配置信息 [root@localhost ~]# 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.16.2:80 rr -> 192.168.1.16:80 Masq 1 0 0 -> 192.168.1.17:80 Masq 1 0 0
一:實驗目的
利用DR模型實現discuz負載均衡
二:實驗拓撲圖
1)配置director服務器
director服務器上安裝兩塊網卡一塊位eth0他的IP地址爲VIP:172.16.16.2,另一塊的IP地址爲DIP:192.168.1.13
ifconfig eth0 172.16.16.2/16 up ifconfig eth1 192.168.1.13/24 up sysctl -p #查看net.ipv4.ip_forward是否爲1.
2)配置RIP1服務
因爲RIP服務器配置的有VIP地址所以外面有請求VIP時他也會進行相應,而我們這裏是爲了實現DR轉發,不能讓他進行響應,我們需要對RIP的端口信息進行隱藏。 echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore #忽略其他端口發來的請求信息 echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce #不廣播自己的端口信息 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce ifconfig eth0 192.168.1.16/24 up ifconfig lo:0 172.16.16.2 netmask 255.255.255.255 broadcast 172.16.16.2 route add -host 172.16.16.2 dev lo:0 響應的信息通過lo:0端口 ,爲了使響應的IP地址爲VIP
3)配置RIP2服務
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore #忽略其他端口發來的請求信息 echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce #不廣播自己的端口信息 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce ifconfig eth0 192.168.1.2/24 up ifconfig lo:0 172.16.16.2 netmask 255.255.255.255 broadcast 172.16.16.2 route add -host 172.16.16.2 dev lo:0 響應的信息通過lo:0端口 ,爲了使響應的IP地址爲VIP
4)打開兩個RIP內的WEB服務
service httpd start ss -tnl #查看80端口是否已經啓動 給RIP1一個測試網頁 vim /var/www/html/index.html <h1> www.helloword.com </h1> #給RIP1一個測試頁面 curl http://172.16.16.2 #測試一下能否訪問 給RIP2一個測試網頁 vim /var/www/html/index.html <h1> helloword </h1> #給RIP2一個測試頁面 curl http://172.16.16.2
5) 配置DR協議
在dr服務器上配置如下信息 ipvsadm -A -t 172.16.16.2:80 -s rr ipvsadm -a -t 172.16.16.2:80 -r 192.168.1.16 -g ipvsadm -a -t 172.16.16.2:80 -r 192.168.1.2 -g [root@localhost ~]# 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.16.2:80 rr -> 192.168.1.2:80 Route 1 0 0 -> 192.168.1.16:80 Route 1 0 0
三:測試訪問
OK 我們的LVS基於NAT模型和DR模型試驗做好了。