Linux Cluster
LB(負載均衡集羣)
負載均衡集羣,通常有兩種實現方式,基於硬件或基於軟件。
基於硬件:BIP
基於軟件:
基於OSI第四層傳輸層:LVS(Linux Virtual Server)
基於OSI第期層傳輸層:nginx
1.LVS
1.1認識LVS
LVS,全稱Linux Virtual Server,由國人章文嵩博士提出並實現。
LVS有三種工作模式:DR直接路由模式、NAT地址轉換模式、TUN隧道模式
2.基於LVS搭建 LB Linux Cluster
2.1 LVS的NAT模式實現
2.1.1 實驗拓撲圖
2.1.2 實驗簡介
Director具備兩張網卡,一張連接外網,一張連接內網中的realserver。
realserver單網卡配置內網IP,運行http服務,掛上簡單的測試web。
2.1.3 實驗準備
物理機上安裝virtualbox軟件上創建一臺centos5.5,最小化安裝即可,作爲Director。
桌面可裝可不裝,使用6.X,7.X也是可以的,這裏使用centos5.5是因爲my computer才8G內存
virtualbox的虛擬介質管理,複製2臺剛纔安裝好的centos5.5硬盤,明明爲realserver1,realserver2
新建虛擬機作爲realserver時,選擇存儲介質選擇現有的磁盤,路徑指向剛纔複製的centos5.5
2.1.4 實驗步驟
0).ipvs在2.6.X版本後的內核中默認安裝有,我們需要安裝ipvsadm進行管理,
**注意:ipvsadm與iptables不能同時使用,實驗前需關閉iptables與selinux**
關閉iptables:
setup
或:
service iptables stop #停止iptables服務
chkconfig iptables off #iptables開機不自啓
關閉selinux:
setup
或:
vim /etc/sysconfig/selinux #修改selinux的配置文件
SELINUX=disabled #將SELINUX等號右邊的值修改爲disabled
1).Director設置雙網卡,外網網卡選擇橋接模式,內網網卡選擇host-only模式
2).爲Director安裝ipvsadm
yum -y install ipvsadm
檢查是否安裝成功只需輸入ipvsadm,無輸出則未安裝有,若已安裝則輸出如下字樣
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
3).配置director的IP地址,啓動realserver,網卡模式選擇host-only並配置IP地址,realserver網關指向director的內網IP
4).配置測試網頁
爲每臺realserver安裝http,並啓動httpd服務
yum install http
service httpd start
echo "this is realserver1 test web" > /var/www/html/index.html
echo "this is realserver2 test web" > /var/www/html/index.html
echo "this is realserver3 test web" > /var/www/html/index.html
#分別創建測試頁
curl http://ipaddress #訪問測試頁
5).配置ipvsadm規則
在director上配置
ipvsadm -A -t 192.168.8.28:80 -s rr #添加集羣服務 tcp服務類型 服務的ip與端口號 使用調度算法爲 rr
ipvsadm -a -t 192.168.8.28:80 -r 192.168.56.102 -m #添加服務器,工作模式爲NAT
ipvsadm -a -t 192.168.8.28:80 -r 192.168.56.103 -m
ipvsadm -a -t 192.168.8.28:80 -r 192.168.56.104 -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 192.168.8.28:80 rr
-> 192.168.56.103:80 Masq 1 0 0
-> 192.168.56.102:80 Masq 1 0 0
6).測試
在director打開網卡轉發
echo 1 > /proc/sys/net/ipv4/ip_forward #默認爲0,不打開網卡轉發
使用物理機的瀏覽器輸入http://director的ip地址
不斷刷新即可看到效果
3.注意事項
在集羣中服務器與director之間的時間誤差不能超過一秒
解決辦法:
辦法一:運行ntp服務,與網絡上的ntp服務器進行時間同步即可
service ntpd start
辦法二:把director當作時間服務器使realserver與director進行時間同步
director運行service ntpd start
realserver運行ntpd directorIP,如ntpd 192.168.56.101
4.ipvsadm命令的用法
-A --add-service 在內核的虛擬服務器表中添加一條新的虛擬服務器記錄。
-E --edit-service 編輯內核虛擬服務器表中的一條虛擬服務器記錄。
-D --delete-service 刪除內核虛擬服務器表中的一條虛擬服務器記錄。
-C --clear 清除內核虛擬服務器表中的所有記錄。
-R --restore 恢復虛擬服務器規則
-S --save 保存虛擬服務器規則,輸出爲-R 選項可讀的格式
-a --add-server 在內核虛擬服務器表的一條記錄裏添加一條新的真實服務器記錄。
-e --edit-server 編輯一條虛擬服務器記錄中的某條真實服務器記錄
-d --delete-server 刪除一條虛擬服務器記錄中的某條真實服務器記錄
-L|-l --list 顯示內核虛擬服務器表
-t --tcp-service service-address 說明虛擬服務器提供的是tcp
-u --udp-service service-address 說明虛擬服務器提供的是udp
-s --scheduler scheduler 使用的調度算法,有這樣幾個選項rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默認的調度算法是: wlc.
#本節ipvsadm的用法來自http://linux.51yip.com/
5.常見的調度算法
director收到用戶請求後,需要通過一定的調度算法來決定將請求分發給那臺realserver處理。
分爲動態調度與靜態調度,靜態調度爲 rr wrr,不考慮服務器性能與當前連接數,將請求輪流分發;
動態調度爲wlc|lblc|lblcr|dh|sh|sed|nq,若不指定調度算法默認爲wlc,一句當前服務器的
性能當前連接數與權重,進行運算,將用戶請求分給相對較爲空閒的realserver。