天天看點

部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

目錄

LVS-DR工作原理

1、LVS-DR資料包流向分析

Keepalived概述

keepalived工具介紹

keepalived服務重要功能

keepalived實作原理

VRRP虛拟備援協定

Keepalived體系主要子產品

使用Keepalived實作雙機熱備

部署LVS-DR叢集實驗

1、實驗準備

主DR伺服器配置

 備DR伺服器

​編輯 web伺服器1配置

 web伺服器2配置

 部署keepalivd(主-備)

 驗證

LVS-DR工作原理

LVS-DR(Linux Virtual Server Director Server)工作模式,是生産環境最常用的一種工作模式

LVS-DR模式,Director Server作為群集的通路入口,不作為網關使用                                            節點Director Server與Real Server需要在同一個網絡中,傳回給用戶端的資料不需要經過Director Server                                                                                                                                                為了對整個群集的通路,Director Server和Real Server都需要配置VIP位址

1、LVS-DR資料包流向分析

1、Clinent向目标VIP送出請求,Director(負載均衡器)接收

源IP:用戶端ip,目标ip:虛拟ip,源MAC:用戶端MAC位址,目标MAC:負載均衡器的MAC位址

2、Director根據負載均衡算法選擇RealServer_1(真實伺服器),不修改也不封裝IP封包,而是将資料幀的MAC位址改為RealServer_1的MAC位址,然後在區域網路上發送。

3、RealServer_1收到這個振,解封裝後發現目标IP與本機比對(RealSERVERRS事先綁定了VIP)于是處理這個封包,随後重新封裝封包,發送到區域網路。

源ip:虛拟ip,目标ip:客戶機ip,源MAC:真實ens33網卡MAC,目标MAC:用戶端MAC

注意:如果跨網段,則封包通過路由器由internet傳回給使用者

4、Client收到回複封包,Client認為得到正常的服務,而不會知道是哪一台伺服器處理的

①用戶端向目标VIP發送請求, 負載均衡器接收
②負載均衡器根據負載均衡算法選擇後端真實伺服器,不修改也不封裝IP封包,而是将資料幀的
MAC位址改為後端真實伺服器的MAC位址,然後在區域網路上發送
①後端真實伺服器收到這個幀,解封裝後發現目标IP與本機比對(事先綁定了VIP),于是處理
這個封包。
田随後重新封裝封包,将響應封包通過1o接口傳送給實體網卡然後向外發出用戶端将收到回複封包
。用戶端認為得到正常的服務,而不會知道是哪一-台伺服器處理的如果跨網段,則封包通過路由器經由internet傳回給使用者
           

5、LVS-DR中的ARP問題

在LVS-DR負載均衡集樣中,負載均衡與節點伺服器都要配置相同的VIP位址。
2、在區域網路中具有相同的IP位址,勢必會造成各伺服器ARP通信的系亂。
當ARPE播發送到VS-DR叢集時,因為負載均衡器和節點伺服器都是連接配接到相同網絡上,它們都會接收到ARP廣播。隻有前端的負
載均衡器進行響應,其他節點伺服器不應該響應ARP廣播。
3、對節點伺服器進行處理,使其不響應針對VIP的ARP請求。
使用虛接口1o:0 承載VIP位址設定核心參數arp_ ignore=1:系統隻響應目的IP為本地IP的ARP請求
4、 Rea1Serter傳回封包(源IP是VIP)經路由器轉發, 重新封裝封包時,需要先擷取路由器的MAC位址
5、發送ARP請求時,Linux預設使用IP包的源IP位址(即VIP)作為ARP請求包中的源IP位址,而不使
用發送接口的IP位址如: ens33
6、路由器收到ARP請求後,将更新ARP表項
7、原有的VIP對應Director的MAC位址會被更新為VIP對應RealServer的MAC位址
 
8、路由器根據ARP表項, 會将新來的請求封包轉發給Realserver, 導緻Di rector的VIP失效
解決方法:對節點伺服器進行處理,設定核心參數arp_announce=2:系統不使用IP包的源位址來設定ARP請求的源位址,而選擇發送接口的IP位址
           

