天天看点

Linux日常小技巧keepalived

作者:风趣运维工程狮

keepalived 是一款基于 VRRP 协议实现服务器主备冗余双活和负载均衡功能的软件。它可以保证服务器在网络故障或者服务器宕机的情况下,服务能够自动切换到备用服务器上,从而保证服务的可用性。

keepalived 支持主备模式和多主模式。主备模式中,一个服务器作为主服务器提供服务,另一个服务器作为备份,当主服务器发生故障时,备份服务器会自动接管服务。多主模式下,多个服务器同时提供相同的服务,当其中一个服务器遇到故障时,其他服务器会接管该服务器的服务。

keepalived 还支持在负载均衡环境下使用。通过配置多个真实服务器和虚拟 IP 地址,keepalived 将请求分发到真实服务器上,从而实现负载均衡效果。同时,也支持检测真实服务器的健康状态,并根据配置的算法来选择合适的服务器来处理请求。

  1. 安装 keepalived

可以通过以下命令来安装 keepalived:

sudo yum install -y keepalived
           
  1. 配置 keepalived

创建配置文件 /etc/keepalived/keepalived.conf,文件内容如下所示:

global_defs {
   router_id keepalived
}
vrrp_script check_haproxy {
    script "/usr/bin/killall -0 haproxy"
    interval 2
    weight 2
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass mypassword
    }
    virtual_ipaddress {
        192.168.0.100
    }
    track_script {
        check_haproxy
    }
}
virtual_server 192.168.0.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
    real_server 192.168.0.10 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server 192.168.0.20 80 {
        weight 1
        HTTP_GET {
            url {
                path "/"
                status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
           

上述配置文件中,配置了以下内容:

  • global_defs:定义全局变量,使用 router_id 设置路由器 ID。
  • vrrp_script:定义检查 haproxy 进程脚本,并将权重设置为 2。
  • vrrp_instance:定义 VRRP 实例,使用 interface 指定网卡接口,virtual_router_id 指定虚拟路由 ID,priority 指定优先级,advert_int 指定通告间隔,authentication 指定认证类型和密码,virtual_ipaddress 指定虚拟 IP 地址。
  • track_script:定义跟踪脚本,用于检测 haproxy 进程是否正常运行。
  • virtual_server:定义虚拟服务器,指定虚拟 IP 地址和端口号,延迟时间、负载均衡算法、负载均衡种类、持久化超时时间等信息,以及两个真实服务器的 IP 地址和端口号,权重、TCP 连接检查或 HTTP 检查等详细信息。
  1. 启动 keepalived

启动 keepalived 服务:

sudo systemctl start keepalived
           
  1. 验证配置

验证虚拟 IP 地址是否已经绑定到主服务器上,使用 ip addr 命令:

ip addr show | grep -w inet
           

同时,也可以测试负载均衡的效果,访问虚拟 IP 地址,请求会被分发到多个真实服务器上进行处理。

注意事项:

  1. 确认 keepalived 版本:不同版本的 keepalived 支持的功能可能有所不同,需要根据具体需求选择适合的版本。
  2. 确认操作系统内核和网络设备支持:keepalived 使用 Linux 内核模块实现 VRRP 协议的相关功能,需要确认操作系统内核版本是否支持。同时,还需要确认网络设备是否支持 ARP 技术。
  3. 配置文件格式和语法:配置文件格式和语法必须正确,否则 keepalived 服务将无法启动,需要认真检查配置文件中的各项参数。
  4. 配置多组 VRRP 实例时需要避免冲突:在配置多组 VRRP 实例时,不同实例的 virtual_router_id 参数必须保证唯一,否则会出现冲突,导致服务不可用。
  5. 设置优先级:在配置主备模式时,需要设置各个服务器的优先级参数(priority),确保主服务器的优先级最高,备份服务器的优先级次之。
  6. 检测真实服务器状态:在配置负载均衡时,需要配置相关的检测脚本,确保 keepalived 能够监测到真实服务器的健康状态。
  7. 增加日志记录:为了更好地排查故障和调试问题,建议在配置文件中增加日志记录相关的配置项。

整理不易,欢迎点赞转发,关注我每天分享运维小知识。

Linux日常小技巧keepalived

继续阅读