那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Keepalived腦裂的解決和預(yù)防

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 2023-05-18 10:05 ? 次閱讀

在實(shí)際生產(chǎn)環(huán)境中,我們可以從以下幾個(gè)方面來防止裂腦問題的發(fā)生:

同時(shí)使用串行電纜和以太網(wǎng)電纜連接,同時(shí)用兩條心跳線路,這樣一條線路壞了,另一個(gè)還是好的,依然能傳送心跳消息。

當(dāng)檢測到裂腦時(shí)強(qiáng)行關(guān)閉一個(gè)心跳節(jié)點(diǎn)(這個(gè)功能需特殊設(shè)備支持,如Stonith、feyce)。相當(dāng)于備節(jié)點(diǎn)接收不到心跳消患,通過單獨(dú)的線路發(fā)送關(guān)機(jī)命令關(guān)閉主節(jié)點(diǎn)的電源

做好對裂腦的監(jiān)控報(bào)警(如郵件及手機(jī)短信等或值班).在問題發(fā)生時(shí)人為第一時(shí)間介入仲裁,降低損失。例如,百度的監(jiān)控報(bào)警短倍就有上行和下行的區(qū)別。報(bào)警消息發(fā)送到管理員手機(jī)上,管理員可以通過手機(jī)回復(fù)對應(yīng)數(shù)字或簡單的字符串操作返回給服務(wù)器.讓服務(wù)器根據(jù)指令自動(dòng)處理相應(yīng)故障,這樣解決故障的時(shí)間更短.

當(dāng)然,在實(shí)施高可用方案時(shí),要根據(jù)業(yè)務(wù)實(shí)際需求確定是否能容忍這樣的損失。對于一般的網(wǎng)站常規(guī)業(yè)務(wù).這個(gè)損失是可容忍的。

多節(jié)點(diǎn)集群中,可以通過增加仲裁的機(jī)制,確定誰該獲得資源,這里面有幾個(gè)參考的思路:

1.增加一個(gè)仲裁機(jī)制。例如設(shè)置參考的IP,當(dāng)心跳完全斷開的時(shí)候,2個(gè)節(jié)點(diǎn)各自都ping一下參考的IP,不同則表明斷點(diǎn)就出現(xiàn)在本段,這樣就主動(dòng)放棄競爭,讓能夠ping通參考IP的一端去接管服務(wù)。

2.通過第三方軟件仲裁誰該獲得資源,這個(gè)在阿里有類似的軟件應(yīng)用

啟用磁盤鎖。正在服務(wù)一方鎖住共享磁盤,腦裂發(fā)生的時(shí)候,讓對方完全搶不走共享的磁盤資源。但使用鎖磁盤也會(huì)有一個(gè)不小的問題,如果占用共享盤的乙方不主動(dòng)解鎖,另一方就永遠(yuǎn)得不到共享磁盤。現(xiàn)實(shí)中介入服務(wù)節(jié)點(diǎn)突然死機(jī)或者崩潰,另一方就永遠(yuǎn)不可能執(zhí)行解鎖命令。后備節(jié)點(diǎn)也就截關(guān)不了共享的資源和應(yīng)用服務(wù)。于是有人在HA中涉及了“智能”鎖,正在服務(wù)的一方只在發(fā)現(xiàn)心跳線全部斷開時(shí)才啟用磁盤鎖,平時(shí)就不上鎖了

報(bào)警報(bào)在服務(wù)器接管之前,給人員處理留足夠的時(shí)間就是1分鐘內(nèi)報(bào)警了,但是服務(wù)器不接管,而是5分鐘之后接管,接管的時(shí)間較長。數(shù)據(jù)不會(huì)丟失,但就是會(huì)導(dǎo)致用戶無法寫數(shù)據(jù)。報(bào)警后,不直接自動(dòng)服務(wù)器接管,而是由人員接管。

檢查處理腳本(供參考)

注:

