Keepalived跨网段设置 -- KeepAlived on different subnets

好的,我可以给你看一些keepalived的配置示例,但是你需要根据你的具体需求和环境来调整参数。

global_defs {
  vrrp_version 2
  vrrp_garp_master_delay 1
  vrrp_garp_master_refresh 60
  script_user root
  enable_script_security
}

vrrp_script chk_haproxy {
  script "/etc/keepalived/scripts/check_haproxy.sh"
  timeout 1
  interval 5 # check every 5 second
  fall 2 # require 2 failures for KO
  rise 2 # require 2 successes for OK
}

vrrp_instance lb-vips {
  state { {KEEPALIVED_STATE}}
  interface { {KEEPALIVED_INTERFACE}}
  virtual_router_id { {KEEPALIVED_VIRTUAL_ROUTER_ID}}
  priority { {KEEPALIVED_PRIORITY}}
  advert_int 1
  unicast_src_ip { {KEEPALIVED_UNICAST_SRC}}
  unicast_peer {
    X.X.X.X # here you have all ip of other keepalived
    X.X.X.X
  }
  authentication {
    auth_type PASS
    auth_pass { {KEEPALIVED_AUTH_PASSWORD}}
  }
  track_script {
    chk_haproxy
  }
   notify "/etc/keepalived/scripts/notify_script.sh"
}
global_defs {
 notification_email_from myadmin@myserver
 smtp_server localhost
 smtp_connect_timeout 30
 router_id LVS_DEVEL
}

vrrp_script check_nginx {
 script "/usr/libexec/keepalived/check_nginx.sh"
 interval 3
}

vrrp_sync_group link_instances {
 group {
 real
 stop_duplicate
 }
}

vrrp_instance real {
 state BACKUP
 interface eth0
 virtual_router_id 1
 priority 250 # This will be a lower value on the other router
 version 3 # not necessary, but you may as well use the current protocol
 advert_int 1
 nopreempt

 track_interface {
 eth1
 }

 track_script {
 check_nginx
 }

 unicast_src_ip 115.197.1.166
 unicast_peer {
   115.197.1.167
 }

 virtual_ipaddress {
   115.197.1.170/32 dev eth0
 }
}

vrrp_instance stop_duplicate {
 state BACKUP
 interface eth1
 virtual_router_id 1
 priority 255 version 3 
 advert_int 1 
 nopreempt

 unicast_src_ip 192.168.0.3 
 unicast_peer { 
   192.168.0.4 
 }

 virtual_ipaddress { 
   192.168.0.5/29 
 }
}
vrrp_skip_check_adv_addr

or

vrrp_strict off

notify_script是一个选项,用于指定一个脚本,当keepalived的状态发生变化时,会执行这个脚本。这个脚本可以用来做一些自定义的操作,比如发送邮件通知,调用API接口,或者执行其他命令。

notify_script的具体内容取决于你想要实现的功能,但是一般来说,它应该是一个可执行的文件,接受三个参数:$1是keepalived的实例名称,$2是keepalived的状态(MASTER,BACKUP或FAULT),$3是keepalived的类型(INSTANCE或GROUP)。

例如,你可以参考这个notify_script的内容1

#!/bin/bash

# Get the parameters
INSTANCE=$1
STATE=$2
TYPE=$3

# Define the IP Failover parameters
OVH_ENDPOINT=ovh-eu
OVH_APP_KEY=X.X.X.X
OVH_APP_SECRET=X.X.X.X
OVH_CONSUMER_KEY=X.X.X.X
FAILOVER_IP=X.X.X.X
FAILOVER_SERVICE=X.X.X.X

# Define the email parameters
EMAIL_FROM=myadmin@myserver
EMAIL_TO=myuser@mydomain
EMAIL_SUBJECT="Keepalived notification"
EMAIL_BODY="Keepalived $INSTANCE changed to state $STATE"

# If the state is MASTER, move the IP Failover to this server
if [ "$STATE" = "MASTER" ]; then
  curl -X POST -H "X-Ovh-Application: $OVH_APP_KEY" -H "X-Ovh-Consumer: $OVH_CONSUMER_KEY" -H "X-Ovh-Signature: $OVH_APP_SECRET+$OVH_CONSUMER_KEY+POST+/dedicated/server/$FAILOVER_SERVICE/failover/$FAILOVER_IP+$(date +%s)" https://$OVH_ENDPOINT/api/dedicated/server/$FAILOVER_SERVICE/failover/$FAILOVER_IP -d "ipOnDestination=1.1.10.101"
fi

# Send an email notification using mailx command
echo "$EMAIL_BODY" | mailx -s "$EMAIL_SUBJECT" -r "$EMAIL_FROM" "$EMAIL_TO"

check_haproxy.sh是一个脚本,用于检查haproxy服务的状态,如果haproxy服务正常运行,就返回0,否则返回1。这个脚本可以用来作为keepalived的vrrp_script,让keepalived根据haproxy服务的状态来决定是否触发故障转移。

check_haproxy.sh的具体内容取决于你的haproxy服务的配置和运行方式,但是一般来说,它应该是一个可执行的文件,使用pidof或ps命令来检查haproxy进程是否存在,或者使用curl或nc命令来检查haproxy监听的端口是否响应。

例如,你可以参考这个check_haproxy.sh的内容1

#!/bin/bash

# Check if haproxy is running
pidof haproxy > /dev/null

# If haproxy is not running, return 1
if [ $? -ne 0 ]; then
  exit 1
fi

# Check if haproxy is listening on port 80
nc -z localhost 80 > /dev/null

# If haproxy is not listening on port 80, return 1
if [ $? -ne 0 ]; then
  exit 1
fi

# If haproxy is running and listening on port 80, return 0
exit 0
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值