1. 程式人生 > >負載均衡LVS(DR模式)安裝實戰

負載均衡LVS(DR模式)安裝實戰

1.編譯安裝ipvsadm

首先從LVS官網下載tarball,解壓後make && make install即可。

要注意的是LVS的依賴有:popt-static、libnl、kernel。如果yum源裡有就直接安裝,如果沒有就自行下載,但一定要對應上已有軟體如popt或Linux核心的版本。

$ tar -xzvf ipvsadm-1.26.tar.gz
$ cd ipvsadm-1.26
$ make
make -C libipvs
make[1]: Entering directory `/root/lvs/ipvsadm-1.26/libipvs'
gcc -Wall -Wunused -Wstrict-prototypes -g -fPIC -DLIBIPVS_USE_NL  -DHAVE_NET_IP_VS_H -c -o libipvs.o libipvs.c
gcc -Wall -Wunused -Wstrict-prototypes -g -fPIC -DLIBIPVS_USE_NL  -DHAVE_NET_IP_VS_H -c -o ip_vs_nl_policy.o ip_vs_nl_policy.c
ar rv libipvs.a libipvs.o ip_vs_nl_policy.o
ar: creating libipvs.a
a - libipvs.o
a - ip_vs_nl_policy.o
gcc -shared -Wl,-soname,libipvs.so -o libipvs.so libipvs.o ip_vs_nl_policy.o
make[1]: Leaving directory `
/root/lvs/ipvsadm-1.26/libipvs' gcc -Wall -Wunused -Wstrict-prototypes -g -DVERSION=\"1.26\" -DSCHEDULERS=\""rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq"\" -DPE_LIST=\""sip"\" -DHAVE_POPT -DHAVE_NET_IP_VS_H -c -o ipvsadm.o ipvsadm.c ipvsadm.c: In function âprint_largenumâ: ipvsadm.c:1383: warning: field width should have type âintâ, but argument 2 has type âsize_tâ gcc -Wall -Wunused -Wstrict-prototypes -g -DVERSION=\"1.26\" -DSCHEDULERS=\""
rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq"\" -DPE_LIST=\""sip"\" -DHAVE_POPT -DHAVE_NET_IP_VS_H -c -o config_stream.o config_stream.c gcc -Wall -Wunused -Wstrict-prototypes -g -DVERSION=\"1.26\" -DSCHEDULERS=\""rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq"\" -DPE_LIST=\""sip"\" -DHAVE_POPT -DHAVE_NET_IP_VS_H -c -o dynamic_array.o dynamic_array.c gcc -Wall -Wunused -Wstrict-prototypes -g -o ipvsadm ipvsadm.o config_stream.o dynamic_array.o libipvs/libipvs.a -lpopt -lnl

最後make install,安裝ipvsadm、ipvsadm-save等命令,並新增ipvsadm到系統服務,方便了後續使用。

