LVS+Keepalive 实现负载均衡高可用集群
一、LVS 介紹
? ? ? ? 目前LVS已經被集成到Linux內核模塊中。LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務器,該項目在Linux內核中實現了基于IP的數據請求負載均衡調度方案,終端互聯網用戶從外部訪問公司的外部負載均衡服務器,終端用戶的Web請求會發送給LVS調度器,調度器根據自己預設的算法決定將該請求發送給后端的某臺Web服務器,比如,輪詢算法可以將外部的請求平均分發給后端的所有服務器,終端用戶訪問LVS調度器雖然會被轉發到后端真實的服務器,但如果真實服務器連接的是相同的存儲,提供的服務也是相同的服務,最終用戶不管是訪問哪臺真實服務器,得到的服務內容都是一樣的,整個集群對用戶而言都是透明的。最后根據LVS工作模式的不同,真實服務器會選擇不同的方式將用戶需要的數據發送到終端用戶,LVS工作模式分為NAT模式、TUN模式、以及DR模式。
二、LVS集群搭建
(1)環境搭建:client --> DR -->RS --client
LVS無需安裝
安裝的是管理工具,第一種叫ipvsadm,第二種叫keepalive
ipvsadm是通過命令行管理,而keepalive讀取配置文件管理
| 主機名 | 主機IP | 備注 |
| server1 | 172.25.1.1 | 1.這里使用的是redhat7.6系統 2.防火墻和selinux都關閉 3.server2、3的作為RS機子http訪問結果為主機名 4.server1 作為DR機 下載ipvsam 5.server1 添加虛擬ip地址(VIP) 172.25.1.100 |
| server2 | 172.25.1.2 | |
| server3 | 172.25.1.3 | |
| server4 | 172.25.1.4 |
?(2)安裝ipvsam管理工具
yum install ipvsadm -y?(3)?在server1 eth0網卡綁定VIP地址(高可用)
ip addr add 172.25.1.100/24 dev eth0(4) 添加虛擬服務以及將其關聯到真實服務器上去
ipvsadm -A -t 172.25.1.100:80 -s rr # 添加虛擬服務 ipvsadm -a -t 172.25.1.100:80 -r 172.25.1.2:80 -g #將虛擬服務關聯到真實服務上 ipvsadm -a -t 172.25.1.100:80 -r 172.25.1.3:80 -g#LVS默認無80端口,需另外添加新的虛擬IP記錄(5)?查看配置結果
(6)web服務器配置
給兩臺服務器上的網卡綁定VIP地址
[root@server2 ~]# ip addr add 172.25.1.100/32 dev eth0 [root@server3 ~]# ip addr add 172.25.1.100/32 dev eth0抑制ARP響應(noarp)
作用使得
yum install arptables.x86_64 -y [root@server2 html]# arptables -A INPUT -d 172.25.1.100 -j DROP [root@server2 html]# arptables -A OUTPUT -s 172.25.1.100 -j mangle --mangle-ip-s 172.25.1.2[root@server3 html]# arptables -A INPUT -d 172.25.1.100 -j DROP [root@server3 html]# arptables -A OUTPUT -s 172.25.1.100 -j mangle --mangle-ip-s 172.25.1.3查看策略?
實驗效果:實現負載均衡
arp解析查看?
arp詳解
01.ARP協議,全稱"Address Resolut ion Protocol",中文名是地址解析協議,使用ARP協議可實現通過IP地址獲得對應主機的物理地址(MAC地址)
?ARP協議要求通信的主機雙方必須在同一個物理網段(即局域網環境)!
02.為了提高IP轉換MAC的效率,系統會將解析結果保存下來,這個結果叫做ARP緩存
三、LVS集群的工作模式
DR直接路由模式
client --> DR -->RS --client
DR模式是通過改寫請求報文的目標MAC地址,將請求發送給真實服務器的,而真實服務器響應后的處理結果直接返回給客戶端用戶。
DR技術可極大地提高集群系統的伸縮性,但要求調度器與真實服務器RS都有一塊物理網卡連在同一物理網段上,即必須在同一局域網(VLAN)環境。
NAT模式
client --> vs --> rs --> vs --> client
通過網絡地址轉換,調度器重寫請求報文的目標地址,根據預設的調度算法,將請求分派給后端的真實服務器,真實服務器的響應報文處理之后,返回時必須通過調度器,經過調度器時報文的源地址被重寫,再返回給客戶,完成整個副在調度過程。
TUN 工作模式(隧道工作模式)
客戶請求包封裝在一個IP tunnel里面,然后發送給RS節點服務器,節點服務器接收到之后解開IP tunnel后,進行響應處理。并且直接把包通過自己的外網地址發送給客戶不用經過LB服務器
不足:
1、RS配置復雜(IPIP模塊)
2、RS上綁定VIP,風險比較大
FULLNAT(系統不自帶)
LVS的DR和NAT模式要求RS和LVS在同一VLAN 中,導致部署成本過高,TUNNEL模式雖然可以跨vlan,但RealServer 上需要部署ipip隧道模塊等,網絡拓撲上需要連通外網,教為復雜,不易運維,
為解決上述問題,開發出FULLNAT,該模式和NAT模式的區別是:數據包進入時,除了做DNAT,還做SNAT(用戶ip-->內網ip),從而實現lvs-真實服務器之間可以跨vlan通訊,真實服務器需要連接內網。類似于地鐵站多個閘機。
四、Keepalive+LVS實現
Keepalived 一方面具有配置管理LVS的功能,同時還具有對LVS下面節點進行健康檢查的功能,另一方面也可實現系統網絡服務的高可用功能。
(1)在server1和server4上安裝Keepalive?
[root@server1 ~]# yum install keepalived -y [root@server4 ~]# yum install ipvsadm keepalived -y(2)編寫keepalived.conf配置文件
server1
! Configuration File for keepalivedglobal_defs {notification_email {root@localhost}notification_email_from keepalive@localhostsmtp_server 127.0.0.1 smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0 }vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.1.100} }virtual_server 172.25.1.100 80 {delay_loop 6lb_algo rrlb_kind DR#persistence_timeout 50protocol TCPreal_server 172.25.1.2 80 {weight 1TCP_CHECK{connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 172.25.1.3 80 {weight 1TCP_CHECK{connect_timeout 3nb_get_retry 3delay_before_retry 3}} }server4
(3)開啟keepalived服務
systemctl start keepalived.service查看vip
查看LVS狀態
?keepalive健康檢查功能
delay_loop 隔多長時間做一次健康檢測,單位為秒?
connect_timeout ?連接超時時間,單位為秒
nb_get_retry ?檢測失敗后的重試次數,如果達到重試次數仍然失敗,將后端從服務器池中移除。
delay_before_retry ?失敗重試的間隔時間,單位為秒
測試:
注意:因為虛擬的ip重啟之后就會失效,故須加入開機啟動項rc.local文件并賦予其可執行權限
?
?
?
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的LVS+Keepalive 实现负载均衡高可用集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ansible中的角色使用
- 下一篇: HAProxy实现负载均衡及高可用集群(