keepalived

 

keepalived 是一种广泛使用的高可用性(High Availability, HA)解决方案,主要用于在 Linux 系统中实现负载均衡和故障切换。它通过 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)机制确保在主服务器故障时,备份服务器可以无缝接管,从而提高系统的可靠性和业务连续性。

主要功能

  • 高可用性:实现主备模式,确保服务不中断。
  • 负载均衡:支持多台服务器之间的流量分发,提升性能。
  • 健康检查:监控后端服务状态,自动切换。
sudo apt install keepalived 
root@plt177:/etc/keepalived# cat keepalived.conf
! Configuration File for keepalived

global_defs {
    router_id LVS_DEVEL_A  # 节点标识,建议使用主机名
    script_user root
    #enable_script_security
}

vrrp_instance VI_1 {
    state MASTER           # 初始状态为BACKUP
    interface ens3         # 使用实际网卡名称
    virtual_router_id 51   # 必须与节点A相同
    priority 100            # 优先级低于节点A
    advert_int 1           # 检查间隔
    nopreempt              # 关键:禁止抢占

    unicast_src_ip 10.18.1.33
    unicast_peer {
        10.18.1.34
    }

    authentication {
        auth_type PASS
        auth_pass 1111  # 密码,必须与节点A相同
    }

    virtual_ipaddress {
        #172.19.33.235/16 dev bond0 label bond0:1
        #172.60.33.236/16 dev bond0 label bond0:3
        #172.19.33.235/16 dev ens192 label ens192:1
        #172.60.33.236/16 dev ens192 label ens192:3
        10.18.1.25/24 dev ens3 label ens3:1
    }

    notify_master "/etc/keepalived/notify.sh master"  # 状态切换通知脚本
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
}

root@plt177:/etc/keepalived# cat notify.sh
#!/bin/bash

#TYPE=$1
#NAME=$2
STATE=$1

case $STATE in
    "master")
        # 成为主节点时执行的命令
        echo "$(date) - I am MASTER" >> /var/log/keepalived.log
        echo "$(date) - I am MASTER"
        exit 0
        ;;
    "backup")
        # 成为备节点时执行的命令
        echo "$(date) - I am BACKUP" >> /var/log/keepalived.log
        echo "$(date) - I am BACKUP"
        exit 0
        ;;
    "fault")
        # 进入故障状态时执行的命令
        echo "$(date) - I am FAULT" >> /var/log/keepalived.log
        echo "$(date) - I am FAULT"
        exit 0
        ;;
    *)
        echo "unknown state"
        exit 1
        ;;
esac
root@k8s-34:/etc/keepalived# cat keepalived.conf
! Configuration File for keepalived

global_defs {
    router_id LVS_DEVEL_B  # 节点标识,建议使用主机名
    script_user root
    #enable_script_security
}

vrrp_instance VI_1 {
    state BACKUP           # 初始状态为BACKUP
    interface ens3         # 使用实际网卡名称
    virtual_router_id 51   # 必须与节点A相同
    priority 90            # 优先级低于节点A
    advert_int 1           # 检查间隔
    nopreempt              # 关键:禁止抢占

    unicast_src_ip 10.18.1.34
    unicast_peer {
        10.18.1.33
    }

    authentication {
        auth_type PASS
        auth_pass 1111  # 密码,必须与节点A相同
    }

    virtual_ipaddress {
        #172.19.33.235/16 dev bond0 label bond0:1
        #172.60.33.236/16 dev bond0 label bond0:3
        #172.19.33.235/16 dev ens192 label ens192:1
        #172.60.33.236/16 dev ens192 label ens192:3
        10.18.1.25/24 dev ens3 label ens3:1
    }

    notify_master "/etc/keepalived/notify.sh master"  # 状态切换通知脚本
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
}
root@k8s-34:/etc/keepalived# cat notify.sh
#!/bin/bash

TYPE=$1
NAME=$2
STATE=$3

case $STATE in
    "MASTER")
        # 成为主节点时执行的命令
        echo "$(date) - I am MASTER" >> /var/log/keepalived.log
        echo "$(date) - I am MASTER"
        exit 0
        ;;
    "BACKUP")
        # 成为备节点时执行的命令
        echo "$(date) - I am BACKUP" >> /var/log/keepalived.log
        echo "$(date) - I am BACKUP"
        exit 0
        ;;
    "FAULT")
        # 进入故障状态时执行的命令
        echo "$(date) - I am FAULT" >> /var/log/keepalived.log
        echo "$(date) - I am FAULT"
        exit 0
        ;;
    *)
        echo "unknown state"
        exit 1
        ;;
esac

 

posted on 2025-07-03 17:04  csuyangpeng  阅读(9)  评论(0)    收藏  举报

导航

//替换成自己路径的js文件