1.腳本無法解決服務(wù)器主備之間因?yàn)榉阑饓Γ渲玫犬a(chǎn)生的腦裂問題(安裝配置時(shí)注意檢查,keepalived服務(wù)正常運(yùn)行后再加入檢查處理腳本),腳本只能處理自身網(wǎng)絡(luò)問題產(chǎn)生的腦裂,必須保證網(wǎng)關(guān)服務(wù)器穩(wěn)定

2.備機(jī)獲取vip有2種情況:A主機(jī)keepalived服務(wù)發(fā)生故障vip漂移(非腦裂);B主機(jī)通信異常vip漂移(腦裂)。

腳本使用機(jī)制(引入第三方仲裁),步驟:

1.查看是否可獲取vip,未獲取:判斷keepalived服務(wù)運(yùn)行狀態(tài),運(yùn)行中不操作,未運(yùn)行重新啟動(dòng),結(jié)束腳本。

2.服務(wù)器周期性地ping一下網(wǎng)關(guān)(第三方仲裁ip地址),如果ping通:判斷keepalived服務(wù)運(yùn)行狀態(tài),運(yùn)行中不操作,未運(yùn)行重新啟動(dòng),結(jié)束腳本;如果ping不通則認(rèn)為自身有問題,累計(jì)次數(shù)達(dá)到閾值,關(guān)閉keepalived。

腳本執(zhí)行方式:

1.借助keepalived提供的vrrp_script及track_script實(shí)現(xiàn)(腳本內(nèi)keepalived服務(wù)如果被關(guān)閉,腳本將不在執(zhí)行,重新啟動(dòng)不生效),配置:

