Keepalived双击热备

一,Keepalived 双击热备基础知识

Keepalived 是一款用于提高服务器高可用性的软件,最初是为 LVS(Linux Virtual Server)设计的,用于管理和监控 LVS 集群中的各个服务节点的状态。随着发展,Keepalived 加入了 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)的功能,使其能够实现高可用性集群,并且可以应用于多种场景,而不仅仅局限于 LVS。

1:Keepalived概述及安装

Keepalived 支持多种热备方式,其中最常见的是使用 VRRP 协议来实现双机热备。在双机热备中,两个或多个服务器共享一个虚拟 IP 地址,其中一个服务器作为主服务器(Master),负责处理客户端请求,其他服务器则处于备份状态(Backup)。如果主服务器发生故障,备份服务器会自动接管虚拟 IP 地址,从而保证服务的连续性。

1.1:Keepalived的热备方式

Keepalived 是一个基于 VRRP(Virtual Router Redundancy Protocol, 虚拟路由冗余协议)的高可用性解决方案。它主要用于在 Linux 系统中实现服务器和服务的高可用性。Keepalived 支持多种热备方式,包括:

  • VRRP 实例:用于实现 IP 地址的高可用性。在一组服务器中选举出一个主服务器来处理流量,当主服务器故障时,其他服务器可以接管这个 IP 并继续提供服务。
  • 健康检查:通过发送 ICMP 或者 TCP 数据包到特定端口来检测后端服务器的健康状况,确保流量只被转发到健康的服务器上。
  • 负载均衡:虽然 Keepalived 主要不是为了负载均衡而设计的,但它可以结合 LVS (Linux Virtual Server) 实现简单的负载均衡功能。

1.2:Keepalived的安装与服务控制

(1):安装Keepalived

在 CentOS/RHEL 系统中,可以通过以下命令安装 Keepalived:

sudo yum install keepalived

在 Debian/Ubuntu 系统中,则可以使用以下命令:

sudo apt-get update
sudo apt-get install keepalived
(2):控制Keepalived服务

安装完成后,你可以使用系统的服务管理工具来启动、停止和监控 Keepalived 服务。

启动 Keepalived:

sudo systemctl start keepalived

查看 Keepalived 服务状态:

sudo systemctl status keepalived

设置 Keepalived 在系统启动时自动启动:

sudo systemctl enable keepalived

停止 Keepalived:

sudo systemctl stop keepalived

2:使用Keepalived实现双机热备

要使用 Keepalived 实现双机热备,你需要在两台服务器上进行配置。一台作为主服务器(Master),另一台作为备用服务器(Backup)。当主服务器发生故障时,备用服务器将自动接管虚拟 IP 地址并开始提供服务。

1:主服务器的配置

假设主服务器的 IP 地址为 192.168.1.10,备用服务器的 IP 地址为 192.168.1.11,并且你希望使用的虚拟 IP 地址为 192.168.1.100

Keepalived 配置文件 (/etc/keepalived/keepalived.conf):

global_defs {
    router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100
    }
}

在这个配置中:

  • state MASTER 表示这台服务器作为主服务器运行。
  • interface eth0 指定网络接口。
  • virtual_router_id 51 定义了一个 VRRP 实例的标识符。
  • priority 100 设置了优先级,数值越高优先级越高。
  • advert_int 1 设置了 VRRP 广播间隔为 1 秒。
  • authentication 块定义了认证信息。
  • virtual_ipaddress 列出了虚拟 IP 地址。

2:备用服务器的配置

Keepalived 配置文件 (/etc/keepalived/keepalived.conf):

global_defs {
    router_id LVS_BACKUP
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100
    }
}

在这个配置中:

  • state BACKUP 表示这台服务器作为备用服务器运行。
  • priority 90 设置了较低的优先级,以便在主服务器正常工作时保持备用状态。
  • 其他配置项与主服务器相同。

3:测试双机热备功能

