第 4 章 使用 Keepalived 初始负载均衡器配置


安装 Load Balancer 软件包后,您必须执行一些基本步骤来设置 LVS 路由器和实际服务器以用于 Keepalived。本章详细介绍了这些初始步骤。

4.1. 基本 Keepalived 配置

在这个基本示例中,两个系统配置为负载平衡器。LB1 (Active)和 LB2 (Backup)将对运行 httpd 的四个 Web 服务器池的路由请求路由到 httpd,其中实际 IP 地址为 192.168.1.20 到 192.168.1.24,共享虚拟 IP 地址 10.0.0.1。每个负载均衡器有两个接口(eth0eth1),一个用于处理外部互联网流量,另一个用于将请求路由到真实服务器。使用的负载平衡算法是 round Robin,路由方法将是网络地址转换。

4.1.1. 创建 keapalived.conf 文件

keepalived 通过配置为负载均衡器的每个系统中的 keepalived.conf 文件进行配置。要创建类似 第 4.1 节 “基本 Keepalived 配置” 所示的负载均衡器拓扑,请使用文本编辑器在活跃和备份负载均衡器(LB1 和 LB2)中打开 keepalived.conf。例如:
vi /etc/keepalived/keepalived.conf
一个带有配置的基本负载均衡系统,如 第 4.1 节 “基本 Keepalived 配置” 所述,它有一个 keepalived.conf 文件,如以下代码部分所述。在本例中,keepalived.conf 文件在活动和备份路由器上相同,但 VRRP 实例除外,如 所述 第 4.1.1.2 节 “VRRP 实例”

4.1.1.1. 全局定义

keepalived.conf 文件的 Global Definitions 部分允许管理员在发生负载均衡器更改时指定通知详情。请注意,全局定义是可选的,对于 Keepalived 配置不需要。keepalived.conf 文件的这一部分在 LB1 和 LB2 上都相同。
global_defs {

   notification_email {
       admin@example.com
   }
   notification_email_from noreply@example.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 60
}
notification_email 是负载均衡器的管理员,而 notification_email_from 是一个发送负载均衡器状态更改的地址。SMTP 特定配置指定从中发送通知的邮件服务器。

4.1.1.2. VRRP 实例

以下示例显示了 master 路由器和备份路由器中的 keeplalived.conf 文件的 vrrp_sync_group 小节。请注意,statepriority 值在两个系统之间有所不同。
以下示例显示了 LB1 中 keepalived.conf 文件的 vrrp_sync_group 小节,即 master 路由器。
vrrp_sync_group VG1 {
   group {
      RH_EXT
      RH_INT
   }
}

vrrp_instance RH_EXT {
    state MASTER
    interface eth0
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass passw123
    }
    virtual_ipaddress {
    10.0.0.1
    }
}

vrrp_instance RH_INT {
   state MASTER
   interface eth1
   virtual_router_id 2
   priority 100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass passw123
   }
   virtual_ipaddress {
       192.168.1.1
   }
}
以下示例显示了 LB2 的 keepalived.conf 文件的 vrrp_sync_group 小节,即备份路由器。
vrrp_sync_group VG1 {
   group {
      RH_EXT
      RH_INT
   }
}

vrrp_instance RH_EXT {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass passw123
    }
    virtual_ipaddress {
    10.0.0.1
    }
}

vrrp_instance RH_INT {
   state BACKUP
   interface eth1
   virtual_router_id 2
   priority 99
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass passw123
   }
   virtual_ipaddress {
       192.168.1.1
   }
}
在这些示例中,vrrp_sync_group 小节定义了通过任何状态更改(如 failover)来保持在一起的 VRRP 组。为与互联网通信的外部接口定义了一个实例(RH_EXT),也为内部接口(RH_INT)定义了一个实例。
vrrp_instance 行详细说明了 VRRP 服务守护进程的虚拟接口配置,它会创建虚拟 IP 实例。MASTER 状态指定活动服务器 ,状态 BACKUP 指定备份服务器。
interface 参数将物理接口名称分配给这一特定的虚拟 IP 实例。
virtual_router_id 是虚拟路由器实例的数字标识符。它在所有参与此虚拟路由器的 LVS 路由器系统上必须相同。它用于区分在同一网络接口中运行的 keepalived 实例。
优先级指定分配接口在故障切换中接管的顺序 ;数值越大,优先级越高。此优先级值必须在 0 到 255 范围内,并且配置为 状态 MASTER 的 Load Balancing 服务器的优先级值应设置为比配置为 状态 BACKUP 的优先级值高的值。
身份验证块指定身份验证类型 (auth_type)和密码(auth_pass),用于验证服务器以进行故障转移同步。PASS 指定密码身份验证;Keepalived 还支持 AH 或身份验证标头来实现连接完整性。
最后,virtual_ipaddress 选项指定接口虚拟 IP 地址。

4.1.1.3. 虚拟服务器定义

keepalived.conf 文件的 Virtual Server definitions 部分在 LB1 和 LB2 上都相同。
virtual_server 10.0.0.1 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    protocol TCP

    real_server 192.168.1.20 80 {
        TCP_CHECK {
                connect_timeout 10
        }
    }
    real_server 192.168.1.21 80 {
        TCP_CHECK {
                connect_timeout 10
        }
    }
    real_server 192.168.1.22 80 {
        TCP_CHECK {
                connect_timeout 10
        }
    }
    real_server 192.168.1.23 80 {
        TCP_CHECK {
                connect_timeout 10
        }
    }

}
在此块中,virtual_server 首先使用 IP 地址配置。然后,delay_loop 配置健康检查之间的时间(以秒为单位)。lb_algo 选项指定用于可用性的算法类型(本例中为 r-Robin;对于可能的 lb_algo 值列表,请参阅 表 4.1 “适用于虚拟服务器的 lv_algo 值”)。lb_kind 选项决定路由方法,本例中使用了网络地址转换(ornat)。
配置虚拟服务器详细信息后,将再次通过首先指定 IP 地址来配置 real_server 选项。TCP_CHECK 小节使用 TCP 检查实际服务器的可用性。connect_timeout 以秒为单位配置超时前的时间。
注意
不支持从负载均衡器或其中一个实际服务器访问虚拟 IP。同样,不支持在与真实服务器相同的计算机上配置负载平衡器。
表 4.1. 适用于虚拟服务器的 lv_algo 值
算法名称lv_algo
round-Robin
rr
加权 round-Robin
wrr
minimum-Connection
lc
加权 Least-Connection
wlc
基于本地性的 Least-Connection
lblc
使用复制基于本地的 Least-Connection 计划
lblcr
目标哈希
dh
源哈希
sh
源预期 Delay
sed
Never Queue
nq
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.