1. 程式人生 > >Lvs-DR模式負載均衡

Lvs-DR模式負載均衡

過程

client ->VS->RS->client(VS只做排程,RS為伺服器)

DR模式:直接路由,VS改寫請求報文的MAC地址,由排程演算法分配真實的伺服器,MAC地址改為真實伺服器的MAC地址

      伺服器將響應訊息直接傳送給客戶端.

原理詳情

1、通過在排程器VS上修改資料包的目的MAC地址實現轉發,CIP不變,目的地址仍然是VIP地址;(cip(cm,m代表mac地址)->vip(vm->RM,在2層鏈路層改變了mac地址來定位))
2、請求的報文經過排程器,而伺服器響應處理後的報文無需經過排程器,因此併發訪問量大時使用效率很高(和NAT模式比)
3、因為DR模式是通過MAC地址改寫機制實現轉發,因此所有RS節點和排程器只能在一個局域網裡面
4、伺服器主機需要繫結VIP地址在LO介面上,且需要配置ARP抑制。
5、伺服器節點的預設閘道器不需要配置成LB,而是直接配置為上級路由的閘道器,能讓伺服器直接出網就可以。
6、因為DR模式的排程器僅做MAC地址的改寫,所以排程器就不能改寫目標埠,那麼伺服器就得使用和VIP相同的埠提供服務。

實驗環境

iptables和selinux關閉
redhat6.5
VS:server1 172.25.254.1
RS:server2 172.25.254.2
RS:server3 172.25.254.3
vip:172.25.254.100

VS:

