#!/bin/bash # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. ROUTER_BIN_PATH="/ramdisk/rrouter" ROUTER_LOG="${ROUTER_BIN_PATH}/keepalived.log" STRIKE_FILE="$ROUTER_BIN_PATH/keepalived.strikes" TS_FILE="$ROUTER_BIN_PATH/keepalived.ts" CT_FILE="$ROUTER_BIN_PATH/keepalived.ct" checktime=$(date +%s) hbtime=$(cat $TS_FILE) diff=$(($checktime - $hbtime)) lastcheck=0 if [ -e $CT_FILE ] then lastcheck=$(cat $CT_FILE 2>/dev/null) fi checkdiff=$(($checktime - $lastcheck)) if [ $checkdiff -ge 0 ] && [ $checkdiff -lt 30 ] then exit fi echo $checktime > $CT_FILE s=0 if [ $diff -gt 10 ] then if [ -e $STRIKE_FILE ] then s=$(cat $STRIKE_FILE 2>/dev/null) fi s=$(($s+1)) echo $s > $STRIKE_FILE echo "Check time: $checktime, last heartbeat time: $hbtime, time diff: $diff, strike count: $s" >> $ROUTER_LOG else rm -f $STRIKE_FILE fi if [ $s -gt 3 ] then systemctl stop --now keepalived >> $ROUTER_LOG 2>&1 systemctl stop --now conntrackd >> $ROUTER_LOG 2>&1 #Set fault so we have the same effect as a KeepaliveD fault. python /opt/cloud/bin/configure_router.py --fault pkill -9 keepalived >> $ROUTER_LOG 2>&1 || true pkill -9 conntrackd >> $ROUTER_LOG 2>&1 || true echo Status: FAULT \(keepalived process is dead\) >> $ROUTER_LOG exit fi