...
vrrp_scriptcheck_local{
script "/usr/local/src/check_gateway.sh 192.168.1.198" #192.168.1.198 需要檢查的vip
interval10#10秒一次
...
track_script{
check_local
}

2.linux定時(shí)任務(wù)(查看 tailf /var/spool/mail/root)

crontab -e

#1分1次延遲10秒實(shí)現(xiàn)(時(shí)間自定義)keepalived服務(wù)腦裂腳本
*****sleep10;bash/usr/local/src/check_gateway.sh192.168.1.198

腳本內(nèi)容(根據(jù)實(shí)際環(huán)境修改網(wǎng)關(guān)ip,是否重新啟動(dòng)keepalived服務(wù)):

vim /usr/local/src/check_gateway.sh

#!/bin/bash
export PATH=$PATH:/usr/sbin
#腦裂檢查及控制:第三方仲裁機(jī)制,使用ping網(wǎng)關(guān)ip方式
#循環(huán)次數(shù)
CHECK_TIME=3
#虛擬ip
VIP=$1
#網(wǎng)關(guān)ip(根據(jù)實(shí)際環(huán)境修改)
GATEWAY=192.168.1.8
#本機(jī)網(wǎng)卡
eth=enp2s0
#服務(wù)器和網(wǎng)關(guān)通信狀態(tài)  0=失敗,1=成功
keepalived_communication_status=1
#是否獲取vip狀態(tài) 0=失敗,1=成功
get_vip_status=1
#keepalived服務(wù)狀態(tài) 0=未運(yùn)行,1=運(yùn)行中
keepalived_service_status=1
#服務(wù)狀態(tài)運(yùn)行中字符串
active_status_str='active (running)'
echo "開始執(zhí)行腳本 check_gateway.sh $VIP;時(shí)間:"
date
#查看是否獲取vip狀態(tài)
function check_get_vip_status() {
  #通過ip add命令查看ip信息,搜索$VIP,統(tǒng)計(jì)行數(shù),是否等于1
  if [ $(ip add | grep "$VIP" | wc -l) -eq 1 ]; then
    get_vip_status=1
  else
    get_vip_status=0
  fi
  return $get_vip_status
}
 
#檢查通信狀態(tài)
function check_keepalived_status() {
  #檢測$VIP 能否ping通$GATEWAY:使用$eth網(wǎng)絡(luò)設(shè)備(-I $eth),發(fā)送數(shù)據(jù)包5(-c 5),源地址$VIP詢問目的地[vip] $GATEWAY [網(wǎng)關(guān)地址 公用參考ip](-s $VIP $GATEWAY) 日志不保存 >/dev/null 2>&1
  /sbin/arping -I $eth -c 5 -s $VIP $GATEWAY >/dev/null 2>&1
  #判斷上一步執(zhí)行結(jié)果 等于0成功
  if [ $? = 0 ]; then
    keepalived_communication_status=1
  else
    keepalived_communication_status=0
  fi
  return $keepalived_communication_status
}
 
#檢查keepalived服務(wù)狀態(tài)
function check_keepalived_service_status() {
  #通過systemctl status keepalived.service命令查看keepalived服務(wù)狀態(tài),搜索$active_status_str,統(tǒng)計(jì)行數(shù),是否等于1
  if [ $(systemctl status keepalived.service | grep "$active_status_str" | wc -l) -eq 1 ]; then
    keepalived_service_status=1
  else
    keepalived_service_status=0
  fi
  return $keepalived_service_status
}
 
#循環(huán)執(zhí)行
#判斷$CHECK_TIME 不等于 0
while [ $CHECK_TIME -ne 0 ]; do
  #執(zhí)行check_get_vip_status獲取get_vip_status
  check_get_vip_status
  #未獲取vip
  if [ $get_vip_status = 0 ]; then
    #修改CHECK_TIME值 結(jié)束循環(huán)
    CHECK_TIME=0
    #檢查服務(wù)狀態(tài) 執(zhí)行check_keepalived_service_status獲取keepalived_service_status
    if [ $keepalived_service_status = 0 ]; then
      echo "執(zhí)行腳本 check_gateway.sh $VIP;啟動(dòng)keepalived服務(wù)"
      systemctl start keepalived.service
    fi
 
    echo "執(zhí)行腳本 check_gateway.sh $VIP;執(zhí)行結(jié)果:未獲取vip,無需處理,腳本執(zhí)行結(jié)束,時(shí)間:"
    date
    #正常運(yùn)行程序并退出程序
    exit 0
  fi
  #$CHECK_TIME  = $CHECK_TIME-1
  let "CHECK_TIME -= 1"
  #執(zhí)行check_keepalived_status獲取keepalived_communication_status
  check_keepalived_status
  #判斷 $keepalived_communication_status = 1 通信成功
  if [ $keepalived_communication_status = 1 ]; then
    #修改CHECK_TIME值 結(jié)束循環(huán)
    CHECK_TIME=0
    #檢查服務(wù)狀態(tài) 執(zhí)行check_keepalived_service_status獲取keepalived_service_status
    check_keepalived_service_status
    if [ $keepalived_service_status = 0 ]; then
      echo "執(zhí)行腳本 check_gateway.sh $VIP;啟動(dòng)keepalived服務(wù)"
      systemctl start keepalived.service
    fi
 
    echo "執(zhí)行腳本 check_gateway.sh $VIP;GATEWAY=$GATEWAY,執(zhí)行結(jié)果:通信正常,無需處理,腳本執(zhí)行結(jié)束,時(shí)間:"
    date
    #正常運(yùn)行程序并退出程序
    exit 0
  fi
  #通信失敗&&連續(xù)3次
  if [ $keepalived_communication_status -eq 0 ] && [ $CHECK_TIME -eq 0 ]; then
    #關(guān)閉keepalived
    echo "執(zhí)行腳本 check_gateway.sh $VIP;關(guān)閉keepalived服務(wù)"
    systemctl stop keepalived.service
    echo "執(zhí)行腳本 check_gateway.sh $VIP;GATEWAY=$GATEWAY,執(zhí)行結(jié)果:通信失敗&&連續(xù)3次 關(guān)閉keepalived,腳本執(zhí)行結(jié)束,時(shí)間:"
    date
    #非正常運(yùn)行程序并退出程序
    exit 1
  fi
  sleep 3
done

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 電源
    +關(guān)注

    關(guān)注

    184

    文章

    17841

    瀏覽量

    251813
  • 電纜
    +關(guān)注

    關(guān)注

    18

    文章

    2752

    瀏覽量

    55122
  • 磁盤
    +關(guān)注

    關(guān)注

    1

    文章

    380

    瀏覽量

    25285

原文標(biāo)題:Keepalived腦裂的解決和預(yù)防(附腳本)

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    光伏組件的隱和識別及預(yù)防

    、熱斑、PID效應(yīng),是影響晶硅性能的三個(gè)重要因素。今天兔子君帶大家了解一下電池片隱的原因、如何識別及預(yù)防方法。1. 什么是“隱”隱
    發(fā)表于 10-15 19:58

    16nginx+keepalived +zuul如何實(shí)現(xiàn)高可用及負(fù)載均衡

    學(xué)習(xí)筆記微服務(wù)-16 nginx+keepalived +zuul 實(shí)現(xiàn)高可用及負(fù)載均衡
    發(fā)表于 05-22 10:16

    Keepalived+Haproxy如何實(shí)現(xiàn)高可用負(fù)載綜合實(shí)驗(yàn)

    Keepalived+Haproxy實(shí)現(xiàn)高可用負(fù)載綜合實(shí)驗(yàn)
    發(fā)表于 06-02 16:53

    電池片隱的原因、如何識別及預(yù)防方法

    造成隱現(xiàn)象,如焊接溫度過高、層壓溫度等參數(shù)設(shè)置不合理。  原材料:原材料的缺陷也是導(dǎo)致隱的主要因素之一。  5. 預(yù)防光伏組件隱的要點(diǎn)  在生產(chǎn)過程中以及后續(xù)的存放、運(yùn)輸、安裝中
    發(fā)表于 12-09 15:33

    電溯源定位即電逆向問題

    電溯源定位即電逆向問題,是根據(jù)頭表記錄到的電位信號,反向推算出估計(jì)的內(nèi)神經(jīng)活動(dòng)源的位置、方向和強(qiáng)度信息。–本質(zhì)上,電逆問題是非線性優(yōu)化問題,考慮到計(jì)算的復(fù)雜性,因而近似規(guī)約為線
    發(fā)表于 12-29 07:42

    相延時(shí)整形互鎖電路

    選擇8098單片機(jī)HSO0、HSO1、HSO2輸出三路SPWM波,經(jīng)圖相延時(shí)整形互鎖電路后得到6路SPWM信號。這樣采用了硬件電路進(jìn)行相并由硬件電路進(jìn)行延時(shí)產(chǎn)生死區(qū)時(shí)間,使得逆變器同一橋臂
    發(fā)表于 07-25 11:16 ?1874次閱讀
    <b class='flag-5'>裂</b>相延時(shí)整形互鎖電路

    LED芯片常見暗原因分析

    LED芯片常見暗原因分析 在生產(chǎn)過程中,LED芯片產(chǎn)生暗的原因有很多。因此,我們僅從參數(shù)、機(jī)構(gòu)、工具三方面進(jìn)行簡要分析。
    發(fā)表于 11-20 09:48 ?2808次閱讀

    linux高級技巧:服務(wù)器集群之keepalived

    linux高級技巧:集群之keepalived
    的頭像 發(fā)表于 03-20 13:36 ?5179次閱讀
    linux高級技巧:服務(wù)器集群之<b class='flag-5'>keepalived</b>

    什么是散中子源?散中子源是如何發(fā)揮作用呢?

    中子源是用高能強(qiáng)流質(zhì)子加速器產(chǎn)生能量1GeV以上的質(zhì)子束,轟擊重元素靶(如鎢或鈾),在靶中發(fā)生散反應(yīng),產(chǎn)生大量的中子。當(dāng)一個(gè)高能質(zhì)子,打到重原子核上時(shí),一些中子被轟擊出來,這個(gè)過程被稱為散反應(yīng)。
    的頭像 發(fā)表于 03-30 09:25 ?2.1w次閱讀

    keepalived及LVS概述,KeepAlived工作原理

    Checkers :此功能模塊主要負(fù)責(zé)真實(shí)服務(wù)器的健康檢查( HealthChecking ),是Keepalived最主要的功能之一,因?yàn)镠ealthChecking是負(fù)載均衡功能穩(wěn)定運(yùn)行的基礎(chǔ), LVS集群節(jié)點(diǎn)的故障隔離和重新加入均依賴于HealthChecking的結(jié)果。
    的頭像 發(fā)表于 06-25 14:08 ?5.5w次閱讀
    <b class='flag-5'>keepalived</b>及LVS概述,<b class='flag-5'>KeepAlived</b>工作原理

    keepalived配置文件的詳細(xì)資料詳解

     keepalived是一個(gè)類似于layer3, 4 & 5交換機(jī)制的軟件,也就是我們平時(shí)說的第3層、第4層和第5層交換。Keepalived是自動(dòng)完成,不需人工干涉。
    發(fā)表于 03-07 08:00 ?0次下載
    <b class='flag-5'>keepalived</b>配置文件的詳細(xì)資料詳解

    干貨:VMware虛擬機(jī)和 keepalived的運(yùn)維手冊

    干貨:VMware虛擬機(jī)和 keepalived的運(yùn)維手冊
    的頭像 發(fā)表于 06-28 10:00 ?2753次閱讀
    干貨:VMware虛擬機(jī)和 <b class='flag-5'>keepalived</b>的運(yùn)維手冊

    Keepalived工作原理簡介

    Keepalived是實(shí)現(xiàn)高可用架構(gòu)的不二之選,如果你想通過開源軟件來搭建一套雙機(jī)熱備架構(gòu)系統(tǒng),Keepalived絕對是最優(yōu)選擇。無論是在易用性還是穩(wěn)定性上都是非常優(yōu)秀的。
    的頭像 發(fā)表于 02-25 17:00 ?1065次閱讀

    PCBA焊點(diǎn)錫是什么原因?

    一站式PCBA智造廠家今天為大家講講有翅金屬彈片直焊電路板錫或翅膀斷裂是什么原因?。接下來為大家介紹有翅金屬彈片直焊電路板錫或翅膀斷裂問題。
    的頭像 發(fā)表于 05-04 09:12 ?1530次閱讀

    確保網(wǎng)站無縫運(yùn)行:Keepalived高可用與Nginx集成實(shí)戰(zhàn)

    nginx負(fù)載均衡機(jī)高可用 產(chǎn)生的原因 的常見解決方案 對
    的頭像 發(fā)表于 11-27 09:08 ?664次閱讀
    確保網(wǎng)站無縫運(yùn)行:<b class='flag-5'>Keepalived</b>高可用與Nginx集成實(shí)戰(zhàn)
    大发888真钱娱乐游戏博彩| 百家乐官网出千大全| 百家乐官网游戏厅| 木棉百家乐的玩法技巧和规则 | 棋牌游戏网站| 百苑百家乐官网的玩法技巧和规则 | 百家乐最保险的方法| bet365最快最稳定| 百家乐官网技巧平注常赢法| 宝都棋牌游戏| 南京百家乐官网的玩法技巧和规则| 大发888官方网址| 百家乐官网押注方法| 大发888中文官网| 网上百家乐官网开户送现金| 唐朝百家乐的玩法技巧和规则| 百家乐官网换人| 大发888赌场官方下载| 月华百家乐官网的玩法技巧和规则| 永利赌场| 百家乐官网分| 六合彩报码| 百家乐好多假网站| 百家乐官网星级游戏| 手机百家乐的玩法技巧和规则| 介绍百家乐官网赌博技巧| 大发888组件下载| 旺财转运24妙法| 澳门百家乐必胜| 百家乐信息| 信誉百家乐官网博彩网| 太阳城金旭园| 成都南偏西24度风水| 手游| 威尼斯人娱乐城优惠| 红9百家乐官网的玩法技巧和规则 高尔夫百家乐官网的玩法技巧和规则 | 威尼斯人娱乐场骗人| 百家乐官网任你博娱乐场开户注册| 大赢家娱乐城官方网| 百家乐网站赌博| 网络百家乐官网会作假吗|