負載均衡LVS(Linux Virtual Server) 目錄 第1章 LVS負載均衡集群簡介 1.1 為什麼要學LVS 1.2 LVS網站資料: 1.3 LVS內核模塊ip_vs介紹 從2.4.24以後IPVS已經成為Linux官方標準內核的一部分。 LVS無需安裝 安裝的是管理工具,第 ...
負載均衡LVS(Linux Virtual Server)
目錄
負載均衡LVS(Linux Virtual Server)... 1 第1章 LVS負載均衡集群簡介... 1 1.1 為什麼要學LVS. 1 1.2 LVS網站資料:... 1 1.3 LVS內核模塊ip_vs介紹... 1 第2章 LVS-DR直接路由模式... 2 2.1 DR直接路由模式說明... 2 2.1.1 DR-原理圖片:... 2 2.1.2 DR-原理解釋... 2 2.1.3 ARP原理... 3 2.2 ipvsadm-檢查環境... 3 2.3 lb服務端-搭建lvs. 4 2.4 web伺服器配置... 4 第3章 LVS-keepalived高可用lvs. 5 3.1 環境介紹... 5 3.2 部署lvs-keepalived. 6 3.2.1 lb負載均衡操作(Load Balance)... 6 3.2.2 web伺服器操作... 9 3.2.3 檢測高可用及負載... 9 第4章 LVS集群的工作模式總結... 10
第1章 LVS負載均衡集群簡介
1.1 為什麼要學LVS
LVS支持比nginx更大的併發量。
當併發超過了Nginx上限,就可以使用LVS了。日1000-2000W PV 或併發請求1萬以下都可以考慮用Nginx。
1.2 LVS網站資料:
官網:http://www.linuxvirtualserver.org/index.html 中文資料 LVS項目介紹 http://www.linuxvirtualserver.org/zh/lvs1.html LVS集群的體繫結構 http://www.linuxvirtualserver.org/zh/lvs2.html LVS集群中的IP負載均衡技術 http://www.linuxvirtualserver.org/zh/lvs3.html LVS集群的負載調度 http://www.linuxvirtualserver.org/zh/lvs4.html
1.3 LVS內核模塊ip_vs介紹
從2.4.24以後IPVS已經成為Linux官方標準內核的一部分。
LVS無需安裝
安裝的是管理工具,第一種叫ipvsadm,第二種叫keepalive
ipvsadm是通過命令行管理,而keepalive讀取配置文件管理
後面我們會用Shell腳本實現keepalive的功能
安裝ipvsadm管理工具(只在lb操作)
第2章 LVS-DR直接路由模式
2.1 DR直接路由模式說明
2.1.1 DR-原理圖片:
2.1.2 DR-原理解釋
原理:DR模式是通過改寫請求報文的目標MAC地址,將請求發給真實伺服器的,而真實伺服器將響應後的處理結果直接返回給客戶端用戶。
註意:DR技術可極大地提高集群系統的伸縮性。但要求調度器LB與真實伺服器RS都有一塊物理網卡連在同一物理網段上,即必須在同一區域網環境。
2.1.3 ARP原理
實現區域網內數據傳輸依據:(1)主機ARP緩存 (2)交換機MAC地址表
ARP原理:根據IP地址獲取物理地址MAC的一個TCP/IP協議。主機發送信息時將包含目標IP地址的ARP請求廣播到網路上的所有主機,(所有主機會提取發送者的ip 和mac存入自己的ARP緩存中)目標主機接收返回自己mac消息,以此確定目標的物理地址;收到返回消息後將該IP地址和物理地址存入本機ARP緩存中並保留一定時間,下次請求時直接查詢ARP緩存以節約資源。 數據傳輸過程:(前提已有arp緩存)主機A通過查詢ARP緩存,得到mac地址,數據包經過交換機檢查mac地址表,到達指定主機B。
2.2 ipvsadm-檢查環境
系統準備:一臺負載均衡伺服器lb03(10.0.0.15) 兩台web伺服器(10.0.0.17-18) # 查看系統的LVS模塊。 lsmod|grep ip_vs # 預設沒有載入模塊,需要安裝管理工具才會激活。 yum -y install ipvsadm # 查看當前LVS狀態,順便激活LVS內核模塊。 ipvsadm -ln
2.3 lb服務端-搭建lvs
(只在負載伺服器-lb操作)
ip addr add 10.0.0.13/24 dev eth0 ipvsadm -C ipvsadm --set 30 5 60 ipvsadm -A -t 10.0.0.13:80 -s wrr -p 20 ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1 ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1 ipvsadm -ln
(命令解釋)
#步驟1:在eth0網卡綁定VIP地址(ip) #步驟2:清除當前所有LVS規則(-C) #步驟3:設置tcp、tcpfin、udp鏈接超時時間(--set) #步驟4:添加虛擬服務(-A),-t指定虛擬服務的IP埠,-s 指定調度演算法 調度演算法見man ipvsadm, rr wrr 權重輪詢 -p 指定超時時間 #步驟5:將虛擬服務關聯到真實服務上(-a) -r指定真實服務的IP埠 -g LVS的模式 DR模式 -w 指定權重 #步驟6:查看配置結果(-ln)
2.4 web伺服器配置
(在web03/web04同時操作下麵步驟) #步驟1:在lo網卡綁定VIP地址(ip) ip addr add 10.0.0.13/32 dev lo #步驟2:修改內核參數抑制ARP響應 cat >>/etc/sysctl.conf<<EOF net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 EOF sysctl -p
##解釋說明
#隨筆--更新全網arp緩存(向全網發送廣播) arping -I eth0 -c 1 -U 10.0.0.13 #命令操作解釋說明 1. RealServer為什麼要在lo介面上配置VIP? 答:既然要讓RS能夠處理目標地址為vip的IP包,首先必須要讓RS能接收到這個包(基於二層的,ip不變)。在lo上配置vip能夠完成接收包並將結果返回client。 #網卡解釋 eth0,eth1,eth2……代表網卡一,網卡二,網卡三…… lo代表127.0.0.1,即localhost 2.在eth0網卡上配置VIP可以嗎? 答:不可以,將VIP設置在eth0網卡上,會影響RS的arp請求,造成整體LVS集群arp緩存表紊亂,以至於整個負載均衡集群都不能正常工作。 3.為什麼要抑制ARP響應? 訪問網站時,直接訪問web伺服器,不經過負載均衡伺服器。
第3章 LVS-keepalived高可用lvs
3.1 環境介紹
兩台負載均衡伺服器:lb03 lb04
兩台web伺服器:10.0.0.17 10.0.0.18
(負載均衡器) # 查看系統的LVS模塊。 lsmod|grep ip_vs
# 預設沒有載入模塊,需要安裝管理工具才會激活。 yum -y install ipvsadm
# 查看當前LVS狀態,順便激活LVS內核模塊。 ipvsadm -ln
3.2 部署lvs-keepalived
3.2.1 lb負載均衡操作(Load Balance)
#步驟1:在lb03和lb04安裝Keepalive
yum -y install keepalived
#只需要在keeplived的配置文件中設置lvs
#步驟2:配置Keepalive, lb03和lb04的配置文件分成三部分配置
1.global_defs 全局定義 2.vrrp 實例配置 VIP 3.virtual_server配置 lvs的配置
# lb03的配置文件
# vim /etc/keepalived/keepalived.conf global_defs { router_id LVS_01 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.13/24 } } #lvs 的配置 virtual_server 10.0.0.13 80 { #虛 ip delay_loop 6 lb_algo wrr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 50 protocol TCP real_server 10.0.0.17 80 { #真實web ip weight 1 TCP_CHECK { connect_timeout 8 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 10.0.0.18 80 { #真是web ip weight 1 TCP_CHECK { connect_timeout 8 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
lb04的配置文件
[root@lb04 keepalived]# cat /etc/keepalived/keepalived.conf global_defs { router_id LVS_02 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.13/24 } } virtual_server 10.0.0.13 80 { delay_loop 6 lb_algo wrr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 50 protocol TCP real_server 10.0.0.17 80 { weight 1 TCP_CHECK { connect_timeout 8 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 10.0.0.18 80 { weight 1 TCP_CHECK { connect_timeout 8 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
3.2.2 web伺服器操作
(在web03/web04同時操作下麵步驟) 步驟1:在lo網卡綁定VIP地址(ip) 步驟2:修改內核參數抑制ARP響應 ip addr add 10.0.0.13/32 dev lo #臨時生效 cat >>/etc/sysctl.conf<<EOF net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 EOF sysctl -p
3.2.3 檢測高可用及負載
ip addr show eth0 ipvsadm -ln
第4章 LVS集群的工作模式總結
DR(Direct Routing)直接路由模式 (常用)
NAT(Network Address Translation)
TUN(Tunneling)隧道模式
FULLNAT(Full Network Address Translation)