1. 程式人生 > >LVS-keepalived實現高可用

LVS-keepalived實現高可用

keepalived

前言

LVS是基於內核實現負載均衡的,在小編的上一篇演示中我們已經實現了LVS的NAT模式和DR模式,但是企業中只有負載均衡是不行的,如果一臺負載均衡器楚翔了故障,那麽就會導致整個集群的不可用,所以這裏結合LVS我們通過keepalived這個神器來實現高可用。

高可用:通常來描述一個系統經過專門的設計,從而減少停工時間,而保持其服務的高度可用性。

首先我們來認識一下keepalived:

keepalived介紹

1、功能:

Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepalived自動將服務器加入到服務器群中,這些工作全部自動完成,不需要人工幹涉,需要人工做的只是修復故障的服務器。

2、特點及優點:

(a)配置文件簡單:配置文件比較簡單,可通過簡單配置實現高可用功能

(b)穩定性強:keepalived是一個類似於layer3, 4 & 7交換機制的軟件,具備我們平時說的第3層、第4層和第7層交換機的功能,常用於前端負載均衡器的高可用服務,當主服務器出現故障時,可快速進行切換,監測機制靈活,成功率高。

(c)成本低廉:開源軟件,可直接下載配置使用,沒有額外費用。

(d)應用範圍廣:因為keepalived可應用在多個層面,所以它幾乎可以對所有應用做高可用,包括LVS、數據庫、http服務、nginx負載均衡等等

(e)支持多種類型:支持主從模式、主主模式高可用,可根據業務場景靈活選擇。

3、keepalived功能實現方式

keepalived基於模塊來進行工作,在開啟服務的時候會開啟三個守護進程

(a) 父進程:主要負責讀取配置文件初始化、監控2個子進程等,監控WacthDog模塊

(b) 子進程1:負責監控vrrp Stack 模塊,通過Netlink Reflector模塊,控制內核中的netlink模塊,實現vrrp協議的功能。

(c) 子進程2:負責監控Cheackers模塊,通過IPvs wrapper模塊控制內核中的IPVS ,相當於代替了ipvsadm的功能,可以監控和負載後臺服務器,負責健康監測功能。

4、keepalived基於vrrp協議工作

VRRP協議:

VRRP(VirtualRouter Redundancy Protocol,虛擬路由冗余協

議)可以認為是實現路由器高可用的協議,簡單的說,當一個路由器故障時可以由另一個備份路由器繼續提供相同的服務。

VRRP根據優先級來確定虛擬路由器中每臺路由器的角色(Master

路由器或Backup路由器)。VRRP優先級的取值範圍為0到255(數值越大表明優先級越高),可配置的範圍是1到254,優先級0為系統保留給路由器放棄Master位置時候使用,255則是系統保留給IP地址擁有者使用。優先級越高,則越有可能成為Master路由器。當兩臺優先級相同的路由器同時競爭Master時,比較接口IP地址大小。接口地址大者當選為Master。

5、配置文件:

配置文件簡單結構:

1、全局配置 global_defs

2、虛擬路由配置 vrrp_instance

3、虛擬服務器配置 virtual_server


接下來進入展示環節:

一、基於keepalived實現LVS-nat模式的高可用

1、實驗前準備及部署:

關閉防火墻,關閉selinux

客戶端到VS之間的IP段為公網

VS到RS之間的IP段為私網

2、客戶端配置

客戶端IP:172.17.0.0/16網段,例如:172.17.253.70

客戶端關閉防火墻、關閉selinux

3、VS端配置

(VS端即負載均衡器)

VS端的VIP,172.17.252.60/16

VS端的DIP,192.168.11.107/24

在VS上:

首先我們得安裝keepalived和ipvsadm,ipvsadm不是用於部署LVS,LVS的實現在keepalived中就可以實現,ipvsadm只是我們借助ipvsadm這個命令來進行查看ipvs規則。

關閉防火墻,開啟路由轉發:

(1)修改內存參數:

echo 1 > /proc/sys/net/ipv4/ip_forward

(2)修改配置文件:

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

3.1 VS1的配置

編輯keepalived配置文件:

技術分享

3.2VS2的配置

編輯keepalived配置文件

技術分享

4、開啟keepalived服務

centos6:service keepalived start

centos7:systemctl startkeepalived

如果開啟不了是配置文件的錯誤,語法有錯

5、RS端配置:

RS1 地址為:192.168.1.7

RS2 地址為:192.168.1.9

將路由指向DIP

routeadd default gw 192.168.11.107 dev ens34

開啟web服務功能

httpd或 nginx

6、可以進行測試了!

實驗結果圖

技術分享


二、基於keepalived實現LVS-dr模式的高可用

1、實驗前準備:

關閉防火墻、selinux

實際的生產環境中的網絡是:

client--公網--VS---私網---RS

但是在教室環境中,由於網卡的限制,所以只能配置同一個網段的IP

2、網絡地址分配

技術分享

3、客戶端配置;

關閉防火墻,關閉selinux

添加默認網關到VIP,這是在實驗的環境中為了使數據包發往VS服務器所做的特殊操作,在真實的網絡環境中,客戶端是能夠找到VIP的。

route add default gw 192.17.1.17 dev ens34

4、VS端配置:

(1)VS1端配置:

開啟路由轉發:

echo 1 > /proc/sys/net/ipv4/ip_forward

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

安裝keepalived請自動yum安裝

編輯keepalived配置文件:

技術分享

啟動keepalived;

centos6 ;serverkeepalived start

centos7 : systemctl start keepalived

可安裝ipvsadm工具,使用ipvsadm命令進行查看ipvs規則

ip a 查看VIP綁定情況

(2)VS2端配置:

開啟路由轉發:

echo 1 > /proc/sys/net/ipv4/ip_forward

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1 VS2的配置

VS2的配置文件跟VS1的配置文件幾乎相同,只需要將一下幾點進行修改就可以了,這裏小編就不在進行配置文件展示了:

不同點:

(1)虛擬路由中的stateBACKUP

(2)虛擬路由中的priority要比master中低

啟動keepalived;

centos6 ;serverkeepalived start

centos7 : systemctl start keepalived

5、RS端配置

關閉防火墻,關閉selinux

在回環網卡上配置VIP:

ifconfig lo:1 192.17.1.17 netmask255.255.255.255 broadcast 192.17.1.17 up

route add -host 192.17.1.17 dev lo

配置arptable,將ARP廣播關閉:

echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

開啟web服務:(以httpd示例)

yum install httpd

centos6 : server httpd start

centos7 : systemctl start httpd

6、在客戶端訪問輸入VIP地址進行訪問測試

curl http://192.17.1.17/

可以用for循環測試:

for i in $(seq 10) ; do curlhttp://192.17.1.17 ;done

結果展示:

服務開啟情況:

技術分享

技術分享

測試:

技術分享

停掉一個keepalived服務:

技術分享

查看另一臺負載器是否接替了工作:

技術分享

停掉服務後測試:

技術分享

本文出自 “Linux運維” 博客,請務必保留此出處http://jk6627.blog.51cto.com/12002684/1981535

LVS-keepalived實現高可用