lvs+keepAlived→效率最高的負載均衡
一、 簡介
1. 負載均衡的型別
- 負載均衡可以採用硬體裝置(例如常常聽見的 F5),也可以採用軟體負載
- 商用硬體負載裝置成本通常較高(一臺幾十萬甚至上百萬),所以一般 情況下會採用軟體負載
- 軟體負載解決的兩個核心問題是:選誰、轉發,其中最著名的是 lvs
2. lvs 是什麼?
- 英文全稱是 Linux Virtual Server,即 Linux 虛擬伺服器
- 由 章 文 嵩 博 士 發 起 的 自 由 軟 件 項 目 , 它 的 官 方 站 點 是 www.linuxvirtualserver.org
- Linux2.4 核心以後,LVS 已經是 Linux 標準核心的一部分
- 可以將請求分發給後端真實伺服器處理
- 有許多比較著名網站和組織都在使用 LVS 架設的叢集系統,例如:Linux 的入口網站(www.linux.com)、向 RealPlayer 提供音訊視訊服務而聞 名的 Real 公司(www.real.com )、全球最大的開源網站 (sourceforge.net)等
- 提供了多種排程演算法
- 輪詢排程(Round-Robin Scheduling)
- 加權輪詢排程(Weighted Round-Robin Scheduling)
- 最小連線排程(Least-Connection Scheduling)
- 加權最小連線排程(Weighted Least-Connection Scheduling)
- 基於區域性性的最少連結(Locality-Based Least Connections Scheduling)
- 帶 復 制 的 基 於 局 部 性 最 少 鏈 接 ( Locality-Based Least Connections with Replication Scheduling)
- 目標地址雜湊排程(Destination Hashing Scheduling)
- 源地址雜湊排程(Source Hashing Scheduling)
- 最短預期延時排程(Shortest Expected Delay Scheduling)
- 不 排 隊 調 度 ( Never Queue Scheduling )對應: rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq
- 有三種轉發規則
- NAT:簡單理解,就是資料進出都通過 LVS,效能不是很好。
- TUNL:簡單理解:隧道
- DR:最高效的負載均衡規則
3. lvs 的體系結構
- 最前端的負載均衡層,用 Load Balancer 表示
- 中間的伺服器叢集層,用 Server Array 表示
- 最底端的資料共享儲存層,用 Shared Storage 表示
- 在使用者看來,所有的內部應用都是透明的,使用者只是在使用一個虛擬服 務器提供的高效能服務
4. keepAlived 是什麼?
- 因為所有的請求都要經過負載均衡,所以負載均衡必然是非常重要,不 能掛掉,說白了就是要 keep the lvs alived。
- 提供的功能就是可以配置 2 臺 LVS,一臺主機,一臺備機。並且檢測任 何一個節點是否還活著。
5. lvs 的優點?
- 抗負載能力強,因為 lvs 工作方式的邏輯是非常之簡單,而且工作在網路 4 層僅做請求分發之用,沒有流量,所以在效率上基本不需要太過考慮。
- 有完整的雙機熱備方案,當節點出現故障時,lvs 會自動判別,所以系統整體是非常穩定的。
- 基本上能支援所有應用,因為 lvs 工作在 4 層,所以它可以對幾乎所有應用做負載均衡,包括 http、資料庫、聊天室等等。
6. lvs 負載均衡機制
- lvs 是四層負載均衡,也就是說建立在 OSI 模型的第四層——傳輸層之 上
- 傳輸層上有 TCP/UDP,lvs 支援 TCP/UDP 的負載均衡
- 因為 LVS 是四層負載均衡,因此它相對於其它高層負載均衡的解決辦法, 比如 DNS 域名輪流解析、應用層負載的排程、客戶端的排程等,它的效 率是非常高的
- lvs 的轉發可以通過修改 IP 地址實現(NAT 模式)
- lvs 的轉發還可以通過修改直接路由實現(DR 模式)
7. lvs 與 nginx 對比?
- 負載度 lvs 優於 nginx
- 穩定度 lvs 優於 nginx
- 伺服器效能要求 lvs 優於 nginx
- 網路層數的效率 lvs 優於 nginx 網路七層:應用層、會話層、表示層、傳輸層、網路層、鏈路層、 物理層
- 功能多少 nginx 優於 lvs
8. lvs+keepAlived 的應用場景?
- 大型網站負載均衡
二.lvs搭建
1.規劃
2臺webserver
1臺主lvs
1臺備lvs
2.兩臺webServer的配置
(1)線上安裝httpd,第一臺和第二臺都執行
(2)設定開機自啟動
(3)開啟http伺服器
(4)通過瀏覽器訪問http伺服器,預設埠是80
(5)建立html檔案,寫入內容,區分兩個節點
(6)建立檔案並寫入如下內容
#!/bin/bash
#description : start realserver
SNS_VIP=192.168.20.50 #定義了一個VIP變數,必須跟真是服務在一個網段
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up #增加一個本地路由 lo:0
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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
(7)給指令碼賦許可權
(8)啟動指令碼
(9)用ifconfig檢視效果
(10)第二臺http也同樣做上面步驟,增加路由,SNS_VIP要跟第一臺一樣
(11)檢視系統核心版本,2.4以後就有lvs,不用安裝
(12)lvs的機器安裝keepalived,做心跳檢查用的
(13)檢視配置檔案安裝位置
(14)建立並覆蓋上面的配置檔案
(15)編輯剛建立的檔案,加入以下內容
global_defs {
# notification_email {
# }
# smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER #配置LVS是主機的狀態
interface eno16777736 #配置LVS機器對外開放的IP
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.20.50 #LVS的對內IP
}
}
virtual_server 192.168.20.50 80 {
delay_loop 6
lb_algo wrr
lb_kind DR #使用LVSDR模式
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.20.233 80 { #真實服務的IP
weight 1 #配置加權輪詢的權重
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.20.203 80 {
weight 2
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
(16)開啟LVS機器的keepalived
3.LVS測試
(1)轉發,訪問虛擬IP,真是伺服器提供服務,為了解決瀏覽器快取看不到效果的問題,訪問的URL後加 a=Math.random() 隨機數
(2)故障移除,停其中一個服務,認為down掉了
(3)故障恢復自動新增
4.LVS備機搭建
(1)步驟同主機搭建,一直到配置檔案,如下
global_defs {
# notification_email {
# }
# smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP #配置LVS是主機的狀態
interface eno16777736 #配置LVS機器對外開放的IP
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.20.50 #LVS的對內IP
}
}
virtual_server 192.168.20.50 80 {
delay_loop 6
lb_algo wrr
lb_kind DR #使用LVSDR模式
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.20.233 80 { #真實服務的IP
weight 1 #配置加權輪詢的權重
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.20.203 80 {
weight 2
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
5.LVS主備測試
(1)主LVS模擬掛掉
(2)測試後,證明主備自動切換,LVS高可用
(3)主LVS啟動,自動上位
相關文章
- LVS+KEEPALIVED負載均衡實驗負載
- LVS+Keepalived 實現高可用負載均衡負載
- 基於MySQL雙主複製架構下部署LVS+KeepAlived負載均衡MySql架構負載
- gRPC負載均衡(自定義負載均衡策略)RPC負載
- gRPC負載均衡(客戶端負載均衡)RPC負載客戶端
- 負載均衡負載
- gRPC的負載均衡RPC負載
- IP負載均衡負載
- WebSocket負載均衡Web負載
- nginx負載均衡Nginx負載
- NGINX 負載均衡Nginx負載
- 【Nginx】負載均衡Nginx負載
- 負載均衡---ribbon負載
- LoadBalancer負載均衡負載
- LVS 負載均衡負載
- OceanBase 負載均衡的魅力負載
- 4.8 負載均衡的概念負載
- 負載均衡的那些事?負載
- 負載均衡的種類負載
- 負載均衡技術(一)———負載均衡技術介紹負載
- 解密負載均衡技術和負載均衡演算法解密負載演算法
- 做了反向代理和負載均衡的nginx配置檔案簡單示例(nginx.conf) HTTP負載均衡/TCP負載均衡負載NginxHTTPTCP
- 負載均衡技術(二)———常用負載均衡服務介紹負載
- 【知識分享】四層負載均衡和七層負載均衡負載
- windows第七層負載均衡 基於IIS的ARR負載均衡詳解Windows負載
- Nginx負載均衡模式Nginx負載模式
- 漫談負載均衡負載
- 負載均衡簡介負載
- golang grpc 負載均衡GolangRPC負載
- 負載均衡詳解負載
- 負載均衡知多少?負載
- Linux LVS 負載均衡Linux負載
- 淺談負載均衡負載
- 負載均衡叢集負載
- 負載均衡補充負載
- 負載均衡4層負載
- 負載均衡之keepalived負載
- LVS負載均衡群集負載