集羣的分類:
1.)LB Load Balancing 負載均衡集羣
常見例子:LVS和piranha
2.)HA High Availability 高可用集羣
常見例子:heartbeat,keepalived和ultramokey
3.)HP High Performance 高性能集羣
常見例子:bowerful和drbd html
LVS的優勢:
1.)LVS具備更大的吞吐量
2.)LVS有冗餘設備和鏈路
3.)LVS有強大的擴展性和適應性算法
LVS的IP:
1.)VIP 虛擬IP,是一個公網IP ,外網用戶所見到的IP
2.)RIP realserver的IP
3.)DTP Director的IP
4.)CIP Client computer的IP瀏覽器
LVS的三種類型:
第一種,LVS-NAT
1.)real servers它們必須在同一個網段內
2.)RIP一般是私有IP
3.)Director將處理全部的會話、通訊(包括內網和外網交互的全部數據)
4.)real servers必須指定網關爲DIP
5.)Director可作端口重定向
6.)對操做系統不做要求
7.)Director極可能成爲瓶頸
第二種,LVS-DR
1.)real servers必須和Director在同一個網段內
2.)RIP能夠不是私有的
3.)Director只處理進來的通訊
4.)real servers不能以DIP爲網關
5.)大多數操做系統支持此模式
6.)當director壞掉時,realserver可做分佈式服務
第三種,LVS-TUN
1.)Director和real servers能夠在不一樣的網段內
2.)RIP不能是私有地址
3.)Director不能作端口重定向
4.)操做系統必須是雙方都支持隧道協議服務器
LVS的調度方法:
一.固定算法
1.)Round-robin rr 輪調
新的鏈接請求被輪流分配至各RealServer;算法的優勢是其簡潔性,它無需記錄當前全部鏈接的狀態,因此它是一種無狀態調度
2.)Weighted Round-robin wrr 加權輪調
3.)Destination hasing dh 目標地址散列調度
4.)Source hasing sh 源地址散列調度
在實際應用中,源地址散列調度和目標地址散列調度能夠結合使用在防火牆集羣中,它們能夠保證整個系統的惟一出入口
二.動態調度算法:跟蹤處於活動狀態和非活動狀態的連結;活動狀態連結處於TCP的ESTABLISHED狀態,非活動狀態連結是處於ESTABLISHED狀態;當非活動狀態連結超時時,則可引發鏈接斷開,但LVS保留狀態一段時間,保護了數據的完整應。
1.)Least-connection lc 最少鏈接次數
「當前鏈接數=256*活動鏈接數+非活動鏈接數」誰的當前鏈接數小就把下一次鏈接交給誰
2.)Weighted Least-connection wlc
「當前鏈接數=(256*活動鏈接數+非活動鏈接數)/權重」誰的當前鏈接數小就把下一次鏈接交給誰
3.)SED sed wlc的改進版,不加入非活動鏈接
「當前鏈接數=活動鏈接數/權重」誰的當前鏈接數小就把下一次鏈接交給誰
4.)NQ nq 不排隊算法
5.)LBLC lblc 基於局部性的最少連接調度
「動態的方式實現dh」
6.)LSLCR lblcr 帶複製的基於局部性最少連接調度
避免了某臺服務器過忙;若一臺服務器的工做量是另外一臺服務器的兩倍,則將不會使用lblc算法,而會把下一次鏈接交給工做量小的服務器網絡
三種重要的超時:
1.)空閒的TCP會話超時:處於TCP的ESTABLISHED狀態,不轉發數據包
2.)雙方正常斷開時的超時時間:使客戶端可以訪問幾分鐘以前訪問到的real server,應用於郵件系統、網購、論壇;默認超時時長爲30s
3.)UDP的超時時間:防止網絡抖動等問題引發客戶端訪問的real server發生改變負載均衡
LVS持續鏈接類型:
1.)PCC 客戶端持久鏈接;一個客戶端的全部服務請求都鏈接同一個real server
2.)PPC 服務端持久鏈接;客戶端訪問的同一個服務都被定義到同一個real server
3.)PNMPP 數據包持久鏈接;根據防火牆標記進行持久鏈接
4.)FTP connections 關於FTP的持久鏈接
5.)Expired persistence 過時持久鏈接tcp
關於ipvsadm:
ipvsadm是運行於用戶空間、用來與ipvs交互的命令行工具,它的做用表如今:
一、定義在Director上進行dispatching的服務(service),以及哪此服務器(server)用來提供此服務;
二、爲每臺同時提供某一種服務的服務器定義其權重(即概據服務器性能肯定的其承擔負載的能力);
ipvsadm的命令:
ipvsadm
-A 定義一個新服務
-C 清空虛擬服務表
-D 刪除一個服務
-R 從一個文件來恢復服務規則
-E 修改一個服務
-L 查看ipvsadm的規則
-S 保存ipvsadm的設置
-Z 清空計數器
-a 對服務添加一個realserver
-e 修改一條服務的規則
-t tcp協議 VIP:port
-u udp協議 VIP:port
-s 指定調度方法
-d 刪掉一條規則鏈
-f 防火牆標記
-x 請求鏈接的上限
-y 請求鏈接的下限分佈式
搭建一個LVS-NAT類型的LVS
在搭建LVS-NAT類型的LVS以前首先要準備4個虛擬機:Director、realserver一、realserver二、client。其中Director主機有兩塊網卡,其它主機只須要一塊網卡;Director的2個IP分別爲192.168.0.28和172.16.0.1,realserver1的IP分別爲172.16.0.2,realserver2的IP爲172.16.0.3,client的IP爲192.168.0.29
Director的配置:
1.)安裝ipvsadm
yum install ipvsadm
2.)配置防火牆
service iptables start
iptables -F
service iptables save
3.)配置ipvsadm
ipvsadm -A -t 192.168.0.28:80 -s wlc
ipvsadm -a -t 192.168.0.28:80 -r 172.16.0.2 -m -w 2
ipvsadm -a -t 192.168.0.28:80 -r 172.16.0.3 -m -w 1
realserver1的配置:
1.)裝上httpd服務,啓動httpd服務
yum install httpd
echo "realserver1" > /var/www/html/index.html
service httpd start
chkconfig httpd on
2.)配置IP地址,別忘了配置網關爲172.16.0.1
realserver2的配置:
1.)裝上httpd服務,啓動httpd服務
yum install httpd
echo "realserver1" > /var/www/html/index.html
service httpd start
chkconfig httpd on
2.)配置IP地址,別忘了配置網關爲172.16.0.1
測試:
1.)使用client在瀏覽器上輸入"http://192.168.0.28",打開網頁不斷刷新網頁
2.)在Director主機上輸入命令`watch -n 1 "ipvsadm -L -n"`進行監控ide
搭建一個LVS-DR類型的LVS
在搭建LVS-DR類型的LVS以前首先要準備4個虛擬機:Director、realserver一、realserver二、client。其中全部主機只須要一塊網卡;Director的IP爲192.168.0.27及VIP爲192.168.0.28,realserver1的IP分別爲192.168.0.1,realserver2的IP爲192.168.0.2,client的IP爲192.168.0.29
Director的配置:
1.)安裝ipvsadm
yum install ipvsadm
2.)配置防火牆
service iptables start
iptables -F
service iptables save
3.)設置eth0設備別名eth0:1的IP爲VIP
ifconfig eth0:1 192.168.0.28 broadcast 192.168.0.28 netmask 255.255.255.255
route add -host 192.168.0.28 dev eth0:1
4.)配置ipvsadm:
ipvsadm -A -t 192.168.0.28:80 -s wrr
ipvsadm -a -t 192.168.0.28:80 -r 192.168.0.1 -w 5 -g
ipvsadm -a -t 192.168.0.28:80 -r 192.168.0.2 -w 50 -g工具
realserver1的配置:
1.)重啓lo迴環網卡
ifdown lo
ifup lo
2.)修改arp_ignore和arp_announce的限制級別
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
3.)在迴環網卡上建立別名爲VIP
ifconfig lo:0 192.168.0.28 broadcast 192.168.0.28 netmask 255.255.255.255 up
route add -host 192.168.0.28 dev lo:0
realserver2的配置:同realserver1的配置
測試:
1.)使用client在瀏覽器上輸入"http://192.168.0.28",打開網頁不斷刷新網頁 2.)在Director主機上輸入命令`watch -n 1 "ipvsadm -L -n"`進行監控