LVS搭配Keepalived
為什麼實用Keepalived
企業應用中,單臺伺服器承擔應用存在單點故障的危險單點故障一旦發生,企業服務將發生中
斷,造成極大的危害
Keepalived工具介紹
專為LVS和HA設計的一款健康檢查工具
支援故障自動切換(Failover)
支援節點健康狀態檢查(Health Checking)官方網站: http://www.keepalived.orgl
Keepalived實現原理剖析
VRRP(虛路由冗餘協議)是針對路由器的一種備份解決方案
1、由多臺路由器組成一個熱備組,通過共用的虛擬IP地址對外提供服務
2、每個熱備組內同時只有一臺主路由器提供服務,其他路由器處於冗餘狀態
3、若當前線上的路由器失效,則其他路由器會根據設定的優先順序自動接替虛擬IP地址,繼續提供服務
Keepalived案例講解
1、雙機熱備的故障切換是由虛擬IP地址的漂移來實現,適用於各種應用伺服器
2、實現基於Web服務的雙機熱備
漂移地址:192.168.10.72
主、備伺服器:192.168.10.73、192.168.10.74
提供的應用服務: Web
Keepalived安裝與啟動
1、在LVS群集環境中應用時,也需用到ipvsadm管理工具
2、YUM安裝Keepalived
3、啟用Keepalived服務
配置Keepalived master伺服器
Keepalived配置目錄位於letc/keepalived/
keepalived.conf提是主配置檔案
global_ defs {.}區段指定全域性引數
vrrp_instance '賣例名稱{…}區段指定VRRP熱備引數
註釋文字以”!”符號開頭
目錄samples,提供了許多配置樣例作為參考
搭建LVS搭配Keepalived服務
配置LVS-DR模式
1、實驗環境準備
主LVS1伺服器 主機名:lvs-1 20.0.0.10
nfs伺服器 主機名:nfs 20.0.0.20
web伺服器1 主機名:web1 20.0.0.30
web伺服器2 主機名:web2 20.0.0.40
備LVS2伺服器 主機名:lvs-2 20.0.0.50
2、配置nfs伺服器
安裝nfs服務
[root@nfs ~]# yum -y install nfs-utils rpcbind
建立web共享目錄
[root@nfs ~]# mkdir /opt/web1 /opt/web2
設定web網頁
[root@nfs ~]# echo "<h1>This is web1<h1>" > /opt/web1/index.html
[root@nfs ~]# echo "<h1>This is web2<h1>" > /opt/web2/index.html
設定nfs共享目錄許可權
[root@nfs ~]# vim /etc/exports
增加以下內容:
/opt/web1 20.0.0.30(ro)
/opt/web2 20.0.0.40(ro)
開啟nfs伺服器和rpcbind並設定開機自啟動
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl enable nfs
[root@nfs ~]# systemctl start rpcbind
[root@nfs ~]# systemctl enable rpcbind
檢視訪問許可權
[root@nfs ~]# showmount -e
Export list for nfs:
/opt/web2 20.0.0.40
/opt/web1 20.0.0.30
3、設定web1
安裝httpd伺服器
[root@web1 ~]# yum -y install httpd
掛載nfs共享目錄
[root@web1 ~]# mount 20.0.0.20:/opt/web1 /var/www/html/
開啟httpd服務
[root@web1 ~]# systemctl start httpd.service
設定配置DR的指令碼
[root@web1 ~]# vim web1.sh
#!/bin/bash
#web1
ifconfig lo:0 20.0.0.100 broadcast 20.0.0.100 netmask 255.255.255.255 up
route add -host 20.0.0.100 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
sysctl -p &> /dev/null
執行web1.sh
[root@web1 ~]# sh web1.sh
檢視ip地址
[root@web1 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 20.0.0.30 netmask 255.255.255.0 broadcast 20.0.0.255
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 20.0.0.100 netmask 255.255.255.255
loop txqueuelen 1 (Local Loopback)
4、設定web2
安裝httpd伺服器
[root@web1 ~]# yum -y install httpd
掛載nfs共享目錄
[root@web1 ~]# mount 20.0.0.20:/opt/web2 /var/www/html/
開啟httpd服務
[root@web1 ~]# systemctl start httpd.service
設定配置DR的指令碼
[root@web1 ~]# vim web2.sh
#!/bin/bash
#web1
ifconfig lo:0 20.0.0.100 broadcast 20.0.0.100 netmask 255.255.255.255 up
route add -host 20.0.0.100 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
sysctl -p &> /dev/null
執行web1.sh
[root@web1 ~]# sh web2.sh
檢視ip地址
[root@web1 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 20.0.0.40 netmask 255.255.255.0 broadcast 20.0.0.255
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 20.0.0.100 netmask 255.255.255.255
loop txqueuelen 1 (Local Loopback)
5、設定主LVS-1
載入ip_vs模組
[root@lvs-1 ~]# modprobe ip_vs
安裝管理軟體ipvsadm
[root@lvs -1~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm
安裝依賴工具
[root@lvs-1 ~]# yum -y install gcc gcc-c++ make popt-devel openssl-devel kernel-devel
匯入keepalived資料包
keepalived-2.0.13.tar.gz
解壓資料包
[root@lvs-1 opt]# tar zxvf keepalived-2.0.13.tar.gz
進入keepalived-2.0.13/
[root@lvs-1 opt]# cd keepalived-2.0.13/
編譯安裝 keepalived
[root@lvs-1 keepalived-2.0.13]# ./configure --prefix=/
[root@lvs-1 keepalived-2.0.13]# make && make install
設定啟動選項
[root@lvs-1 keepalived-2.0.13]# cp keepalived/etc/init.d/keepalived /etc/init.d/
啟動keepalived服務
[root@lvs-1 keepalived-2.0.13]# systemctl start keepalived.service
[root@lvs-1 keepalived-2.0.13]# systemctl enable keepalived.service
編輯keepalived配置檔案
[root@lvs-1 keepalived-2.0.13]# vim /etc/keepalived/keepalived.conf
全部刪除新增下面的
! Configuration File for keepalived
global_defs {
router_id LVS_01 #本伺服器的名稱
}
vrrp_instance VI_1 { #定義VRRP熱備例項
state MASTER #熱備狀態,MASTER表示主伺服器,BACKUP表示從伺服器
interface ens33 #承載VIP地址的物理介面
virtual_router_id 51 #虛擬路由器的ID號,每個熱備組保持一致
priority 110 #優先順序,數值越大優先順序越高
advert_int 1 #通告間隔秒數(心跳頻率)
authentication { #熱備認證資訊,每個熱備組保持一致
auth_type PASS #認證型別
auth_pass 6666 #密碼字串
}
virtual_ipaddress { #指定飄逸地址(VIP),可以有多個
20.0.0.100
}
}
virtual_server 20.0.0.100 80 { #虛擬伺服器地址(VIP)、埠
delay_loop 6 #健康檢查的間隔時間(秒)
lb_algo rr #輪詢(rr)排程演算法
lb_kind DR #直接路由(DR)群集工作模式
persistence_timeout 6 #連線保持時間(秒)
protocol TCP #應用伺服器採用的是TCP協議
real_server 20.0.0.30 80 { #第一個web伺服器節點的地址、埠
weight 1 #節點的權重
TCP_CHECK { #健康檢查方式
connect_port 80 #檢查的目標埠
connect_timeout 3 #連線超時(秒)
nb_get_retry 3 #重試次數
delay_before_retry 3 #重試間隔
}
}
real_server 20.0.0.40 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
重啟keepalived伺服器
[root@lvs-1 keepalived-2.0.13]# systemctl restart keepalived.service
6、設定備LVS-2
載入ip_vs模組
[root@lvs-2 ~]# modprobe ip_vs
安裝管理軟體ipvsadm
[root@lvs -2~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm
安裝依賴工具
[root@lvs-2 ~]# yum -y install gcc gcc-c++ make popt-devel openssl-devel kernel-devel
匯入keepalived資料包
keepalived-2.0.13.tar.gz
解壓資料包
[root@lvs-2 opt]# tar zxvf keepalived-2.0.13.tar.gz
進入keepalived-2.0.13/
[root@lvs-2 opt]# cd keepalived-2.0.13/
編譯安裝 keepalived
[root@lvs-2 keepalived-2.0.13]# ./configure --prefix=/
[root@lvs-2 keepalived-2.0.13]# make && make install
設定啟動選項
[root@lvs-2 keepalived-2.0.13]# cp keepalived/etc/init.d/keepalived /etc/init.d/
啟動keepalived服務
[root@lvs-2 keepalived-2.0.13]# systemctl start keepalived.service
[root@lvs-2 keepalived-2.0.13]# systemctl enable keepalived.service
編輯keepalived配置檔案
[root@lvs-2 keepalived-2.0.13]# vim /etc/keepalived/keepalived.conf
全部刪除新增下面的
! Configuration File for keepalived
global_defs {
router_id LVS_02 #本伺服器的名稱
}
vrrp_instance VI_1 { #定義VRRP熱備例項
state MASTER #熱備狀態,MASTER表示主伺服器,BACKUP表示從伺服器
interface ens33 #承載VIP地址的物理介面
virtual_router_id 51 #虛擬路由器的ID號,每個熱備組保持一致
priority 105 #優先順序,數值越大優先順序越高
advert_int 1 #通告間隔秒數(心跳頻率)
authentication { #熱備認證資訊,每個熱備組保持一致
auth_type PASS #認證型別
auth_pass 6666 #密碼字串
}
virtual_ipaddress { #指定飄逸地址(VIP),可以有多個
20.0.0.100
}
}
virtual_server 20.0.0.100 80 { #虛擬伺服器地址(VIP)、埠
delay_loop 6 #健康檢查的間隔時間(秒)
lb_algo rr #輪詢(rr)排程演算法
lb_kind DR #直接路由(DR)群集工作模式
protocol TCP #應用伺服器採用的是TCP協議
real_server 20.0.0.30 80 { #第一個web伺服器節點的地址、埠
weight 1 #節點的權重
TCP_CHECK { #健康檢查方式
connect_port 80 #檢查的目標埠
connect_timeout 3 #連線超時(秒)
nb_get_retry 3 #重試次數
delay_before_retry 3 #重試間隔
}
}
real_server 20.0.0.40 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
重啟keepalived伺服器
[root@lvs-1 keepalived-2.0.13]# systemctl restart keepalived.service
客戶機測試
關閉戶主LVS-1
[root@lvs-1 ~]# systemctl stop keepalived.service
再去訪問
相關文章
- keepalived(三)LVS+Keepalived
- KeepAlived+LVS+NginxNginx
- LVS+Keepalived群集
- LVS+keepalived高可用
- LVS+Keepalived高可用群集
- Keepalived之高可用LVS叢集
- LVS和keepalived高可用叢集部署
- LVS+KEEPALIVED負載均衡實驗負載
- web、keepalived、lvs、nginx 面試常問解析WebNginx面試
- LVS#MySQL+Keepalived四層負載均衡MySql負載
- 綜合專案:lvs+keepalived+glusterfs群集
- 使用Keepalived構建LVS高可用叢集
- lvs+keepAlived→效率最高的負載均衡負載
- LVS+Keepalived 實現高可用負載均衡負載
- LVS+Keepalived 高可用群集(理論+實戰部署)
- LVS - 使用用Keepalived實現健康檢查的示例
- LVS + Keepalived + Nginx基於DR模式構建高可用方案Nginx模式
- keepalived詳解 - LVS(IPVS)管理工具ipvsadm簡介
- 基於MySQL Cluster + LVS + KeepAlived部署負載均衡高可用架構MySql負載架構
- 基於MySQL雙主複製架構下部署LVS+KeepAlived負載均衡MySql架構負載
- LVS
- keepalived(四)Keepalived+NginxNginx
- LVS(五)LVS的持久連線
- keepalived
- LVS原理
- lvs 分割槽
- LVS詳解
- haproxy和lvs
- LVS (一) 原理
- Keepalived - Keepalived 實現 tomcat雙機熱備Tomcat
- Keepalived 高可用
- 快速掌握keepalived
- openGauss+KeepAlived
- keepalived安裝
- LVS 負載均衡負載
- 伺服器群集—LVS負載均衡群集(LVS-NAT部署)伺服器負載
- 搭配購買
- CertBot搭配DNSPodDNS