LVS實際操作與調度方法

LVS概念、類型、調度方法、命令操作與實際配置

字數2134 閱讀4 評論0 

LVS實際操作與調度方法

LVS

(一)LVS概念

LVS( Linux Virtual Server)是一種負載均衡(LB,Laod Balance)技術,采用IP負載均衡技術和基于內容請求分發技術。具有很好的吞吐率,將請求均衡地轉移到不同的服務器上執行。LVS是一套組件(ipvs與ipvsadm),類似與iptables,ipvs相當于netfilter,是能將用戶請求轉發的框架,需要依賴以規則完成轉發,工作于內核中的INPUT鏈上,并依賴于規則進行轉發,而ipvsadm是用來定義規則的工具。LVS工作在TCP/UDP協議的四層,能根據用戶請求的IP與PROT進行轉發,即LVS能實現四層交換、四層路由。

LVS組成
Director:負載均衡器
RS:服務器池(RealServer)
CIP:客戶端IP(Client IP)
VIP: Client所請求的,提供虛擬服務的IP,可以用Keepalive做高可用
DIP:在Director實現與RS通信的IP
RIP:RealServer IP


(二)LVS類型

LVS類型有四種:NAT、DR、TUN、FULLNAT

2.1 LVS/NAT

多目標IP的DNAT,通過將請求報文中的目標地址和目標端口改為某挑出的RS的RIP和PORT實現轉發

模型:

LVS實際操作與調度方法

NAT

LVS NAT的特性
1.RS應該使用私有地址
2.RS的網關必須指向DIP
3.RIP和DIP必須在同一網段內
4.請求和響應的報文都得經過Director,在高負載場景中,Director很可能成為性能瓶頸
5.支持端口映射
6.RS可以使用任意支持集群服務的OS

2.2 LVS/DR

通過為請求報文重新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的MAC,目標MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變,請求報文經過Dirctor但響應報文不再經過Dirctor

模型

LVS實際操作與調度方法

DR

LVS實際操作與調度方法

IP說明

DR類型工作流程
如上圖所示:當客戶端請求VIP時,通過互聯網到達前端路由Route1,再通過交換機到達Dirctor上;而Dirctor在收到請求報文后,通過定義在ipvs規則中的各rip去獲得各RS的MAC地址,并在此報文外再封裝一個MAC地址,源MAC為Dirctor的dip端口的MAC而目標MAC改為其中一個RS的MAC,但該報文的目標ip(VIP)不變,最后通過dip接口發送給RS;為了RS能接收Dirctor發來的報文,需要在各RS上也配置VIP,但RS上的VIP是需要隔離前端arp廣播的,所以需要將各RS上的VIP隱藏(通常配置到lo網卡接口的別名上,并配合修改linux內核參數來實現);而RS封裝響應報文時,源IP為VIP,目標ip為CIP,并通過RIP的網絡接口直接向外發送響應,不再經過Dirctor。
需要注意的是:因為Route1的A點的IP和Dirctor的VIP在同一網段內,VIP通常是公網IP;而DIP、RIP通常是私有IP,且這兩個IP通常也應在同一物理網絡內;假設RIP響應時指向的網關為Route1的A點,這就意味著RIP與A點不在同一網段內,因此將無法響應給客戶端,所以需要另加一個路由route2,Route2能夠通過D接口訪問互聯網,且Route2的C點的IP需要與RIP在同一網段內,此時RIP響應的報文就通過Route2發送。

上文黑色斜體部分的實現及確保前端路由器將目標IP為VIP的請求報文發往Director,方法c是最佳的選擇:
(a) 在前端網關即Dirctor做靜態綁定
(b) 在RS上使用arptables
(c) 在RS上修改內核參數以限制arp通告及應答級別:

arp_announce 定義arp通告級別
arp_ignore 定義arp應答級別

Linux kernel從2.4.26與2.6.4以后引入了兩個設備標識,即上面提到的arp_announce arp_ignore來調整arp模式
arp_announce:0:默認的,通告時告之本機所使用的所有地址、配置、接口1: 盡量只通告接入的網絡一端的接口地址(不絕對保證)2: 必需避免向非本機網絡通告    # DR模式需要   地址/proc/sys/net/ipv4/conf/enoXXX/arp_announcearp_ingore: 
0: 默認的,響應本機接口上配置的所有的目標IP地址1:  只響應入棧報文的那個接口     # DR模式需要  地址同上描述