Keepalived概述

Keepalived是企業應用中,單台伺服器承擔應用存在單點故障的危險,單點故障一旦發生,企業伺服器将會發生終端,造成極大的危害和損失

keepalived工具介紹

  • keepalived 負載均衡軟體設計的,用來管理并監控 LVS 叢集中各個服務節點的狀态,後來又加入了可以實作高可用的 VRRP 功能。是以,keepalived 除了能夠管理 LVS 叢集外,還可以為其他服務(例如:Nginx、Haproxy、MySQL等)實作高可用。
  • keepalived 軟體主要是通過 VRRP 協定實作高可用功能的。VRRP 是 Virtual Router Redundancy Protocol(虛拟路由器備援協定的縮寫,VRRP 出現的目的就是為了解決靜态路由單點故障的問題,它能夠保證當個别節點當機時,整個網絡可以不間斷地運作。是以,keepalived 一方面具有配置管理 LVS 的功能,同時還具有對 LVS 下面節點進行健康檢查的功能,另一方面也可實作系統網絡服務的高可用。

keepalived服務重要功能

  • 管理LVS負載均衡軟體
  • 支援故障自動切換(Failover)
  • 實作LVS叢集中節點的健康檢查(Health Checking)
  • 實作LVS負載排程節點伺服器的高可用性(HA)

對于節點伺服器:健康檢查如果發現有故障的節點就會将其隔離或者剔除叢集,待其回複後再重新加入的叢集當中去

負載均衡器:健康檢查會定時去檢查主機的狀态(包括主機和服務的狀态),如果出現故障就會自動切換到備主機上待主機恢複,在重新讓主承載業務請求

keepalived實作原理

VRRP虛拟備援協定

VRRP會把多個路由組成一個虛拟路由組VRID,VRRP會生成一個虛拟路由(包含虛拟IP、虛拟MAC,區域網路内,使用者不需要關心誰是主路由/誰是備路由,他們隻用虛拟路由器的虛拟IP作為他們的網關),實際上虛拟IP就是承載在Master路由上,也就是說實際的資料是通過Master進行轉發的,Backup是通過優先級來決定哪一個是Master路由,優先級最大的那台就是Master,Backup隻是用來監聽Master定時發送的VRRP封包,如果逾時未收到Master發來的VRRP封包,則Backup就會搶占Master,虛拟IP也會一起漂移到Backup上。當Master恢複後,虛拟IP會漂移回到Master上(非健康檢查模式)

keepalived時一款高可用軟體,可以工作在三層(網絡層)、四層(傳輸層)和五層(應用層)上,進行健康檢測功能。

我們可以手動配置,選擇主用裝置和備用裝置,選擇搶占和非搶占。當開啟搶占模式時,原有的主用裝置恢複後會搶占原有的備用裝置,恢複對VIP的響應,而原有的備用裝置則會恢複到備用裝置的狀态。一般情況下,我們都會把一個硬體性能好的裝置作為主用裝置,是以我們通常會開啟搶占功能。

keepalived可以工作在類似三層、四層和五層的模式上,當keepalived工作在三層模式時,以IP的形式去進行健康檢測,當keepalived工作在四層模式時,以IP+端口的形式去進行健康檢測,當keepalived工作在五層模式時,以自定義腳本的方式去進行健康檢測。

Keepalived體系主要子產品

子產品 作用
croe子產品 為Keepalived的核心,負載主程序的啟動、維護及全局配置檔案的加載和解析
vrrp子產品 是來實作VRRP協定的
check子產品 負責健康檢查,常見的方式有端口及URL檢查

使用Keepalived實作雙機熱備

  • 基于VRRP協定的熱備方式Keepalived可以用作故障切換,每個熱備組可以有多台伺服器,當然最常用的還是雙機熱備
  • 在雙機熱備方案中,故障切換主要針對虛拟IP位址的漂移來實作,是以可以适用于各種應用伺服器(如:Web、FTP、Mail、SSH、DNS…)
  • 其中主、備伺服器都需要安裝Keepalived

部署LVS-DR叢集實驗

1、實驗準備

主DR伺服器:192.168.127.129

備DR伺服器:192.168.127.139

web伺服器1:192.168.127.149

web伺服器2:192.168.127.159

VIP:192.168.127.100

主DR伺服器配置

yum install -y ipvsadm keepalived
modprobe ip_vs #加載ip_vs子產品資訊
cat /proc/net/ip_vs #檢視ip_vs子產品資訊
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

 配置網卡

cd /etc/sysconfig/network-scripts/
cp -p ifcfg-ens33 ifcfg-ens33:0
ifup ens33:0 #開啟
ifconfig #檢視
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

調整proc響應參數

由于LVS負載均衡器和各節點需要公用vip位址,應該關閉linux核心的重定向相應參數,不充當路

由器(轉發、重定向)

vim /etc/sysctl.conf

net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects =0
net.ipv4.conf.ens33.send_redirects = 0
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
sysctl -p #加載
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
cd /opt
寫一個腳本,并且執行
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 192.168.32.100:80 -s rr
ipvsadm -a -t 192.168.32.100:80 -r 192.168.32.30:80 -g
ipvsadm -a -t 192.168.32.100:80 -r 192.168.32.40:80 -g
ipvsadm
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

 備DR伺服器

yum install -y ipvsadm keepalived
modprobe ip_vs #加載ip_vs子產品資訊
cat /proc/net/ip_vs #檢視ip_vs子產品資訊
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
cd /etc/sysconfig/network-scripts/
cp -p ifcfg-ens33 ifcfg-ens33:0
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

 調整proc響應參數

vim /etc/sysctl.conf

net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects =0
net.ipv4.conf.ens33.send_redirects = 0
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
cd /opt
寫一個腳本,并且執行
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 192.168.32.100:80 -s rr
ipvsadm -a -t 192.168.32.100:80 -r 192.168.32.30:80 -g
ipvsadm -a -t 192.168.32.100:80 -r 192.168.32.40:80 -g
ipvsadm
           

部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
 web伺服器1配置

yum install -y httpd #安裝
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
route add -host 192.168.127.100 dev lo:0 #路由禁锢
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
cd /var/www/html/
vim index.html
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

 web伺服器2配置

yum install -y httpd #安裝
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
cd /etc/sysconfig/network-scripts/
cp -p ifcfg-ens33 ifcfg-lo:0
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
route add -host 192.168.127.100 dev lo:0 #路由禁锢
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

 調整核心的ARP相應參數以阻止更新VIP的MAC位址,防止沖突

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

 準備頁面檔案

cd /var/www/html/
vim index.html

<html><body><h1>yyh</h1></body></html>
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

 部署keepalivd(主-備)

cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak #備份
vim keepalived.conf

global_defs {
router_id lvs_01
}
vrrp_instance vi_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 110
advert_int 1
authentication {
auth_type PASS
auth_pass 6666
}
virtual_ipaddress {
192.168.127.100
}
}
virtual_server 192.168.127.100 80 {
lb_algo rr
lb_kind DR
persistence_timeout 6
protocol TCP
real_server 192.168.127.149 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.127.159 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

 備

cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak #備份

global_defs {
router_id lvs_02
}
vrrp_instance vi_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 105
advert_int 1
authentication {
auth_type PASS
auth_pass 6666
}
virtual_ipaddress {
192.168.32.100
}
}
virtual_server 192.168.127.100 80 {
lb_algo rr
lb_kind DR
persistence_timeout 6
protocol TCP
real_server 192.168.127.149 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.127.159 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
           
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗
部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

 驗證

主dr伺服器

部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

 備dr伺服器

部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

 關閉主dr伺服器keepalived,檢視

部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

檢視備dr伺服器

部署LVS-DR+KeepalivedLVS-DR工作原理Keepalived概述部署LVS-DR叢集實驗

繼續閱讀