高可用 七層負載均衡與四層負載均衡

2022-09-10 18:54:17 字數 4209 閱讀 4555

一般是指2臺機器啟動著完全相同的業務系統,當有一台機器down機了,另外一台伺服器就能快速的接管,對於訪問的使用者是無感知的。

比如公司的網路是通過閘道器進行上網的,那麼如果該路由器故障了,閘道器無法**報文了,此時所有人都無法上網了,怎麼辦?

通常做法是給路由器增加一台備節點,但是問題是,如果我們的主閘道器master故障了,使用者是需要手動指向backup的,如果使用者過多修改起來會非常麻煩。

問題一:假設使用者將指向都修改為backup路由器,那麼master路由器修好了怎麼辦?

問題二:假設master閘道器故障,我們將backup閘道器配置為master閘道器的ip是否可以?

其實是不行的,因為pc第一次通過arp廣播尋找到master閘道器的mac位址與ip位址後,會將資訊寫到arp的快取表中,那麼pc之後連線都是通過那個快取表的資訊去連線,然後進行資料報的**,即使我們修改了ip但是mac位址是唯一的,pc的資料報依然會傳送給master。(除非是pc的arp快取表過期,再次發起arp廣播的時候才能獲取新的backup對應的mac位址與ip位址)

如何才能做到出現故障自動轉移,此時vrrp就出現了,我們的vrrp其實是通過軟體或者硬體的形式在master和backup外面增加乙個虛擬的mac位址(vmac)與虛擬ip位址(vip),那麼在這種情況下,pc請求vip的時候,無論是master處理還是backup處理,pc僅會在arp快取表中記錄vmac與vip的資訊。

高可用應用在上圖所示架構的負載均衡中:

1.硬體通常使用 f5

2.軟體通常使用 keepalived

安裝在兩台 負載均衡伺服器 中,可以虛擬出乙個公用的 ip位址 ,使用者訪問公用ip,可以訪問到主**伺服器(master),主**伺服器宕機後,回自動使使用者訪問的是備用**伺服器(backup),這樣使用者就不會感覺到訪問異常

vrrp協議會在乙個區域網中進行廣播,
vrrp是一種容錯協議,它保證當主機的下一跳路由器出現故障時,由另一台路由器來代替出現故障的路由器進行工作,從而保持網路通訊的連續性和可靠性。

簡化網路管理。在具有多播或廣播能力的區域網(如乙太網)中,借助vrrp能在某台裝置出現故障時仍然提供高可靠的預設鏈路,有效避免單一鏈路發生故障後網路中斷的問題,而無需修改動態路由協議、路由發現協議等配置資訊,也無需修改主機的預設閘道器配置。

安裝

高可用作用在負載均衡上,也就是反**伺服器中,所以在 lb01 和 lb02 兩台負載均衡伺服器上都安裝 keepalived 

[root@lb01 ~]# yum install keepalived -y

修改 keepalived 配置檔案

keepalived 配置檔案目錄 : /etc/keepalived/keepalived.conf

! configuration file for keepalived

# 全域性配置

global_defs

# 檢測指令碼

vrrp_script check_nginx

# 配置vrrp協議

vrrp_instance vi_1

# 設定vip

virtual_ipaddress

# 呼叫檢查

track_script

}

啟動 keepalived

測試

通過vip位址 192.168.15.3 仍然能訪問到**伺服器 192.168.15.5
腦裂問題 : 兩台高可用伺服器在指定時間內,無法互相檢查到對方的心跳而各自啟動故障轉移功能。

兩台高可用伺服器在指定時間內,無法互相檢查到對方的心跳而各自啟動故障轉移功能。

1、如果nginx宕機怎麼辦?

想辦法告訴keepalived,nginx的情況。

2、區域網之內,keepalived無法相互廣播,怎麼辦?

判斷vip是否可以ping的通

補充:

$?  : 上一條命令執行的結果。
解決nginx宕機問題

1、如果nginx宕機怎麼辦?

想辦法告訴keepalived,nginx的情況。

1、建立執行指令碼檔案checkng.sh

[root@lb01 ~]# vim checkng.sh

#!/bin/bash

ps -ef | grep -q [n]ginx

if [ $? -ne 0 ];then

# 代表nginx未正常啟動

systemctl start nginx &>/dev/null

sleep 2

ps -ef | grep -q [n]ginx

if [ $? -ne 0 ];then

systemctl stop keepalived

fifi

2、 把指令碼檔案移動到 /etc/keepalived/ 目錄下,並給 指令碼檔案新增可執行許可權

[root@lb01 keepalived]# chmod +x checkng.sh

3、 在 keepalived 的配置檔案 keepalived.conf 中匯入執行檔案,keepalived 功能 : vrrp_script

# 檢測指令碼

vrrp_script check_nginx

4、在vrrp協議模組中啟動檢查指令碼

# 呼叫檢查

實現非搶占式。

1、狀態全部都有設定成backup

2、增加 nopreempt

[root@lb02 ~]# cat /etc/keepalived/keepalived.conf 

! configuration file for keepalived

global_defs

# 檢測指令碼

vrrp_script check_nginx

# 配置vrrp協議

vrrp_instance vi_1

#設定vip

virtual_ipaddress

# 呼叫檢查

track_script

}

# 假設有三颱mysql資料庫,請問怎樣負載均衡?

在非http協議的情況下,採用的四層負載均衡的方式負載服務。

注意:四層負載均衡中不支援網域名稱。

案例 :資料庫

1、在 /etc/nginx/ 目錄下新建乙個 stream 資料夾,用於存放新的配置檔案

[root@lb01 nginx]# mkdir stream

[root@lb01 stream]# vim mysql.conf

[root@lb01 stream]# cat mysql.conf

server

2、在 nginx.conf 配置檔案中新增 stream 模組,用於配置不支援http協議的伺服器的連線

stream

案例:使用四層負載均衡實現ssh的**,埠為1122

[root@lb01 stream]# cat ssh.conf

server

四層負載均衡與七層負載均衡

1 四層負載均衡與七層負載均衡區別 個人理解 網路七層協議包括,應用層 第七層 表示層,會話層,傳輸成 第四層 網路層,資料鏈路層,物理層。所謂的七層和四層負載均衡就是指基於哪一層做的負載均衡。nginx反向 就是一種七層負載均衡,可以通過使用者的請求url來進行劃分 lvs就屬於四層負載均衡,是基...

四層負載均衡與七層負載均衡

四層負載均衡與七層負載均衡 負載均衡的分層是針對osi網路模型來說的,負載均衡模型也不僅僅只有四層和七層的。下面先給出osi網路模型架構 根據上述模型,可以快速了解負載均衡的分層 二層負載均衡 基於虛擬mac與真實mac的位址互聯。三層負載均衡 基於虛擬ip與真實ip的位址互聯。四層負載均衡 基於三...

四層負載均衡和七層負載均衡

第一,技術原理上的區別。所謂四層負載均衡,也就是主要通過報文中的目標位址和埠,再加上負載均衡裝置設定的伺服器選擇方式,決定最終選擇的內部伺服器。以常見的 tcp為例,負載均衡裝置 在接收到第乙個來自客戶端的 syn請求時 即通過上述方式選擇乙個最佳的伺服器,並對報文中目標 ip位址進行修改 改為後端...