[[email protected] ~]# yum install -y ipvsadm
[[email protected] ~]# iptables -L   //檢視iptables是否關閉
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[[email protected] ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[

[email protected] ~]# ipvsadm -A -t 172.25.254.100:80 -s rr  
//-s排程演算法,預設為wlc加權排程演算法
[[email protected] ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2:80 -g
//-a表示在新增虛擬服務中新增,-g表示使用直連模式
[[email protected] ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3:80 -g
[[email protected] ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:80 rr
  -> 172.25.254.2:80               Route   1      0          0         
  -> 172.25.254.380               Route   1      0          0    
[[email protected] ~]# ip addr add 172.25.254.100/24 dev eth0  //新增虛擬ip
[[email protected] ~]# ip addr
link/ether 52:54:00:9f:e0:90     
inet 172.25.254.1/24
inet 172.25.254.100/24

RS:

注意: RS上必須有vip才能建立連線

Server2:
[[email protected] ~]# /etc/init.d/httpd start
[[email protected] html]# cat index.html
www.westos.org-Server2
[[email protected] ~]# ip addr add 172.25.254.100/24 dev eth0
//新增虛擬ip,這裡是臨時新增
[[email protected] ~]# ip addr
link/ether 52:54:00:74:05:fc
inet 172.25.254.2/24 brd
inet 172.25.254.100/24   

Server3:
[[email protected] ~]# /etc/init.d/httpd start
[[email protected] html]# cat index.html
bbs.westos.org
[[email protected] ~]# ip addr add 172.25.254.100/24 dev eth0
[[email protected] ~]# ip addr
link/ether 52:54:00:10:6f:56
inet 172.25.254.3/24
inet 172.25.254.100/24

客戶端測試:

發現連線到的ip(VS和RS的ip都一樣)是隨機的,因為三臺server在同一VLAN下具有相同的vip,故不能保證每次都會訪問排程器server1

為了解決這個問題,需要設定禁止訪問連線RS

RS:

server2:
[[email protected] ~]# yum install arptables_jf -y
[[email protected] ~]# arptables -A IN -d 172.25.253.100 -j DROP  
//-A控制arp協議,IN新增策略,mangle轉換
[[email protected] ~]# arptables -A OUT -s 172.25.254.100 -j mangle --mangle-ip-s 172.25.254.2
[[email protected] ~]# /etc/init.d/arptables_jf save
[[email protected] ~]# cat /etc/sysconfig/arptables  
//此檔案存有arptables的記錄,關掉之後,重啟依舊存在

server3:
[[email protected] ~]# yum install arptables_jf -y
[[email protected] ~]# arptables -A IN -d 172.25.254.100 -j DROP
[[email protected] ~]# arptables -A OUT -s 172.25.254.100 -j mangle --mangle-ip-s 172.25.254.3
[[email protected] ~]# /etc/init.d/arptables_jf save

Vs對後端沒有健康檢查

方式一:用ldirectord解決此問題

VS:

[[email protected] ~]# yum install ldirectord-3.9.5-3.1.x86_64.rpm -y
[[email protected] ~]# rpm -ql ldirectord   //檢視配置檔案
/usr/share/doc/ldirectord-3.9.5/ldirectord.cf
[[email protected] ~]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
[[email protected] ~]# cd /etc/ha.d
[[email protected] ha.d]# ls
ldirectord.cf  resource.d  shellfuncs
[[email protected] ha.d]# vim ldirectord.cf  
virtual=172.25.254.100:80
    real=172.25.254.2:80 gate
    real=172.25.254.3:80 gate
    fallback=127.0.0.1:80 gate
    service=http
    protoccol=tcp
    checkport=80
    request="index.html"

[[email protected] ha.d]# ipvsadm -C  //清理規則
[[email protected] ha.d]# ipvsadm -l  //檢視是否清除
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[[email protected] ha.d]# /etc/init.d/ldirectord start //再次開啟服務又可以加載出規則
[[email protected] ha.d]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:80 rr
  -> 172.25.254.2:80               Route   1      0          0         
  -> 172.25.254.3:80               Route   1      0          0    
[[email protected] ha.d]# cd /var/www/html
[[email protected] html]# vim index.html
系統維護中......
//在客戶端curl 172.25.254.2測試時,RS輪詢,當關閉server2時,只訪問server3,RS都關閉時會訪問本地,而顯示“系統維護中......”

方式二:用keepalived軟體解決

再建立一個子盤server4:172.25.254.4

server1:
[[email protected] ~]# tar zxf keepalived-2.0.6.tar.gz
[[email protected] ~]# cd keepalived-2.0.6
[[email protected] keepalived-2.0.6]# ./configure --prefix=/usr/local/keepalived --with-init=SYSV
[[email protected] keepalived-2.0.6]# yum install openssl-devel
[[email protected] keepalived-2.0.6]# ./configure --prefix=/usr/local/keepalived --with-init=SYSV
[[email protected] keepalived-2.0.6]# make  //編譯
[[email protected] keepalived-2.0.6]# make install
[[email protected] keepalived-2.0.6]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[[email protected] keepalived-2.0.6]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[[email protected] keepalived-2.0.6]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[[email protected] keepalived-2.0.6]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
[[email protected] keepalived-2.0.6]# cd /usr/local/
[[email protected] local]# scp -r keepalived/ server4:/usr/local/  將keepalived傳給server4
[[email protected] local]# cd /etc/init.d/
[[email protected] init.d]# chmod +x keepalived
[[email protected] init.d]# /etc/init.d/keepalived start  //開啟服務

server4:
[[email protected] ~]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[[email protected] ~]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[[email protected] ~]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[[email protected] ~]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
[[email protected] ~]# chmod +x /usr/local/keepalived/etc/init.d/keepalived
[[email protected] local]# /etc/init.d/keepalived start

server1:
[[email protected] ~]# cd /etc/keepalived/
[[email protected] keepalived]# yum install mailx -y
[[email protected] keepalived]# vim keepalived.conf //內容如下
//Virtual_router_id虛擬路由id,Delay_loop後端的健康檢查,Persistence_timeout持續連線,一直保持協議磋商
global_defs {
   notification_email {
        [email protected]
        }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   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        //server4上為BACKUP          
    interface eth0
    virtual_router_id 35
    priority 100        #數值越大,優先順序越高 server4上為50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100
        }
}

virtual_server 172.25.254.100 80 {       #VS的vip,服務啟動生效時自動新增
    delay_loop 3            #對後端的健康檢查時間
    lb_algo rr              #排程演算法
    lb_kind DR              #模式為DR
    #persistence_timeout 50     #註釋持續連線
    protocol TCP

real_server 172.25.254.2 80{     #RS
        weight 1
        TCP_CHECK{
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 172.25.25.3 80{
        weight 1
        TCP_CHECK{
            connect_timeout 3
            retry 3
            delay_before_retry 3
       }
    }
}
[[email protected] keepalived]# scp keepalived.conf server4:/etc/keepalived/
[[email protected] keepalived]# ip addr del 172.25.254.100/24 dev eth0
[[email protected] keepalived]# /etc/init.d/keepalived restart

高可用

[[email protected] keepalived]# /etc/init.d/keepalived stop
//關掉server1(也可使用echo c > /proc/sysrq-trigger破壞server1的核心使其不能使用),客戶端檢視內容不會變化,因為server4接替了server1
[[email protected] keepalived]# cat /var/log/messages  //檢視server4的日誌

[[email protected] ~]# /etc/init.d/httpd stop  
//將兩個RS都關掉,則不能正常訪問,與ldirectord不同的是本地不會接替讓VS訪問

相關推薦

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

Lvs-DR模式負載均衡

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

LVS/DR + keepalived負載均衡高可用實現

ha lvs keepalive 一、keepalived簡介keepalived是分布式部署解決系統高可用的軟件,結合lvs(LinuxVirtual Server)使用,解決單機宕機的問題。keepalived是一個基於VRRP協議來實現IPVS的高可用的解決方案。對於LVS負載均衡來說,如果

Keepalived結合LVS-DR實現負載均衡高可用集群

table 開啟 strong 部署 toc ifconf cal 指向 protocol 簡介 Keepalived期初是專門針對LVS設計的一款強大的輔助工具,主要用來提供故障切換和健康檢查功能—判斷LVS負載調度器、節點服務器的可用性,及時隔離並替換新的服務器,當故障

使用虛擬機器實現lvs nat模式負載均衡

1.準備伺服器與配置網路 以真實PC機作為使用者,為節省資源在虛擬機器中只克隆配置了3臺centos伺服器,一臺作為LVS伺服器,兩臺作為真正處理資料的web伺服器,由於LVS伺服器充當了路由的功能,所以要兩個網絡卡,LVS伺服器連線主機的網絡卡用Host-only方式與

負載均衡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集群的簡寫,翻譯成中文就是負載均衡集群 負載均衡的原理就是當用戶的請求過來時,會直接發到分發器上,然後它把用戶的請求根據預先設

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

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

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

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

lvs負載均衡的四種模式原理,LVSDR模型,LVS+keeaplived實現負載均衡,keepalived實現高可用

一,LVS的簡介: Linux virtual system,是由目前阿里著名工程師章文嵩開發的一寬開源的軟體。LVS工作在一臺server上提供Directory(負載均衡器)的功能,它本身並不提供任何服務,只是把特定的請求轉發給對應的realserver(

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

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

使用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(DR模式)安裝實戰

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

LVS-DR模式實現調度負載

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

搭建LVS-DR負載均衡叢集、Keepalived-LVS高可用負載均衡叢集

LVS DR模式搭建準備工作三臺機器, 三臺機器均有公網IP。排程器(director)IP:192.168.8.133real server1(real1)IP:192.168.8.134real server2(real2)IP:192.168.8.135VIP:192.

lvs+keepalived實現負載均衡

keepalive 裝載 announce log loopback -s scheduler sad apr LVS簡介: lvs是負載均衡較常用的軟件之一,lvs官方提供了一個命名的約定: vip:虛擬ip地址,縮寫是vip,vip是負載均衡器對外提供服務的ip。 ri

LVS/DR模式原理剖析(FAQs)

load 是否 live forward onf client 默認 rec add 1. LVS/DR如何處理請求報文的,會修改IP包內容嗎? 1.1 vs/dr本身不會關心IP層以上的信息,即使是端口號也是tcp/ip協議棧去判斷是否正確,vs/dr本身主要做這麽幾個事

LVS DR模式下的集群實現步驟

lvs dr模式下的集群實現步驟1.安裝Linux服務器,做為虛擬服務器(DR)2.配置網絡環境,設置靜態IP,並能夠訪問互聯網3.檢查ipvsadm是否安裝,如果沒有安裝請先安裝ipvsadmrpm -ql ipvsadm4.安裝ipvsadmrpm -y install ipvsadm5.設置虛擬IPif

[Linux]-構建LVS-DR模式+Keepalived高可用群集

響應 完成 init.d .cn ive spa val 通告 配置文件 Keepalived Keepalived是一款高可用軟件,它的功能主要包括兩方面:1)通過IP漂移,實現服務的高可用:服務器集群共享一個虛擬IP,同一時間只有一個服務器占有虛擬IP並對外提供服務,若