LVS+Keepalived 高可用环境部署记录(主主和主从模式)
在现代的网络服务架构中,高可用性是至关重要的。LVS(Linux Virtual Server)作为一种高性能的负载均衡解决方案,结合 Keepalived 实现高可用,能够确保服务的持续可用性。本文将详细记录 LVS+Keepalived 高可用环境在主主和主从模式下的部署过程,帮助读者理解并实践这一技术。
目录#
- 环境准备
- 主从模式部署
- 安装 Keepalived 和 LVS
- 配置 Keepalived
- 配置 LVS
- 主主模式部署
- 安装 Keepalived 和 LVS
- 配置 Keepalived
- 配置 LVS
- 常见实践与最佳实践
- 示例用法
- 参考
1. 环境准备#
1.1 服务器准备#
- 至少两台服务器,假设为 Server A 和 Server B。
- 操作系统:CentOS 7(其他 Linux 发行版也可,配置方式类似)。
- 关闭防火墙和 SELinux(生产环境可根据实际情况配置防火墙规则):
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config1.2 安装必要软件包#
yum install -y keepalived ipvsadm2. 主从模式部署#
2.1 安装 Keepalived 和 LVS#
在 Server A 和 Server B 上执行上述安装命令。
2.2 配置 Keepalived(以 Server A 为主服务器为例)#
编辑 /etc/keepalived/keepalived.conf:
! Configuration File for keepalived
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 # 虚拟 IP
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.1.101 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.102 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}解释:
global_defs:全局定义,router_id用于标识 Keepalived 实例。vrrp_instance:VRRP 实例配置,state为主服务器状态(MASTER),interface为网络接口,virtual_router_id虚拟路由 ID,priority优先级,virtual_ipaddress虚拟 IP。virtual_server:虚拟服务器配置,lb_algo负载均衡算法(这里是加权轮询 wrr),lb_kind负载均衡类型(DR 直接路由模式),real_server后端真实服务器配置,TCP_CHECK健康检查。
在 Server B 上,将 state 改为 BACKUP,priority 适当调低(如 90),其他配置类似。
2.3 配置 LVS(以 Server A 为例)#
ipvsadm -A -t 192.168.1.100:80 -s wrr
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -g解释:
-A:添加虚拟服务器。-a:添加真实服务器。-t:指定虚拟服务器 IP 和端口。-s:负载均衡算法。-r:真实服务器 IP 和端口。-g:DR 模式。
在 Server B 上同样配置,但需要注意虚拟 IP 的绑定(Keepalived 会自动处理部分)。
3. 主主模式部署#
3.1 安装 Keepalived 和 LVS#
同主从模式安装步骤。
3.2 配置 Keepalived(以 Server A 为例)#
编辑 /etc/keepalived/keepalived.conf:
! Configuration File for keepalived
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
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.1.101 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
vrrp_instance VI_2 {
state MASTER
interface eth0
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 2222
}
virtual_ipaddress {
192.168.1.101 # 另一个虚拟 IP
}
}
virtual_server 192.168.1.101 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.1.102 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}解释:
- 定义了两个 VRRP 实例(
VI_1和VI_2),分别对应不同的虚拟 IP。 - 每个虚拟 IP 都有自己的虚拟服务器配置,指向不同的后端真实服务器。
在 Server B 上,对于 VI_1,state 改为 BACKUP,priority 调低;对于 VI_2,state 改为 MASTER(如果 Server B 要承担另一虚拟 IP 的主角色),其他类似配置。
3.3 配置 LVS#
同主从模式配置方式,为每个虚拟 IP 配置对应的 LVS 规则。
4. 常见实践与最佳实践#
- 健康检查优化:根据服务特点调整
TCP_CHECK或其他检查参数,确保准确检测后端服务器状态。 - 负载均衡算法选择:根据业务流量特性选择合适的
lb_algo(如rr轮询、wrr加权轮询等)。 - 网络优化:确保网络接口性能良好,合理设置
advert_int(VRRP 通告间隔)。
5. 示例用法#
- 访问虚拟 IP(如
192.168.1.100),LVS 会根据配置将请求分发到后端真实服务器。 - 模拟主服务器故障,观察 Keepalived 是否能快速切换,虚拟 IP 是否漂移到备份服务器。
6. 参考#
通过以上步骤,读者可以成功部署 LVS+Keepalived 高可用环境的主主和主从模式,实现服务的高可用性和负载均衡。在实际生产环境中,还需根据具体业务需求进行进一步的优化和调整。