使用keepalived實現高可用

2022-07-22 08:18:12 字數 2712 閱讀 5159

通常情況下,都是啟動2臺相同的業務系統,一台故障,另外一台自動接管。後端一般情況下我們使用集群,排除了單點故障造成的影響,前段7層負載的高可用就尤為重要了

keepalived使用vrrp協議,虛擬路由冗餘協議。依靠vmac和vip實現高可用技術方案,俗稱位址漂移。

搶占式高可用配置

1.實踐環境,配置實現虛ip轉移

狀態 ip 角色

節點1 10.0.0.5 master

節點2 10.0.0.6 backup

vip 10.0.0.3

安裝keepalived

yum install keepalived -y

配置master的keepalived

global_defs

vrrp_instance vi_1

virtual_ipaddress }

配置backup的keepalived

global_defs

vrrp_instance vi_1

virtual_ipaddress

}#注意事項優先順序要設定的不一樣,vip位址是虛擬出來的,當然公網位址要真實存在

非搶占式區別

1、兩個節點的state都必須配置為backup

2、兩個節點在vrrp層加上配置 nopreempt

3、其中乙個節點的優先順序必須要高於另外乙個節點的優先順序。

兩台伺服器都角色狀態啟用nopreempt後,必須修改角色狀態統一為backup,唯一的區分就是優先順序。

為keepalived嵌入指令碼執行

2.修改keepalived配置檔案

[root@lb01 conf.d]# cat /etc/keepalived/keepalived.conf

global_defs

#定義指令碼存放的位置

vrrp_script check_web

vrrp_instance vi_1

virtual_ipaddress

#呼叫並執行該指令碼

track_script

}

檢測nginx並試圖拉起的指令碼

#!/bin/bash

nginx_status=systemctl status nginx|awk '/active/ '

if [ ! $nginx_status == "active" ];then

systemctl start nginx

sleep 3

nginx_status=systemctl status nginx|awk '/active/ '

case $nginx_status in

active)

echo "start nginx succes,nginx is running"

;;inactive)

pkill keepalived

if [ $? -eq 0 ]; then

echo "nginx is down ,kill keepalived"

else

echo "keepalived cannot killed ,please go go"

fi;;

*)pkill keepalived

if [ $? -eq 0 ]; then

echo "nginx is down ,kill keepalived"

else

echo "keepalived cannot killed ,please go go"

fiesac

fi

備用機上,監控腦裂,並解決的指令碼

#!/bin/bash

vip=10.0.0.3

master_ip=10.0.0.5

date=date +%f--%x

ip=ifconfig eth0|awk '/inet /'

echo "$date$hostname$_spiltbarin,do kill suessed" >/scripts/spilt.txt

while true;

do

ping -c 2 -w 2 $master_ip &>/dev/null

result=$?

ip add|grep $vip &>/dev/null

if [ $result -eq 0 -a $? -eq 0 ];then

pkill keepalived &>/dev/null

echo "warining..spilt barin"

if [ $? -eq 0 ];then

mail -s " warning" "[email protected]" < /scripts/spilt.txt

else

mail -s "spiltbrain ,please go go go" "[email protected]" < /scripts/spilt.txt

fi

fi

sleep 5

ping -c 2 -w 2 $vip &>/dev/null

if [ ! $? -eq 0 ];then

systemctl start keepalived

echo "$vip laqi"

fidone

使用keepalived實現nginx高可用機制

在上面的篇章中使用了nginx 多個web伺服器,之後訪問nginx服務的ip就可以 訪問到真實的web伺服器,但是如果你的這台nginx伺服器死掉 宕機 此時所有有該nginx 的所有web容器將會無法訪問,此時需要配置多個nginx伺服器作為備用機,但是多個nginx伺服器之間需要乙個元件來進行...

使用Keepalived實現linux高可用集群

apt install libipset dev keepalived yuseradd s usr sbin nologin m g root keepalived scriptvim etc sysctl.conf 在末尾追加一行 net.ipv4.ip nonlocal bind 1vim e...

Keepalived 實現高可用

對於主負載均衡伺服器,修改配置檔案 vim etc keepalived keepalived.conf configuration file for keepalived global defs vrrp instance vi 1 virtual ipaddress 備用負載均衡伺服器 vim ...