LVS DR類型的特性
1.RS可以使用私有地址,也可以使用公網地址,此時可以直接通過互聯網連入RS,以實現配置、監控等
2.RS的網關一定不能指向DIP
3.RS跟Dirctory要在同一物理網絡內(不能有路由器分隔)
4.請求報文必須經過Dirctory,但響應報文不能經過Director而是由RS直接發往Client以釋放Directory的壓力。
5.不支持端口映射(因為響應報文不經過Drictor)
6.RS可以使用大多數的操作系統
7.Dirctor的VIP對外可見,RS的VIP對外不可見

2.3 LVS/TUN

模型:

LVS實際操作與調度方法

TUN

TUN類型工作流程

LVS TUN類型特性
1.RIP,DIP,VIP都得是公網地址
2.RS的網關不會指向也不可能指向DIP
3.請求報文經過Directory,但響應報文一定不經過Director
4.不支持端口映射
5.RS的OS必須得支持隧道功能 ??

2.4 LVS/FULLNAT (LVS默認不支持此類型)

通過同時修改請求報文的源IP地址和目標IP地址進行轉發
CIP–>DIP
VIP–>RIP

特點

  1. VIP是公網地址,RIP和DIP是私網地址,且通常不在同一IP網絡,因此,RIP的網關一般不會指向DIP

  2. RS收到的請求報文源地址是DIP,因此只需響應給DIP, 但Dirctor還要將其發往Client

  3. 請求和響應報文都經由Dirctor

  4. 支持端口映射.


(三)LVS調度方法(Scheduler)

LVS的調度方法分為兩類(靜態算法、動態算法),共10種

靜態方法:僅根據算法本身進行調度(注重起點公平)
① rr:Round Robin 輪詢,按順序輪流分配到集群中的RS服務器上,不支持權重。
② wrr:Weighted RR 權重輪詢,根據RS的不同處理能力來調度訪問請求??杀WC處理能力強的服務器能處理更多的訪問流量。

③ sh:source hashing 源地址hash,對請求的客戶端IP進行hash計算,可實現session綁定,但可能會破壞負載均衡。Director在本地維護一張hash表,此表保存有每一個源IP及其第一次調度哪一個Server,每一條記錄都有默認時長
④ dh:destination hashing 目標地址hash,請求的目標IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。Director在本地維護一張散列表,此表保存有每一次請求的目標IP及其對應調度的目標服務器(RS) 。將發往同一個目標地址的請求始終轉發至第一次挑中的RS。

動態方法:根據算法及RS當前的負載狀態(注重結果公平)
⑤ lc:Least Connection 最少連接,計算當前的負載Overhead=Active*256+Inactive來實現,采用計算值最小的RS,不支持權重。

⑥ wlc: Weighted LC 權重最少連接,具有較高權重的服務器將承受較大比例的活動連接負載計算方法:Overhead=(Active*256+Inactive)/weight

⑦ sed:Shortest Expect Delay 最短期望延遲,wlc的改進算法,先選擇權重較大的服務器計算方法:Overhead=(Active+1)*256/weight

⑧ nq:Nerver Queus: sed算法的改進,永不排隊
⑨ lblc:Locality-based least connection 基于本地的最少連接,相當于dh+lc
⑩ lblcr:基于復制的基于本地的最少連接 Replicated and Locality-based least connection


(四)ipvsadm命令

grep -i -C "ipvs" /boot/config-3.10.0-327.el7.x86_64查看ipvs支持的協議與調度方法

① 對集群的操作

  1. 首先要確定好需要使用哪種拓撲類型(NAT DR TUN)的集群

-A -t|u|f  service-address [-s scheduler] [-p [timeout]]
    -A:添加一個集群服務     # Add
    -E:修改一個集群服務     # Edit
    -D:刪除集群服務        # Delete    ipvsadm -D -t 10.1.0.5:80
    -t:tcp協議服務
    -u:udp協議服務
    -f:firewall make通常應用于將兩個或以上的服務綁定為一個服務進行處理時使用  
        示例:ipvsadm -A -f 11 -s wrr     
        # 這個11為通過iptables xxxx -j MARK --set-mark 11 得到

    service-address   # 即LVS服務器的IP地址加之前選項指明的協議類型端口
        -t IP:port   # tcp協議
        -u ip:port   # udp協議
        -f firewall_mark  # 后接一個標記數字,將多個端口組織成一個集群進行統一調度

    -s 調度算法,默認為wlc
    -p: persistence     # LVS的持久連接功能,沒有接數字則默認為300秒

