一、數據鏈路層負載均衡
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)程序內部需要解決業務服務器過載的問題。