完成配置后,你需要确保两台服务器都已正确安装 Keepalived,并且配置文件正确无误。

  1. 启动 Keepalived 服务:

    sudo systemctl start keepalived

    对于每台服务器都要执行此命令。

  2. 检查 Keepalived 服务状态:

    sudo systemctl status keepalived

    这将显示 Keepalived 是否正在运行以及任何相关的错误信息。

  3. 验证虚拟 IP 地址是否被主服务器获取: 在主服务器上运行:

    ip addr show | grep 192.168.1.100

    如果一切正常,你应该能看到虚拟 IP 地址 192.168.1.100 已经绑定到了主服务器的接口上。

  4. 模拟主服务器故障: 在主服务器上暂时关闭 Keepalived 服务:

    sudo systemctl stop keepalived

    然后,在备用服务器上运行:

    ip addr show | grep 192.168.1.100

    应该可以看到虚拟 IP 地址已经被备用服务器获取。

  5. 恢复主服务器: 在主服务器上重新启动 Keepalived 服务:

    sudo systemctl start keepalived

    并检查虚拟 IP 地址是否重新回到主服务器。

二,LVS+Keepalived高可用群集

要构建一个 LVS + Keepalived 高可用集群,你需要在多个服务器上进行配置。这里我们将详细讨论如何配置主调度器、从调度器以及 web 服务器节点。

1:配置主调度器

假设主调度器的 IP 地址为 192.168.1.10,从调度器的 IP 地址为 192.168.1.11,并且你希望使用的虚拟 IP 地址为 192.168.1.100

(1):全职配置,热备配置

Keepalived 配置文件 (/etc/keepalived/keepalived.conf):

global_defs {
    router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100
    }
}

# 定义 LVS 负载均衡规则
vserver 192.168.1.100 http {
    lb_algo rr
    lb_kind NAT
    protocol TCP
    real_server 192.168.1.20 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.1.21 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

在这个配置中:

  • state MASTER 表示这台服务器作为主调度器运行。
  • interface eth0 指定网络接口。
  • virtual_router_id 51 定义了一个 VRRP 实例的标识符。
  • priority 100 设置了优先级,数值越高优先级越高。
  • advert_int 1 设置了 VRRP 广播间隔为 1 秒。
  • authentication 块定义了认证信息。
  • virtual_ipaddress 列出了虚拟 IP 地址。
  • vserver 定义了 LVS 的虚拟服务器配置,包括负载均衡算法、类型、协议等。
  • real_server 定义了实际服务器及其健康检查配置。
(2):web服务器池配置

在主调度器上配置 LVS 规则以分发流量到 web 服务器池。上面的配置已经包含了两个 web 服务器节点的信息。

(3):重新启动Keepalived服务
sudo systemctl restart keepalived

2:配置从调度器

Keepalived 配置文件 (/etc/keepalived/keepalived.conf):

global_defs {
    router_id LVS_BACKUP
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100
    }
}

# 定义 LVS 负载均衡规则
vserver 192.168.1.100 http {
    lb_algo rr
    lb_kind NAT
    protocol TCP
    real_server 192.168.1.20 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.1.21 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

在这个配置中:

  • state BACKUP 表示这台服务器作为从调度器运行。
  • priority 90 设置了较低的优先级,以便在主调度器正常工作时保持备用状态。
  • 其他配置项与主调度器相同。

3:配置web节点服务器

每个 web 服务器节点都需要安装 web 服务器软件(例如 Apache 或 Nginx)并配置好相应的网站内容。确保每个 web 服务器节点都在监听端口 80 上运行。

例如,对于 Apache,可以在 /etc/httpd/conf/httpd.conf 文件中进行配置,并重启 Apache 服务:

sudo systemctl restart httpd

4:测试LAS+Keepalived高可用群集

  1. 确认虚拟 IP 地址已被主调度器获取: 在主调度器上运行:

    ip addr show | grep 192.168.1.100
  2. 模拟主调度器故障: 在主调度器上暂时关闭 Keepalived 服务:

    sudo systemctl stop keepalived

    然后,在从调度器上运行:

    ip addr show | grep 192.168.1.100

    应该可以看到虚拟 IP 地址已经被从调度器获取。

  3. 测试负载均衡: 使用虚拟 IP 地址访问 web 服务器池。你可以通过轮询的方式多次访问虚拟 IP 地址,观察是否能够轮换到不同的 web 服务器节点。

  4. 恢复主调度器: 在主调度器上重新启动 Keepalived 服务:

    sudo systemctl start keepalived

    并检查虚拟 IP 地址是否重新回到主调度器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值