② 對RS的操作

-a -t|u|f service-address -r server-address -[g|i|m] [-w weight]  # LVS的類型在這里定義
    -a:添加RS    -e:修改    -d:刪除
    -r: 后接 RS的ip[:port]
    -g:gateway,  DR默認DR模型
    -m:masquerade, NAT模型
    -i:ipip, TUN模型
    -w:權重

③ 查看、清空、保存、導入規則

-L|l:顯示規則
    -n, --numeric: 不反解析IP地址和端口,數值格式顯示主機地址和端口號
    --exact: 顯示精確值
    --stats: 統計數據
    --rate: 速率
    --timeout: 顯示tcp、tcpfin和udp的會話超時時長
    --sort: 顯示當前的ipvs連接狀況
    -c, --connection: 查看連接數清空規則
    ipvsadm -C     # Clear
保存規則(一般都保存在/etc/sysconfig/ipvsadm)
    * service ipvsadm save 
    * ipvsadm -S 重定向至其他文件中 
    * ipvsadm-save 重定向到標準輸出
    * systemctl stop ipvsadm.service   # 停止時會自動保存
導入規則
    ipvsadm -R < /save_file

(五)LVS實際配置

5.1 配置一個NAT類型(2臺RS)的集群

LVS: if1=10.1.252.206 if2=172.16.50.129/24
RS1: 172.16.50.130/24
RS2: 172.16.50.131/24

原創文章,作者:sjfbjs,如若轉載,請注明出處:http://www.www58058.com/55043

(2)
sjfbjssjfbjs
上一篇 2016-10-30
下一篇 2016-10-30

相關推薦

  • linux及其文件系統

       計算機是由CPU、存儲設備(內存、硬盤)、I/O設備(鍵盤、鼠標、顯示器)組成。CPU負責進行運算和控制;硬盤和內存負責永久和臨時存儲數據;Input設備負責輸入指令或者數據,output設備負責輸出處理過的數據。          Linux的發行版主要有Debian,S…

    Linux干貨 2016-09-21
  • shell腳本一鍵安裝二進制Apache

    安裝背景:用的一臺最小化安裝的centos6。 編譯安裝安裝的必備安裝gcc,gcc-c++ 安裝包arp,arp-util以及pcre的壓縮包已經傳到七牛,沒有通過官網下載。太慢。 apache是通過官網下載的,所以下載比較慢,需要的話更改下地址 不足,只按照正常流程寫,未做任何異常判斷處理 #/bin/bash #一鍵安裝Apache #安裝GCC ec…

    Linux干貨 2016-07-10
  • 解決CentOS SSH 連接慢

    1、關閉DNS反向解析在linux中,默認就是開啟了SSH的反向DNS解析,這個會消耗大量時間,因此需要關閉。配置文件路徑 vim /etc/ssh/sshd_configUseDNS=no 在配置文件中,雖然UseDNS yes是被注釋的,但默認開關就是yes 2、關閉SERVER上的GSS認證在authentication gssapi-with-mic…

    Linux干貨 2018-01-10
  • 自制linux系統

    本文主要通過裁剪現有Linux系統,打造一個屬于自己的Linux小系統,讓其能夠裝載網卡驅動,并配置IP地址,實現網絡功能。 自制linux系統 步驟概述: 1、新建一個硬盤2、在該新硬盤上新建兩個分區,一個當boot分區,一個當/分區3、格式化并且掛載兩個分區4、安裝grub至目標磁盤5、為grub提供配置文件6、復制內核文件和initrd文件7、創建目標…

    Linux干貨 2016-09-13
  • 謹記初心

    謹以此文記錄我從小白成長的心路歷程與技術的成長

    Linux干貨 2018-03-26
  • 計算機網絡基礎

    計算機網絡基礎 分層的網絡模型 網絡發展到今天,規模很龐大,內容很復雜,不利于網絡的管理和教學。網絡分層可以:降低網絡結構的復雜性、把各層的接口標準化、簡化模塊設計、確保技術的互操作性、加快發展速度以及簡化教學過程。 OSI模型——國際標準:根據國際標準化組織( ISO,International Standards Orgnization)提案,計算機網絡…

    Linux干貨 2016-11-22
欧美性久久久久