負載均衡LVS(Linux Virtual Server)

負載均衡LVS(Linux Virtual Server)html

  目錄linux

負載均衡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官方標準內核的一部分。nginx

 LVS無需安裝
 安裝的是管理工具,第一種叫ipvsadm,第二種叫keepalive
 ipvsadm是經過命令行管理,而keepalive讀取配置文件管理
 後面咱們會用Shell腳本實現keepalive的功能

安裝ipvsadm管理工具(只在lb操做)web

第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

命令解釋vim

#步驟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)

相關文章
相關標籤/搜索