負載均衡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、 在互聯網應用中,隨著站點對硬件性能、響應速度、服務穩定性、數據可靠性等要求越來越高,單臺服務器難以承擔所有的訪問。除了使用價格昂貴的大型機、專用負載分流設備以外,企業多選擇