各種類型的負載均衡,四層,七層,基於302,基於DNS轉發

一、數據鏈路層負載均衡
1、雙網卡綁定交換機配置
實現方式:雙網卡綁定,在思科交換機上稱呼爲EtherChannel
Switch(config)#interface range fstaEthernet 0/23-34
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#channel-group 3 mode active
Switch(config-if-range)#switchport access vlan 9
Switch(config-if-range)#no shut
Switch(config)#show etherchannel summary   #如果顯示是SU狀態正常,如果是D,協商失敗。


說明:
Switch(config-if-range)#channel-group 1 mode ?                   #通過此命令在交換機查看端口聚合可以使用的協議
  active   Enable LACP unconditionally                           #主動發送LACP報文
  auto    Enable PAgP only if a PAgP device is detected          #被動發送PAgP報文
  desirable  Enable PAgP unconditionally                         #主動發送PAgP報文
  on       Enable Etherchannel only                              #手動設置,需要兩邊都設置成on
  passive  Enable LACP only if a LACP device is detected         #被動接收LACP報文


2、服務器配置
vi /etc/sysconfig/network-scripts/ifcfg-bond0 
DEVICE=bond0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.157
NETMASK=255.255.255.0

vi /etc/sysconfig/network
GATEWAY=192.168.1.1

vi /etc/sysconfig/network-scripts/ifcfg-enp132s0f0   
BOOTPROTO=none
TYPE=Ethernet
DEVICE=enp132s0f0
ONBOOT=yes
MASTER=bond0
SLAVE=yes

vi /etc/sysconfig/network-scripts/ifcfg-enp132s0f1
BOOTPROTO=none
TYPE=Ethernet
DEVICE=enp132s0f1
ONBOOT=yes
MASTER=bond0
SLAVE=yes


vi /etc/modprobe.conf
alias bond0 bonding
options bond0 miimon=100 mode=0

vi /etc/rc.d/rc.local
ifenslave bond0 enp132s0f0 enp132s0f1

modprobe  bonding;lsmod |grep bonding;service network restart

注: 
1、miimon 單位:毫秒,miimon=100的意思就是,每100毫秒檢測網卡和交換機之間是否連通,如不通則使用另外的鏈路。 
2、mode=0 表示負載均衡方式:第1個包走eth0,下一個包就走eth1....一直循環下去,直到最後一個傳輸完畢 
3、mode=1 表示主備關係,只有一個設備處於活動狀態,當 一個宕掉另一個馬上由備份轉換爲主設備 
6、mod=6與mod=0的區別:mod=6,先把eth0流量佔滿,再佔eth1,....ethX;而mod=0的話,會發現2個口的流量都很穩定,基本一樣的帶寬。而mod=6,會發現第一個口流量很高,第2個口只佔了小部分流量 
7.mode=4 是兩塊網卡同時跑流量,交換機支持802.3AD功能,即LACP協議,必須開啓該模式。 

vi /etc/rc.d/rc.local
ifenslave bond0 eth0 eth1 …… eht* 

#檢查狀態 
cat /proc/net/bonding/bond0 

#檢查流量信息
#ifstat -b

二、四層負載均衡
原理:是由負載均衡設備或者軟件 ,通過TCP或者UDP的Header信息進行直接判斷由哪個實際的後端服務器來處理該鏈接,從而實現轉發。
簡要說明:
1)負載均衡接受來自客戶端的TCP SYN包後,通過調度到後端服務器。
2)後端服務收到SYN以後,回覆SYN+ACK包到負載均衡。
3)負載均衡回覆SYN+ACK至客戶端。
4)客戶端收到SYN+ACK包以後,客戶端回覆一個ACK包
5)至此會話建立。


四層負載均衡的特點:
1)模型簡單,不關心業務邏輯,只負載調度,網絡轉發,和對後端的服務器監控檢查。
2)吞吐量大的業務。
3)應用範圍廣,工作在4層,可以對所有的應用做負載均衡,包括HTTP,和數據庫,和在線聊天等。

三、七層負載均衡
與4層最大的區別:7層是在後端服務器接收到TCP數據以後,纔開始纔開始建立連接。而4層是在一開始就建立連接。
七層負載均衡的特點:
1)模型複雜度高,需要解開請求裏面的HTTP主機頭信息,作爲調度的依據。
2)吞吐量小,CPU處理負載,相對於4層,提供的吞吐量較小。
3)對後端選擇的精細化控制,可以根據客戶的請求,更加合理的選擇,提高後端的執行效率。


四、基於DNS的負載均衡
原理:在DNS上多配置幾條A記錄
特點:
1)配置簡單,不需要額外的投入
2)DNS的緩存問題,會導致被訪問的服務器故障時,切換時間變長。
3)一般需要配合其他負載均衡方案和監控。

五、基於重定向的負載均衡
1)基於HTTP 302重定向下載系統,302重定向上傳系統
通過302方法,不同用戶訪問該鏈接時,按照預先配置的比率,概率的引導客戶端去不同的節點去下載資源,從而達到分流目的。


六、基於客戶端的負載均衡
1)基於哈希算法
在程序中,通常使用哈希算法來計算節點。例如有3臺功能相同的服務器A,B,C,有一個數據M需要存儲在其中一個節點上,最簡單的方法是通過CRC32,然後取模,計算出存儲節點。
2)數據庫讀寫分離
在基於數據庫的應用中,應用程序使用數據庫分離方法,將對數據庫的讀寫壓力進行均衡,在mysql集羣中,可以配置一臺或者多臺Slave,來分擔數據讀取壓力。
應用程序判斷SQL的類型,是SELECT就發送給slave節點,如果是INSERT,或UPDATE就發給master節點。

基於客戶端的負載均衡的特點:
1)由客戶端的程序內部實現,不需要額外的負載均衡。
2)程序內部需要解決業務服務不可用問題,服務器端故障對應用程序的透明度較小。
3)程序內部需要解決業務服務器過載的問題。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章