keepalived完整配置文件

! Configuration File for keepalived

# 定义全局参数
global_defs {
    notification_email {
        you@example.com      # 节点状态改变时发送通知的邮箱地址
    }
    notification_email_from keepalived@localhost  # 发送通知的邮箱地址
    smtp_server 127.0.0.1                        # SMTP服务器地址
    smtp_connect_timeout 30                      # SMTP连接超时时间
    router_id LVS_DEVEL                          # 路由ID
}

# 定义VRRP实例
vrrp_instance VI_1 {
    # 监听的网络接口
    interface eth0
    # 配置主节点状态
    state MASTER
    # 虚拟路由ID
    virtual_router_id 51
    # 优先级,主节点优先级高于备份节点
    priority 100
    # 虚拟IP地址
    virtual_ipaddress {
        192.168.1.100       # VIP地址
    }
    # 轮询检测haproxy服务是否存活,最多执行10次
    # 通过kill命令向进程发送0号信号,如果haproxy进程存活则不执行任何操作
    # 如果haproxy进程不存在,则重启haproxy进程
    # 如果执行10次之后haproxy依旧未启动,则切换keepalived节点状态
    # 如果当前节点为主节点,则切换到备份节点,如果当前节点为备份节点,则切换到主节点
    track_script {
        chk_haproxy_script
    }
    # 定义通知机制,如果节点状态发生变化,则通过邮件通知管理员
    # 如果配置了notification_email,则在状态改变时发送邮件通知
    # 如果未配置notification_email,则将日志信息写入/var/log/messages中
    notify_master "/usr/local/bin/keepalived_notify.sh MASTER"
    notify_backup "/usr/local/bin/keepalived_notify.sh BACKUP"
    notify_fault "/usr/local/bin/keepalived_notify.sh FAULT"
    # 检查主备节点之间的连接是否正常
    # 如果检测到故障,则将当前节点切换到备份节点
    # 如果当前节点为主节点,则切换到备份节点,如果当前节点为备份节点,则继续保持备份状态
    track_interface {
        eth0
    }
}

# 定义VRRP实例
vrrp_instance VI_2 {
    # 监听的网络接口
    interface eth1
    # 配置备份节点状态
    state BACKUP
    # 虚拟路由ID
    virtual_router_id 52
    # 优先级,主节点优先级高于备份节点
    priority 50
    # 虚拟IP地址
    virtual_ipaddress {
        192.168.2.100       # VIP地址
    }
    # 轮询检测web服务是否存活,最多执行10次
    # 如果web服务不存在,则切换keepalived节点状态
	# 如果当前节点为主节点,则切换到备份节点,如果当前节点为备份节点,则切换到主节点
	track_script {
	    chk_web_script
	}

	# 定义通知机制,如果节点状态发生变化,则通过邮件通知管理员
	# 如果配置了notification_email,则在状态改变时发送邮件通知
	# 如果未配置notification_email,则将日志信息写入/var/log/messages中
	notify_master "/usr/local/bin/keepalived_notify.sh MASTER"
	notify_backup "/usr/local/bin/keepalived_notify.sh BACKUP"
	notify_fault "/usr/local/bin/keepalived_notify.sh FAULT"

	# 检查主备节点之间的连接是否正常
	# 如果检测到故障,则将当前节点切换到备份节点
	# 如果当前节点为主节点,则切换到备份节点,如果当前节点为备份节点,则继续保持备份状态
	track_interface {
	    eth1
	}
}

# 定义检测haproxy进程的脚本
# 如果haproxy进程存活,则不执行任何操作
# 如果haproxy进程不存在,则重新启动haproxy
# 如果执行10次之后haproxy依旧未启动,则切换keepalived节点状态
# 如果当前节点为主节点,则切换到备份节点,如果当前节点为备份节点,则切换到主节点
vrrp_script chk_haproxy_script {
	script "/usr/local/bin/haproxy_check.sh"
	interval 5
	weight 2
	fall 10
	rise 2
}

# 定义检测web服务进程的脚本
# 如果web服务进程存活,则不执行任何操作
# 如果web服务进程不存在,则切换keepalived节点状态
# 如果当前节点为主节点,则切换到备份节点,如果当前节点为备份节点,则切换到主节点
vrrp_script chk_web_script {
	script "/usr/local/bin/web_check.sh"
	interval 5
	weight 2
	fall 10
	rise 2
}

脚本文件内容
/usr/local/bin/haproxy_check.sh

#!/bin/bash
# 检测haproxy进程是否存活
pgrep haproxy > /dev/null
if [ $? -ne 0 ]; then
    # 如果haproxy进程不存在,则尝试重新启动haproxy
    service haproxy restart

    # 给haproxy启动一些时间
    sleep 10

    # 再次检测haproxy进程是否存活
    pgrep haproxy > /dev/null
    if [ $? -ne 0 ]; then
        # 如果haproxy仍未启动,则退出并切换节点状态
        exit 1
    fi
fi
# 如果haproxy进程存活,则直接退出
exit 0

/usr/local/bin/web_check.sh

#!/bin/bash
# 检测web服务进程是否存活
pgrep nginx > /dev/null
if [ $? -ne 0 ]; then
    # 如果web服务进程不存在,则退出并切换节点状态
    exit 1
fi
# 如果web服务进程存活,则直接退出
exit 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值