第 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。每个负载均衡器有两个接口(
eth0
和 eth1
),一个用于处理外部互联网流量,另一个用于将请求路由到真实服务器。使用的负载平衡算法是 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
小节。请注意,state
和 priority
值在两个系统之间有所不同。
以下示例显示了 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。同样,不支持在与真实服务器相同的计算机上配置负载平衡器。
算法名称 | 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
|