LVS實現負載均衡及keepalive實現高可用
一.叢集(cluster)以及型別;
當後端伺服器承受不住訪問的壓力,提高伺服器效能的解決方案會極大增加成本時,人們提出了橫向擴充套件的解決方案。增加一臺或幾臺伺服器,提供相同的服務,通過前段分發器將訪問量均勻的分配到後臺伺服器上。這種多臺伺服器組成的陣列集合就叫做叢集。
叢集型別:
LB(load balancing):負載均衡叢集,擴充套件容量,實現伸縮性;開源方案:lvs,haproxy,nginx,ats
HA(HighAvailability)高可用,服務可用性叢集;
開源方案:heartbeat,corosync+pacemaker,cman+pacemaker,cman+rgmanger,keepalived,u1tramonkey
HP(high performace):高效能,併發處理叢集;開源方案:hadoop
二. 解決負載均衡叢集方案
1.硬體配置
1.軟體:lvs (linux virtual server)相當於元件,由兩部分組成,ipvs工作在核心當中,相當於netfilter,iptables而LVS正好工作在iptables的input鏈上,ipvs框架需要依賴規則完成轉發,ipvsadm外部命令編寫規則交予ipvs進行處理。
三.lvs簡單說明
lvs叢集使用三層架構:
第一層負載均衡層:由一臺或者多臺負載均衡器組成,將使用者請求分發給伺服器群組層的伺服器;
第二層伺服器群組層:由一組實際執行的應用服務組成
第三層共享儲存層:為服務提供共享儲存空間和內容一致性的儲存區域,一般由磁碟陣列組成。
四.lvs負載均衡的四種工作模型
NAT模式:
1.當用戶請求到達Director Server,此時請求的資料報文會先到核心空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP
2. PREROUTING檢查發現數據包的目標IP是本機,將資料包送至INPUT鏈
3.IPVS比對資料包請求的服務是否為叢集服務,若是,修改資料包的目標IP地址為後端伺服器IP,然後將資料包POSTROUTING鏈。 此時報文的源IP為CIP,目標IP為RIP
4. POSTROUTING鏈通過選路,將資料包傳送給Real Server
5. Real Server比對發現目標為自己的IP,開始構建響應報文發回給Director Server。 此時報文的源IP為RIP,目標IP為CIP
6.Director Server在響應客戶端前,此時會將源IP地址修改為自己的VIP地址,然後響應給客戶端。 此時報文的源IP為VIP,目IP為CIP
特點:
1.RS的應該使用私有地址
2.RS的閘道器必須指向DIP
3.RIP和DIP必須在同一網段內
4.請求和響應的報文都得經過Director,在高負載場景中,Director很可能成為效能憑藉
5.支援埠對映
6.RS可以使用任意支援叢集服務的OSDR模式:
1.首先,客戶端CIP的請求傳送給LVS排程器的VIP;
2.LVS排程器收到客戶端的請求包後,將資料包的MAC地址改成LVS排程器選擇的某一臺RS的MAC地址,並通過交換機發送給RS伺服器;
3.RS收到傳送來的資料報文請求後,會從鏈路層往上傳給IP層,此時IP層需要驗證請求的目標IP地址。因為包的目標IP(即VIP)並不是RS的本地IP,而僅僅MAC地址是RS的。所以,在RS上需要配置一個VIP的loopbackdevice,是因為loopback device是伺服器本地使用的網路介面,對外是不可見的,不會跟LVS的ip衝突。
4.RS處理資料包完成後,將應答直接返回給客戶端。回覆資料報不在經過排程器。因此,如果對外提供LVS負載均衡服務,則RS需要連上網際網路才能將應答包返回給客戶端。不過,RS最好為帶公網IP的伺服器,這樣可以不經過閘道器直接回應客戶,如果多個RS使用了同一網關出口,閘道器會成為LVS架構的瓶頸,會大大降低LVS的效能。
特點:
1.RS可以使用私有地址,還可以使用公網地址,此時可以直接通過網際網路連入RS,以實現配置、監控等
2.RS的閘道器一定不能指向DIP
3.RS跟Dirctory要在同一物理網路內(不能有路由器分隔)
4.請求報文經過Directory,但響應報文一定不經過Director
5.不支援埠對映
6.RS可以使用大多數的作業系統
TUN模式:
客戶端訪問伺服器,資料包的源地址cip,目標地址vip,傳送給排程器。排程器建立虛擬的網路通道,在資料包上面在封裝一層
而稱為新的資料包,不改動之前地址,封裝過後資料包源地址dip,目標地址rip,直接傳送到後端伺服器。後端伺服器接受資料
包,目標地址符合,開始構建響應報文將響應資料通過虛擬通道直接返回給客戶端;
特點:
(1)RIP,DIP可以使用私有地址;
(2)RIP和DIP可以不再同一個網路中,且RIP的閘道器未必需要指向DIP;
(3)支援埠對映;
(4)RS的OS可以使用任意型別;
(5)請求報文經由Director,響應報文也經由Director;
fullant模型:
客戶端到叢集的響應報文源地址cip,目標地址vip,經過排程器將請求報文地址轉變,源地址dip,目標地址rip,請求報文送達後
端伺服器構建響應報文,響應報文送達排程器前源地址rrip,目標地址dip,排程器接受報文後將地址轉化源地址vip,目標地址cip,將
送達資料到達客戶端。在期間資料包地址經過兩次轉化。
特點:
1.RIP,DIP,VIP都得是公網地址
2.RS的閘道器不會指向也不可能指向DIP
3.請求報文經過Directory,但響應報文一定不經過Director
4.不支援埠對映
四. lvs的叢集服務:
ipvsadm 使用者介面的工作命令
-A #新增一個叢集服務
-t : tcp協議
-u : udp
-f: firewall make 通常應用於將兩個或以上的服務繫結為一個服務進行處理時使用
service-address #伺服器新增地址
-t ip:port
-u ip:port
-s 排程演算法,預設為w1c
LVS的排程方法:10種
靜態方法:僅根據演算法本身進行排程
rr:Round Robin 輪詢
wrr:Weighted RR 權重輪詢
sh:source hashing源地址hash
dh:destination hashing 目標地址hash
動態方法:根據演算法及RS當前的複製狀態
lc:Least Connection 最少連線
計算當前的負載Overhead=Active*256+Inactive來實現
wlc:Weighted LC
Overhead=(Active*256+Inactive)/weigh
sed:Shortest Expect Delay 最短期望延遲
Overhead=(Active+1)*256/weight
aq:Nerver Queus: 永不排隊
lblc:Locality-based least connection 基於本地的最少連線相當於dh+lc
Lblcr:基於複製的基於本地的最少連線 Replicated and Locality-based least connection-p : timeout persistent connection 持久連結
-E 修改定義過的叢集服務
-D -t|u|f service-address 刪除指定的叢集服務
RS相關:
-a:向指定的CS中新增RS
-t|-u|-f service-address:指明將RS新增至那個Cluster Service 中
-r:指定RS,可以包含{IP[:port]},只有支援埠對映的LVS型別才允許此處使用跟叢集服務中不同的埠
lvs型別:
-g:Gateway,DR
-i:ipip,TUN
-m:masquerade(地址偽裝),NAT
預設為DR
指定RS許可權 -w
上限下限: -x:下限 -y:上限
-e:修改指定的RS屬性-d -t|u|f service-address -r server-address:在指定的叢集服務中刪除一個指定的RS
情況所有的叢集服務:-C
儲存規則(使用輸出重定向):
ipvsadm-save
ipvaadm -S
載入指定的規則:(使用輸入重定向)
ipvsadmin-restore
ipvasdm -R
檢視ipvs規則等
-L [options]
-n 使用數字格式顯示IP地址,不反解
-c:檢視連線數相關資訊
--stats:顯示統計資料
--rate:資料傳輸速率
--timeout:顯示tcp會話時長
--daemon:守護程序的資訊
--sort:對虛擬服務進行排序,預設為升序
--exact:精確顯示,不做單位換算
-Z:計數器清零五.LVS的DR模式實現負載均衡
實驗環境;redhat6.5系統,排程器ip192.168.88.152 後端伺服器192.168.88.153和192.168.88.154
排程器配置:
1.配置6.5系統yum源需要配置,否則ipvsadm不能進行安裝
2.安裝ipvsamd
3.排程器新增虛擬ip192.168.88.200/24
4.定義叢集,給叢集設定輪詢節點;
5.儲存策略,重新啟動ipvsadm 服務
後端伺服器配置;
1. 192.168.88.153配置如下:
新增虛擬ip192.168.88.200/24
安裝http服務,編輯預設網頁
2.後端伺服器192.168.88.154配置如下;
客戶端測試結果:起初一直出現server3伺服器,然後一致重新整理等過了一段時間變成server2伺服器,然後再長時間不變化;
問題原因是arp -an | grep 100 繫結的虛擬ip和server不在一起
後端伺服器新增arptables策略
排程器配置不變化;
1.後端伺服器server2新增arptables策略,安裝arptables,新增排程器識別規則
2.後端伺服器配置如上,安裝arptables,新增排程器識別規則
以上排程器只能進行輪詢,不能檢測後端伺服器的狀況,需要安裝Idirectord,自動建立叢集新增節點,目的檢查後端伺服器健康
排程伺服器配置:
1.安裝ldirectord-3.95-3.1.x86_64.rpm軟體
2.修改配置檔案
3.清空ipvsadm 策略,啟動ldirectord服務
4.後端伺服器關閉http服務,排程器配置
物理主機訪問:
六.LVS的NAT模式實現負載均衡
1.server1排程器主機配置
匯入modprobe iptble-nat 模組
排程器新增虛擬ip和物理機ip在同一vlan
新增策略
開啟排程器的路由轉化功能,設定排程器的閘道器為新增的虛擬ip;
2, 後端伺服器server2和server3配置
將排程器的虛擬ip設定為閘道器
3.test虛擬機器測試,test虛擬機器的ip和排程器虛擬ip在同一vlan,啟動http服務;
七.LVS的TUN模型實現負載均衡
排程器setver1配置:
1.排程器server1匯入modprobe ipip 模組,新增tunl0的隧道
2.新增虛擬ip,啟用tunl0隧道,設定ipvsadm 規則
3.路由新增虛擬ip
後端伺服器server2和server3配置:
1.匯入模組,新增vip到tunl0隧道,啟用tunl0隧道,
2.路由新增vip.關閉tunl0.rp_filter
#tunl0關閉rp_filter功能
3.設定arptables策略;
test虛擬機器測試:curl 192.168.88.200
八. 使用keepalive實現高可用叢集
1.server1主機停止ldirectord服務
2.server1 排程器安裝keepalived
在解壓目錄下·進行編譯
出現如下報錯是缺少libnl和libnl-devel,安裝這兩個軟體包,再次進行編譯;
出現如下報錯缺少libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm,http://rpm.pbone.net/index.php3下載安裝包,再次進行編譯安裝ok;
製作啟動軟連線
配置目錄增加執行許可權
安裝mailx.程式動態以郵件的方式顯示,在/var/log/messages
yum install -y mailx
3.配置keepalived服務
! Configuration File for keepalived
global_defs {
notification_email {
[email protected] #keepalive發生切換時將傳送郵箱通知
}
notification_email_from [email protected] #指定發件人
smtp_server 127.0.0.1 #smtp服務地址
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict #登出
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER #指定伺服器為主裝置,backup為輔助裝置
interface eth1
virtual_router_id 51
priority 100 #指定優先順序,1-254數字越大優先順序越高;
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.88.200 #設定vip
}
}
virtual_server 192.168.88.200 80 {
delay_loop 3 #健康檢查時間間隔
lb_algo rr #lvs的排程演算法
lb_kind DR #lvs的DR模式
# persistence_timeout 50 #保持會話時間
protocol TCP #使用tcp協議
real_server 192.168.88.153 80 { #設定後端服務裝置
weight 1 #權重預設為1,0為失效
TCP_CHECK {
connect_timeout 3 #連結時間
retry 3 #重連次數
delay_before_retry 3 #重新連結間隔時間
}
}
real_server 192.168.88.154 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
將server1主機安裝好的檔案傳送給server4主機
修改server4主機的配置檔案
! Configuration File for keepalived
global_defs {
notification_email {
[email protected] #keepalive發生切換時將傳送郵箱通知
}
notification_email_from [email protected] #指定發件人
smtp_server 127.0.0.1 #smtp服務地址
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict #登出
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER #指定伺服器為主裝置,backup為輔助裝置
interface eth1
virtual_router_id 51
priority 50 #指定優先順序,1-254數字越大優先順序越高;
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.88.200 #設定vip
}
}
virtual_server 192.168.88.200 80 {
delay_loop 3 #健康檢查時間間隔
lb_algo rr #lvs的排程演算法
lb_kind DR #lvs的DR模式
# persistence_timeout 50 #保持會話時間
protocol TCP #使用tcp協議
real_server 192.168.88.153 80 { #設定後端服務裝置
weight 1 #權重預設為1,0為失效
TCP_CHECK {
connect_timeout 3 #連結時間
retry 3 #重連次數
delay_before_retry 3 #重新連結間隔時間
}
}
real_server 192.168.88.154 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
4.server2和server3後端伺服器配置相同
設定虛擬ip
新增arptables規則;
設定http預設網頁
客戶端測試:
server1做主機顯示server1的網絡卡mac地址
5.實現高可用和健康體檢;
配置還有點小問題我在檢查檢查
相關推薦
LVS實現負載均衡及keepalive實現高可用
一.叢集(cluster)以及型別; 當後端伺服器承受不住訪問的壓力,提高伺服器效能的解決方案會極大增加成本時,人們提出了橫向擴充套件的解決方案。增加一臺或幾臺伺服器,提供相同的服務,通過前段分發器將訪問量均勻的分配到後臺伺服器上。這種多臺伺服器組成的陣列集合就叫
haproxy+keepalived實現負載均衡及高可用
keepalived+haproxy HAProxy是一個使用C語言編寫的自由及開放源代碼軟件,其提供高性能性、負載均衡,以及基於TCP和HTTP的應用程序代理。相較與 Nginx,HAProxy 更專註與反向代理,因此它可以支持更多的選項,更精細的控制,更多的健康狀態檢測機制和負載均衡算法。 H
解決Nginx + Keepalived主從雙機熱備+自動切換,實現負載均衡及高可用
解決Nginx + Keepalived主從雙機熱備+自動切換,實現負載均衡及高可用 IP 伺服器 服務 192.168.1.10 lb-node1 Nginx、kee
lvs負載均衡的四種模式原理,LVS之DR模型,LVS+keeaplived實現負載均衡,keepalived實現高可用
一,LVS的簡介: Linux virtual system,是由目前阿里著名工程師章文嵩開發的一寬開源的軟體。LVS工作在一臺server上提供Directory(負載均衡器)的功能,它本身並不提供任何服務,只是把特定的請求轉發給對應的realserver(
MySQL 高可用:mysql+Lvs+Keepalived 負載均衡及故障轉移
ica 目錄 details software fwm 多個 優先級 sql 服務器 規則 轉自 MySQL 高可用:mysql+Lvs+Keepalived 負載均衡及故障轉移 - KK ——專註數據 - 博客頻道 - CSDN.NETh
Nginx+Tomcat實現負載均衡及動靜分離
動靜 webapps ado art index.jsp mod connector mct 圖片 內部模擬兩臺服務器taoba1和taobao2 當訪問 www.taobao.com 時候會依據負載均衡策略來進行訪問 拷貝兩份tomcat文件,分別命名為taobao
Nginx+tomcat+memcached實現負載均衡及session共享
Nginx+tomcat+memcached 使用nginx作為前端伺服器來實現tomcat負載均衡及高可用,同時基於jsp的動態特徵,我們將引入memcache來保持網頁在連線過程中的session保持,利用memcached把多個tomcat的session集中管理 圖解: 說明:
若依專案利用nginx實現負載均衡及保持會話
記錄一下若依專案利用nginx實現負載均衡及保持會話的步驟。 此次作為試驗性的測試,為了方便在本地window的環境上實現。 具體步驟: 1、安裝兩個tomcat8,可以下載一個後,另一個複製即可,下載地址: https://tomcat.apache.org/
LVS-DR負載均衡及keepalived高可用的部署
LVS-DR負載均衡 server1:作為LinuxDirector 1.安裝ipvsadm(rh6.5需要配置yum源) [[email protected] ~]# cat /etc/yum.repos.d/rhel-source
LVS DR模式負載均衡搭建、keepalived高可用+LVS負載均衡配合
lvs lvs dr模式 lvs負載均衡 keepalived+LVS LVS DR模式搭建 準備:dir(調度器):192.168.188.2rs1:192.168.188.3rs2:192.168.188.6vip:192.168.188.200 安裝ipvsadm yum insta
springboot專案Nginx+Tomcat實現負載均衡結合Redis實現session共享問題
對於分散式使用Nginx+Tomcat實現負載均衡,當同一個使用者登入後,再次訪問可能分發到不同的服務,這樣我們就取不到之前登入session,出現未登入現象。所以我們必須解決共享session問題。 方式一:儲存在資料庫中 , 使用者登入時,把session資訊儲存在資
LVS+KEEPALIVED+MYSQL單點寫入讀負載均衡主主同步高可用方案
LVS+KEEPALIVED+MYSQL 單點寫入讀負載均衡主主同步高可用方案安裝教程 一、 安裝環境 Ø 軟體版本 CENTOS 6.5 KEEPALIVED 1.2.12 | 下載 LVS 1.2.6 | 下載 MYSQL 5.6.17(社群版) |
雙網絡卡實現負載均衡技術的實現與原理
網絡卡出錯冗餘 : AFT(Adapter Fault Tolerance)技術是一種在伺服器和交換機之間建立冗餘連線的技術,亦即在伺服器上安裝兩塊網絡卡,一塊為主網絡卡,另一塊作為備用網絡卡,然後用兩根網線將兩塊網絡卡都連到交換機上。 : AFT技術的基本工作
Centos 5.7 上LVS+piranha負載均衡及雙機熱備配置方式
安裝包下載: LVS: 在kernel裡已經包含了這個安裝包,我們可以驗證: Red Hat Enterprise Linux 3 (or CentOS 3) kernel has already included the IPVS patch, so that
負載均衡,分散式,高可用,容錯的區別
叢集(Cluster) 叢集的概念是和單臺伺服器相對應的,簡單來說叢集就是部署多臺伺服器協同完成一項工作。 1,負載均衡(Load Balance)叢集: 負責均衡伺服器根據負載均衡演算法(輪詢,隨機,雜湊,權重等)來分發請求到不同的主伺服器。 每個主伺服器都是等價的
Keepalive+Amoeba+Mysql 實現高可用,負載均衡及讀寫分離
一:實驗環境 寫:寫入的介面是keepalive配置的虛擬IP(192.168.1.60),而這個VIP指向雙主複製中的兩個節點。 讀:slave1(該slave1指向的是master1)。 二:實驗目的 Master1與master2實現高可用,master1
【LVS+Keepalived】 LVS+Keepalived實現tcp、udp負載均衡及HA高可用
LVS 安裝下載編譯安裝 yum install -y kernel-devel gcc gcc-c++ yum install libnl* libpopt* popt-static -y解壓完之後進入解壓目錄執行make && make install編譯
使用LVS實現負載均衡原理及安裝配置詳解
配置 png 負載均衡 iptables .cn 詳解 文章 配置詳解 logs LVS是一個開源軟件,由章文嵩博士於1998年5月創立,可以實現Linux平臺下的簡單負載均衡。LVS是Linux Virtual Server的簡寫,是一個虛擬的服務器集群系統。LVS是基於
Keepalived結合LVS-DR實現負載均衡高可用集群
table 開啟 strong 部署 toc ifconf cal 指向 protocol 簡介 Keepalived期初是專門針對LVS設計的一款強大的輔助工具,主要用來提供故障切換和健康檢查功能—判斷LVS負載調度器、節點服務器的可用性,及時隔離並替換新的服務器,當故障
Lvs-nat模式實現負載均衡的配置命令及執行過程
一、實驗環境 三臺伺服器,一臺作為 director,兩臺作為 real server,director 有一個外網網絡卡(10.0.172.190) 和一個內網ip(192.168.0.10),兩個 real server 上只有內網 ip (192.168.0.11) 和 (192.168.