LVS-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負載均衡等等
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實現高可用