$ make install
make -C libipvs
make[1]: Entering directory `/root/lvs/ipvsadm-1.26/libipvs'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/root/lvs/ipvsadm-1.26/libipvs'
if [ ! -d /sbin ]; then mkdir -p /sbin; fi
install -m 0755 ipvsadm /sbin
install -m 0755 ipvsadm-save /sbin
install -m 0755 ipvsadm-restore /sbin
[ -d /usr/man/man8 ] || mkdir -p /usr/man/man8
install -m 0644 ipvsadm.8 /usr/man/man8
install -m 0644 ipvsadm-save.8 /usr/man/man8
install -m 0644 ipvsadm-restore.8 /usr/man/man8
[ -d /etc/rc.d/init.d ] || mkdir -p /etc/rc.d/init.d
install -m 0755 ipvsadm.sh /etc/rc.d/init.d/ipvsadm

最後,關閉防火牆和selinux:service iptables stop && setenforce 0

2.DR模式配置

2.1 Ipvsadm引數解釋

$ ipvsadm -C
$ ipvsadm -A -t 192.168.100.20:80 -s rr 
$ ipvsadm -a -t 192.168.100.20:80 -r 192.168.100.116:80 -g -p60 
$ ipvsadm -a -t 192.168.100.20:80 -r 192.168.100.117:80 -g -p60

ipvsadm引數含義:

  • -C:清除已有規則。
  • -A:新增VIP服務,後跟服務的訪問地址。
  • -t:TCP協議,還是UDP協議(-u)。
  • -s:負載均衡演算法,rr表示RoundRobin。
  • -a:新增RealServer到VIP,後跟虛地址。
  • -r:新增RealServer到VIP,後跟實地址。
  • -g:透傳模式(-g表示Direct Routing即DR模式,-i表示ipip封裝即Tunneling模式,-m表示Network Access Translation即NAT模式)
  • -p:Session粘連,同一客戶端的請求在一段時間內都負載到同一RealServer。

2.2 Director配置

使用DR模式必須在主機上開啟IP轉發。

$ vi /etc/sysctl.conf
    ...
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.em1.send_redirects = 0
    ...
$ sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.em1.send_redirects = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
vm.swappiness = 0

網路配置:

$ ifconfig em1:0 192.168.242.101 broadcast 192.168.242.255 netmask 255.255.255.0 up
[[email protected] lvs]# ifconfig
em1       Link encap:Ethernet  HWaddr B0:83:FE:DB:48:DF  
          inet addr:192.168.242.102  Bcast:192.168.242.255  Mask:255.255.255.0
          inet6 addr: fe80::b283:feff:fedb:48df/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          ...

em1:0     Link encap:Ethernet  HWaddr B0:83:FE:DB:48:DF  
          inet addr:192.168.242.101  Bcast:192.168.242.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:40 Memory:95000000-957fffff

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          ...

$ route add -host 192.168.242.101 dev em1:0
$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.242.101 *               255.255.255.255 UH    0      0        0 em1
192.168.242.0   *               255.255.255.0   U     0      0        0 em1
192.168.180.0   *               255.255.255.0   U     0      0        0 em3
link-local      *               255.255.0.0     U     1002   0        0 em1
link-local      *               255.255.0.0     U     1004   0        0 em3
default         192.168.180.253 0.0.0.0         UG    0      0        0 em3

接下來用ipvsadm配置LVS:

$ ipvsadm -A -t 192.168.242.101:8088 -s rr
$ ipvsadm -a -t 192.168.242.101:8088 -r 192.168.242.105:8088 -g
$ ipvsadm -a -t 192.168.242.101:8088 -r 192.168.242.106:8088 -g
$ ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.242.101:8088 rr
  -> 192.168.242.105:8088         Route   1      0          0         
  -> 192.168.242.106:8088         Route   1      0          0         

$ ipvsadm-save > /etc/sysconfig/ipvsadm
$ cat /etc/sysconfig/ipvsadm
-A -t 192.168.242.101:radan-http -s rr
-a -t 192.168.242.101:radan-http -r 192.168.242.105:radan-http -g -w 1
-a -t 192.168.242.101:radan-http -r 192.168.242.106:radan-http -g -w 1

$ service ipvsadm start
Clearing the current IPVS table:                           [  OK  ]
Applying IPVS configuration:                               [  OK  ]

2.4 RealServer配置

首先配置核心遮蔽掉Director發來的ARP訊息:

$ vi /etc/sysctl.conf 
    ...
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.em1.arp_ignore = 1
net.ipv4.conf.em1.arp_announce = 2
    ...
$ sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.em1.arp_ignore = 1
net.ipv4.conf.em1.arp_announce = 2
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
vm.swappiness = 0

將VIP新增到loopback介面,並且netmask必須是255.255.255.255。

$ ifconfig lo:0 192.168.242.101 broadcast 192.168.242.255 netmask 255.255.255.255 up
$ ifconfig
em1       Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet addr:192.168.242.105  Bcast:192.168.242.255  Mask:255.255.255.0
          inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          ...

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          ...

lo:0      Link encap:Local Loopback  
          inet addr:192.168.242.102  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1

$ route add -host 192.168.242.101 dev lo:0
$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.242.101 *               255.255.255.255 UH    0      0        0 lo
192.168.242.0   *               255.255.255.0   U     0      0        0 em1
192.168.180.0   *               255.255.255.0   U     0      0        0 em3
link-local      *               255.255.0.0     U     1002   0        0 em1
link-local      *               255.255.0.0     U     1004   0        0 em3
default         192.168.180.253 0.0.0.0         UG    0      0        0 em3

因為RealServer上不需要安裝啟動ipvsadm服務,所以我們要手動載入ip_vs到核心(Director上是ipvsadm自動幫我們載入的):

$ modprobe ip_vs
$ lsmod | grep ip
ip_vs                 125220  0 
ip6t_REJECT             4628  2 
nf_conntrack_ipv6       8748  2 
nf_defrag_ipv6         11182  1 nf_conntrack_ipv6
nf_conntrack           79758  2 nf_conntrack_ipv6,xt_state
ip6table_filter         2889  1 
ip6_tables             18732  1 ip6table_filter
ipv6                  317340  399 ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
libcrc32c               1246  2 ip_vs,bnx2x

3.負載均衡測試

在兩臺RealServer上通過tcpdump tcp -A -ni em1 port 8088監聽,不斷訪問VIP就會發現請求輪詢轉發到兩臺RealServer上,實現了負載均衡。注意監聽的是em1而不是lo:1。

測試時犯了一個錯誤,我一直在VIP本機上測試,發現怎麼都不通,以為LVS沒配好於是就一直配啊配,結果從其他機器訪問了一下VIP發現其實早就配好了…

經過這次配置學習,以及上面監聽em1而非lo:1和VIP本機訪問的問題,都證明了我對LVS和網路基礎的不夠熟悉,還要強化學習一下!

相關推薦

負載均衡LVS(DR模式)安裝實戰

1.編譯安裝ipvsadm 首先從LVS官網下載tarball,解壓後make && make install即可。 要注意的是LVS的依賴有:popt-static、libnl、kernel。如果yum源裡有就直接安裝,如果沒有就自行下載,

LVS負載均衡DR模式

LVS負載均衡之DRLVS負載均衡:常用的負載均衡開源軟件有nginx、lvs、haproxy,商業的硬件負載均衡設備F5、Netscale。LVS模式工作在網絡層,且由內核實現負載轉發,效率要比nginx高。LVS負載均衡包含三種模式:? NAT模式(類似路由器,實現外網內網地址映射,負載均衡服務器修改請

LVS負載均衡群集DR模式

LVS下LVS-DR在DR模式的群集中,LVS負載器為訪問入口,但不作網關處理;服務器池中所有節點都各自接入internet,發送給客戶端WEB響應數據包不需要LVS負載調度器。nat模式和dr模式的區別 兩種模式都是實現負載均衡lvs的方法,nat模式在包進入的時候在分發器上做了目的地址的mac轉換,也就是

超詳細LVS負載均衡群集-DR模式

開啟路由轉發 分享圖片 服務 conf 測試 網段 mage network cat 工作原理 當大量用戶訪問web群集時,所有的訪問請求均發到LVS負載均衡器的外網接口,LVS負載均衡器將用戶的訪問請求進行分流。分別發給Web服務器池中的不同節點,Web服務器節點收到用戶

一臺虛擬機器搞定負載均衡lvs-NAT模式lvs-DR模式搭建

首先來說一下負載均衡,為了解決一個伺服器不能支撐大併發量使用者的訪問,所以通過負載均衡的方法來解決這個問題,負載均衡有兩種實現方案,一種是通過硬體來實現可以購買 f5裝置,一種是通過軟體來實現如lvs、nginx等,由於lvs直接是linux系統核心級別的,實現起來方便所以仙子主要講解lvs實現

LVS負載均衡群集--DR模式

在之前的部落格裡已經介紹過NAT模式,這裡再部署一下DR模式。TUN模式不做闡述,因為應用到的環境比較大,但是往往一般大環境又不用TUN模式來做,所以TUN就直接放棄。 在DR模式的群集中,LVS負載排程器作為群集的訪問入口,但不作為閘道器使用;伺服器池中的所

Lvs負載均衡dr模式

1.安裝Lvs   安裝ipvsadm工具 yum -y install ipvsadm   2.先進行儲存再進行啟動 service ipvsadm save service ipvsadm start   3.開啟路由轉發功能,並啟動生效。 vi  /etc/sysc

lvs-dr模式 安裝配置

二零一六第一季度版本V1.0LVS_DR模式 安裝配置 伺服器組 吳興普 2016.01 LVS_DR模式搭建配置一基本環境 實驗環境: WinServer2012 Hyper-V  1.群集地址(VI

負載均衡LVS DR模式搭建,DR只用一個公網ip,Keepalived+LVS DR)

manage 出現 backup wan ria 文件 重復 ipv4 簡單 一、LVS DR模式搭建準備工作三臺機器:分發器,dir:192.168.52.100rs1:192.168.52.101 (網關改回來,之前nat模式改成100)rs2: 192.168.52

負載均衡集群介紹(LB集群)、 LVS介紹、LVS NAT模式LVS DR模式

負載均衡集群(LB)、lvs 負載均衡集群介紹(LB集群) LB集群是load balance集群的簡寫,翻譯成中文就是負載均衡集群 負載均衡的原理就是當用戶的請求過來時,會直接發到分發器上,然後它把用戶的請求根據預先設

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

Linux叢集儲存——day2——叢集LB負載均衡 LVS/NAT、LVS/DR 模式

叢集:    叢集 目的: 提高效能、降低成本、提高可擴充套件性、增強可靠性 HPC 高效能運算叢集 反覆進行一個計算,一般用於科研等需要精算的領域 LB 負載均衡叢集 多臺機器提

LB 負載均衡叢集LVS——DR模式----解析

實驗說明1.使用KVM虛擬2.DR模式要求Director DIP 和 所有RealServer RIP必須在同一個網段及廣播域3.所有節點均可以訪問外網4.前端路由器工作為路由模式準備工作環境1.實驗環境,全部關閉防火牆,防止啟阻擋程式執行    systemctl st

Lvs-DR模式負載均衡

過程 client ->VS->RS->client(VS只做排程,RS為伺服器) DR模式:直接路由,VS改寫請求報文的MAC地址,由排程演算法分配真實的伺服器,MAC地址改為真實伺服器的MAC地址       伺服器將響應訊息直接傳送給客戶端.

使用Lvs DR模式實現負載均衡

LVS是Linux VirtualServer的簡寫,意即Linux虛擬伺服器,適應LVS可以構建高效能的負載均衡系統,LVS有三種模式即:LVS/NAT(網路地址轉換)、LVS/TUN(IP隧道)、LVS/DR(直接路由),通常用的是DR模式,下面介紹一下DR模式的配置方式。    假設測試環境:使用虛擬

Linux負載均衡軟體LVS-DR模式的簡單示例

本文一個簡單的示例演示LVS的配置(DR模式)和測試。使用的配置環境如下:Director server: 192.168.8.4Real server1: 192.168.8.5Real server2: 192.168.8.6VIP: 192.168.8.200網路top

LVS負載均衡之NAT模式

LVS負載均衡之NATLVS負載均衡之NAT模式 重點理解NAT方式的實現原理和數據包的改變。 (a). 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP?(b). PREROUTING檢查發現數據包的目標IP

LVS負載均衡群集---NAT模式

分層結構 在一起 Oz ack 查看 一個 sad 高可用群集 AR 群集 群集表示大量服務器的集合體,以區分於單個服務器。通常只提供一個訪問入口(域名或者IP地址),對外表現為一個整體。 群集的三種類型: 負載均衡群集: 以提高應用系統的響應能力,盡可能處理更多的

LVS-DR模式實現調度負載

per 完成 interval 工作 手動添加 local 比較 dr模式 stats 本篇文章主要梳理一下LVS前端調度過程及用戶請求過程 實驗架構 準備工作 添加各主機路由聯通主機通信 Client IP route add default gw 172.20.1

LVS負載均衡群集--NAT模式

mar 負載均衡群集 加載 啟動 ports etc type root share LVS簡介1、 在互聯網應用中,隨著站點對硬件性能、響應速度、服務穩定性、數據可靠性等要求越來越高,單臺服務器難以承擔所有的訪問。除了使用價格昂貴的大型機、專用負載分流設備以外,企業多選擇