目錄
- 一、keepalived的介紹
- 二、案例實操
- 2.1 案例環境
- 2.2 配置主LVS
- 2.3 配置備LVS
- 2.4 配置NFS服務器
- 2.5 配置節點服務器
- 2.6 單點故障效果驗證
一、keepalived的介紹
傳統LVS-DR模型,是單調度器,那么當調度器出現故障的時候,就會出現單點故障問題,這時需要keepalived,實作雙機熱備(主從模式),
- 支持故障自動切換(Failover),
- 支持節點健康狀態檢查(Health Checking)
- 官方網站:http://www.keepalived.org/
Keepalived實作原理
1、Keepalived采用VRRP熱備份協議實作Linux服務器的多機熱備功能
2、VRRP(虛擬路由冗余協議)是針對路由器的一種備份解決方案
由多臺路由器組成一個熱備組,通過共用的虛擬IP地址對外提供服務;
每個熱備組內同時只有一臺主路由器提供服務,其他路由器處于冗余狀態;
若當前在線的路由器失效,則其他路由器會根據設定的優先級自動接替虛擬IP地址,繼續提供服務,
二、案例實操
Keepalived可實作多機熱備,每個熱備組可有多臺服務器
雙機熱備的故障切換是由虛擬IP地址的漂移來實作,適用于各種應用服務器
2.1 案例環境
熱備組里只用兩臺調度器進行模擬
共六臺主機:
都處于同一網段,VMnet1模式
客戶機訪問的虛擬IP: 192.168.10.200
兩臺LVS:一臺作為主LVS,另一臺為從LVS, 優先級最大的為主調度服務器,其余為備用服務器,IP:192.168.10.30(主)和192.168.10.180(備)
兩臺節點服務器: 提供web服務,IP:192.168.10.140 和 192.168.10.150
主機5: 部署nfs共享存盤服務,給節點服務器提供網頁等資源,IP:192.168.10.160
主機6: 客戶機,用于訪問虛擬服務器(192.168.10.200),測驗輪詢的訪問效果,IP:192.168.10.170
2.2 配置主LVS
加載LVS內核
[root@lvs ~]# modprobe ip_vs
[root@lvs ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
安裝管理軟體ipvsadm,不需要啟動
[root@lvs ~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm
警告:/mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID f4a80eb5: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:ipvsadm-1.27-7.el7 ################################# [100%]
安裝keepalived,修改組態檔提供LVS服務,和web節點服務器池的添加,
[root@Server1 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
[root@Server1 ~]# tar zxf keepalived-2.0.13.tar.gz
[root@Server1 ~]# cd keepalived-2.0.13/
[root@Server1 keepalived-2.0.13]# ./configure --prefix=/
[root@Server1 keepalived-2.0.13]# make && make install
[root@Server1 keepalived-2.0.13]# cp keepalived/etc/init.d/keepalived /etc/init.d ###加入系統管理服務
[root@Server1 keepalived-2.0.13]# systemctl enable keepalived.service ###設定開機自啟動
[root@Server1 ~]# vi /etc/keepalived/keepalived.conf ###編輯組態檔
global_defs { #全域引數
router_id LVS_01 #指定名稱,各個服務器名稱要不一樣
}
vrrp_instance VI_1 { #指定vrrp熱備引數
state MASTER #服務器角色是master,備份服務器設定為BACKUP
interface ens33 #修改物理網卡名稱,默認是centos6的eth0
virtual_router_id 51 #組號相同
priority 110 #優先級,主服務器設定要大于備服務器
authentication {
auth_type PASS #驗證型別和密碼,不建議修改
auth_pass 1111
}
virtual_ipaddress {
192.168.10.200 #虛擬IP,漂移地址(VIP)地址,可以有多個
}
}
virtual_server 192.168.10.200 80 { #配置虛擬服務器
delay_loop 6
lb_algo rr #調度演算法為輪詢
lb_kind DR #LVS的作業模式為DR(直連路由)
##################web節點服務器池###############
real_server 192.168.10.140 80 { #真實節點1的IP
weight 1
TCP_CHECK { #健康檢查引數
connect_port 80 #檢查80埠連接是否正常
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.10.150 80 { ##真實節點1的IP
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
################web節點服務器池################
}
開啟服務
systemctl enable keepalived
systemctl start keepalived
關閉防火墻
2.3 配置備LVS
關閉防火墻
與主調度器的配置程序一樣,只有組態檔的區別
復制粘貼主的組態檔,修改組態檔的開頭(3處):
global_defs {
router_id LVS_02 #備用換成02
}
vrrp_instance VI_1 {
state BACKUP #備份服務器設定為BACKUP
interface ens33
virtual_router_id 51
priority 105 #優先級小于主服務器
......
2.4 配置NFS服務器
[root@nfs ~]# yum -y install nfs-utils rpcbind
[root@nfs ~]# systemctl start nfs-utils
[root@nfs ~]# systemctl start rpcbind
[root@nfs ~]# mkdir /opt/web1 /opt/web2 #建立測驗網頁
[root@nfs ~]# cd /opt/web1
[root@nfs web1]# echo "server1" > index.html #給web1服務器使用
[root@nfs web1]# cd /opt/web2
[root@nfs web2]# echo "server2" > index.html #給web2服務器使用
[root@nfs web2]# vi /etc/exports
/opt/web1 192.168.10.140 (ro,sync)
/opt/web2 192.168.10.150 (ro,sync)
[root@nfs web2]# systemctl restart nfs
[root@nfs web2]# systemctl restart rpcbind
#關閉防火墻核心防護
[root@nfs web2]# systemctl stop firewalld
[root@nfs web2]# setenforce 0
2.5 配置節點服務器
以web1為例
安裝httpd網頁服務
[root@web1 ~]# yum -y install httpd
查看nfs服務器的發布
#關閉防火墻核心防護
[root@web1 ~]# systemctl stop firewalld
[root@web1 ~]# setenforce 0
[root@web1 ~]# showmount -e 192.168.10.160
Export list for 192.168.10.160:
/opt/web2 (everyone)
/opt/web1 (everyone)
掛載使用nfs服務器的網頁
[root@web1 ~]# mount 192.168.10.160:/opt/web1 /var/www/html
[root@web1 ~]# systemctl start httpd #開啟網路服務
節點2用/opt/web2
DR模式配置:編輯腳本執行,兩節點服務器一樣,都需要配置
#!/bin/bash
#添加虛擬IP,必須用lo網卡
ifconfig lo:0 192.168.10.200 broadcast 192.168.10.200 netmask 255.255.255.255 up
route add -host 192.168.10.200 dev lo:0
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
systctl -p &> /dev/null
2.6 單點故障效果驗證
當主調度器正常作業,虛擬IP在主調度器網卡上
[root@lvs ~]# ip addr

客戶機1、2、3,輪流訪問虛擬服務器時(192.168.10.200),節點1、2輪流提供網頁服務,(輪詢演算法效果)
客戶機1

客戶機2

客戶機3

模擬主調度器故障,關閉keepalived服務
[root@lvs ~]# systemctl stop keepalived.service
虛擬地址漂移到備用調度器上,同時也可以在日志檔案里查看到遷移的狀態變化,備用調度器日志:
[root@lvs2 ~]# tail -f /var/log/messages

虛擬地址漂移結果:到備用上
[root@lvs2 ~]# ip addr

備用調度器繼續提供調度服務,客戶機輪流訪問虛擬IP,兩個節點服務器輪流提供服務,
當再開啟主調度器,由于優先級的原因,MASTER狀態自動遷移到主上,備用回到BACKUP狀態,
查看備用的日志記錄:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/206125.html
標籤:其他
上一篇:續流二極管的選擇原則
