LVS+Keepalived群集
LVS+Keepalived群集
Keepalived案例分析
企業應用中,單臺伺服器承擔應用存在單點故障的危險
單點故障一旦發生,企業服務將發生中斷,造成極大的危害
Keeppalived工具介紹
專為LVS和HA設計的一款健康檢查工具
支援故障自動切換(Failover)
支援節點健康狀態查詢(Health Checking)
官方網站:http://www.keepalived.org/
Keepalived實現原理剖析
Keppalived採用VRRP熱備份協議實現Linux伺服器的多機熱備功能
VRRP (虛擬路由冗餘協議)是針對路由器的一種備份解決方案
由多臺路由組成一個熱備組,通過共同的虛擬IP地址對外提供服務
每個熱備組內同時只有一臺主路由器提供服務,其他路由器處於冗餘狀態
若當前線上的路由器失效,則其路由器會根據設定的優先順序自動接替虛擬IP地址,繼續提供服務
Keepalived案例講解
Keepalived可實現多機熱備,每個熱備組可有多臺伺服器
雙機熱備的故障切換是由虛擬IP地址的漂移來實現,適用於各種應用伺服器
實現基於Web服務的雙擊熱備
漂移地址:192.168.10.72
主、備伺服器:192.168.10.73、192.168.10.74
提供的應用服務:Web
Keepalived安裝與啟動
在LVS群集環境中應用時,也需用到ipvsadm管理工具
YUM安裝Keepalived
啟用Keepalived服務
配置Keepalived master伺服器
Keepalived配置目錄位於/etc/keepalived/
Keepalived.conf是主配置檔案
global_defs {...}區段指定全域性引數
vrrp_instance例項名稱{...}區段指定VRRP熱備引數
註釋文字以"!"符號開頭
目錄samples,提供了許多配置樣例作為參考
常用配置選項
router_id HA_TEST_R1:本路由器(伺服器)的名稱
vrrp_instance VI_1:定義VRRP熱備例項
state MASTER:熱備狀態,MASTER表示主伺服器
interface ens33:承載VIP地址的物理介面
virtual_router_id 1:虛擬路由器的ID號,每個熱備組保持一致
priority 100:優先順序,數值越大優先順序越高
advert_int 1:通告間隔秒數(心跳頻率)
auth_type PASS:認證型別
auth_pass 123456:密碼字串
virtual_ipaddress{vip}:指定漂移地址(VIP),可以有多個
配置Keepalived slave伺服器
Keepalived備份伺服器的配置與master的配置有三個選項不同
router_id:設為自有名稱
state:設為BACKUP
priority:值低於主伺服器
其他選項與master相同
Keepalived雙機熱備效果測試
測試雙機熱備的效果
主、備機均啟用Web服務,設定不同的內容
先後禁用、啟用主伺服器的網路卡
執行的測試
測試1:使用ping檢測192.168.10.72的連通性
測試2:訪問http://192.168.10.72,確認可用性及內容變化
測試3:檢視日誌檔案/var/log/messages中的變化
部署LVS-keepalived
部署環境
192.168.1.10 lvs01+keepalive(主) virtual-ip 20.0.0.200
192.168.1.11 lvs02+keepalive(備) virtual-ip 20.0.0.200
192.168.1.12 web1
192.168.1.13 web2
192.168.1.15 nfs
配置NFS儲存伺服器
安裝nfs-utils、rpcbind
建立兩個網頁
mkdir /opt/web1
mkdir /opt/web2
echo "<h1>this is web1</h1>" > /opt/web1/index.html
echo "<h1>this is web2</h1>" > /opt/web2/index.html
配置檔案、開啟服務
vi /etc/exports
systemctl restart rpcbind
systemctl restart nfs
檢視共享情況
showmount -e
web1 和web2 同樣操作
安裝httpd
掛載nfs儲存伺服器
mount 192.168.1.15:/opt/web1 /var/www/html/
啟動服務
systemctl start httpd
測試網頁
curl http://localhost
web1
vi web1.sh
sh web1.sh
指令碼內容
#!/bin/bash
# lvs web1
ifconfig lo:0 192.168.1.200 broadcast 192.168.1.200 netmask 255.255.255.255 up
route add -host 192.168.1.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
sysctl -p &> /dev/null
檢視虛擬介面、路由
ifconfig
route -n
web2
vi web2.sh
sh web2.sh
指令碼內容
#!/bin/bash
# lvs web2
ifconfig lo:0 192.168.1.200 broadcast 192.168.1.200 netmask 255.255.255.255 up
route add -host 192.168.1.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
sysctl -p &> /dev/null
檢視虛擬介面、路由
ifconfig
route -n
LVS1
手動載入ip_vs模組
檢視
新增keepalived-2.0.13.tar.gz
安裝依賴包
yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
解壓壓縮包
yum -y install ipvsadm
tar zxvf keepalived-2.0.13.tar.gz
開始配置
cd keepalived-2.0.13/
./configure --prefix=/
make && make install
cd keepalived/etc/init.d/
加入系統管理服務
cp keepalived /etc/init.d/
cd
設為開機自啟
systemctl enable keepalived.service
編輯配置
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
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.1.200
}
}
virtual_server 192.168.1.200 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 6
protocol TCP
real_server 192.168.1.12 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get retry 3
delay_before_retry 3
}
}
real_server 192.168.1.13 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get retry 3
delay_before_retry 3
}
}
}
重新載入服務
systemctl daemon-reload
開啟Keepalived
systemctl start keepalived.service
LVS2
手動載入ip_vs模組
modprobe ip_vs
檢視
cat /proc/net/ip_vs
yum -y install ipvsadm
上傳 解壓
tar zxvf keepalived-2.0.13.tar.gz
yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
cd keepalived-2.0.13/
./configure --prefix=/
make && make install
cp keepalived/etc/init.d/keepalived /etc/init.d/
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
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.1.200
}
}
virtual_server 192.168.1.200 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 6
protocol TCP
real_server 192.168.1.12 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get retry 3
delay_before_retry 3
}
}
real_server 192.168.1.13 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get retry 3
delay_before_retry 3
}
}
}
systemctl start keepalived.service
systemctl status keepalived.service
ipaddr
發現無虛擬地址資訊,主備排程器之間存在差異
ipvsadm -Ln 檢視排程資訊
訪問瀏覽器
http://192.168.1.200
ipvsadm -Ln 檢視連線情況
ipvsadm -Lnc 檢視排程情況
測試主備自動轉換功能
在lvs1上 關掉服務
systemctl stop keepalived.service
ip addr
虛擬地址沒了
再次訪問
ipvsadm -Lnc
在web2上
關閉服務
systemctl stop httpd
在lvs02上
檢視
訪問瀏覽器
http://192.168.1.200 只會有web1
在lvs1上重啟服務
systemctl start keepalived.service
ip addr
相關文章
- LVS+Keepalived高可用群集
- LVS+Keepalived 高可用群集(理論+實戰部署)
- LVS+keepalived高可用
- keepalived(三)LVS+Keepalived
- 伺服器群集—Haproxy+keepalived群集伺服器
- Sqlserver 2014 alwayson故障轉移群集節點被踢出群集SQLServer
- RabbitMQ 群集安裝MQ
- LVS+KEEPALIVED負載均衡實驗負載
- 伺服器群集—LVS負載均衡群集(LVS-NAT部署)伺服器負載
- 一、群集的簡介
- LVS負載均衡群集負載
- 使用haproxy搭建web群集Web
- lvs+keepAlived→效率最高的負載均衡負載
- 伺服器群集—Nginx+Tomcat+keepalived負載均衡、動靜分離群集伺服器NginxTomcat負載
- LVS+Keepalived 實現高可用負載均衡負載
- Pfsense HA(高可用性群集)
- LVS負載均衡群集--NAT模式負載模式
- 使用Haproxy與nginx配合搭建web群集NginxWeb
- Haproxy搭建 Web 群集實現負載均衡Web負載
- ELK 日誌分析系統 ----------- 部署ElasticSearch群集Elasticsearch
- 綜合專案:lvs+keepalived+glusterfs群集
- 伺服器群集LVS負載均衡-NAT伺服器負載
- CentOS 7.4 下搭建 Elasticsearch 6.3 搜尋群集CentOSElasticsearch
- Nginx—tomcat負載均衡動靜分離群集NginxTomcat負載
- MongoDB分片群集的部署(用心描述,詳細易懂)!!MongoDB
- Redis的安裝及建立節點、部署群集Redis
- 技術分享| 訊息佇列Kafka群集部署佇列Kafka
- MySQL——MHA高可用群集部署及故障測試MySql
- MySQL高可用群集MHA部署及故障測試分析MySql
- 基於MySQL雙主複製架構下部署LVS+KeepAlived負載均衡MySql架構負載
- SQLServer2012對現有AlwaysOn群集新加節點SQLServer
- 部署docker-consul群集,Harbor構建Docker私有倉庫Docker
- Windows故障轉移群集(WSFC)的備份和恢復Windows
- 使用kube_ping進行Keycloak群集設定 - DZone CloudCloud
- 擁抱藍綠部署,推動AKS群集版本平滑升級
- linux下部署lvs-DR群集構建實施過程Linux
- Redis 架構演變與 Redis-cluster 群集讀寫方案Redis架構
- 擁抱藍綠部署,推動AKS群集版本平滑升級(下篇)