Keepalived + lvs 高可用负载均衡(实验)

本文介绍如何使用Keepalived与LVS实现负载均衡的高可用性,包括环境搭建、配置步骤及测试方法。重点讲解了Keepalived的工作原理、配置文件详解以及与LVS的配合使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

应用keepalived实现负载均衡高可用。在LVS+Keepalived环境里面,lvs主要的工作是提供调度算法,把客户端请求按照需求调度real服务器,keepalived主要的工作是提供lvs控制器的一个冗余,并且对real服务器做健康检查,发现不健康的real服务器,就把它从lvs集群中剔除,real服务器只负责提供服务。

二、基本环境

            

关闭所有机器防火墙,Selinux,所有Ip属于同一网段;

客户端角色机器配置  elinks  或者  curl  即可;

DR服务器安装  keepalived,  ipvsadm ,添加第二个网卡;

Realserver服务器安装Nginx 。

三、配置

RS服务器:

1.安装启动nginx(略)

2.添加虚拟IP(192.168.122.254)

# ip a a dev lo 192.168.122.254/32 

3.设置内核参数

# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

4.为使负载均衡实验效果明显,添加可区分页面信息

DR服务器:

1.安装keepalived,ipvsadm

# yum -y install keepalived  ipvsadm     

2.查看两台DR路由条目,目标效果是对应两张网卡名称相同且顺序一样。

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.122.1   0.0.0.0         UG    100    0        0 ens3
0.0.0.0         192.168.122.1   0.0.0.0         UG    101    0        0 ens8
192.168.122.0   0.0.0.0         255.255.255.0   U     100    0        0 ens3
192.168.122.0   0.0.0.0         255.255.255.0   U     101    0        0 ens8



可以使用如下命令修改路由条目(虚拟机实验中重新添加网卡也可以):
# route  del -net 192.168.122.17/24 dev ens3
# route  add -net 192.168.122.17/24 dev ens3

3.修改keepalived配置文件

# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {						
	notification_email {
		root@localhost
		}
	notification_email_from keepalived@localhost
	smtp_server 127.0.0.1
	smtp_connect_timeout 30
	router_id Director1             //两边是一样的
	} 
	
vrrp_instance VI_1 {				
	state MASTER			        //另外一台机器是BACKUP	
	interface ens3			        //心跳网卡,即路由条目上方网卡	
	virtual_router_id 51			
	priority 150				    //优先级,优先级数额单位差为50,BACK优先级设置100
	advert_int 1				    //检查间隔,单位秒	
	authentication {
		auth_type PASS
		auth_pass 1111
		}
	virtual_ipaddress {
		192.168.122.254/24 dev ens8     //ens8 为路由条目下方网卡
		}
	}
	
virtual_server 192.168.122.254 80 {		          //LVS 配置,VIP
	delay_loop 3                                  //服务论询的时间间隔
	lb_algo rr							   //LVS 调度算法(轮询)
	lb_kind DR							   //LVS 集群模式
	protocol TCP
	real_server 192.168.122.119 80 {              //Rs网站服务器ip
		weight 1
		TCP_CHECK {
			connect_timeout 3
			}
		}
	real_server 192.168.122.175 80 {
		weight 1
		TCP_CHECK {
			connect_timeout 3
			}
		}
}

4.启动keepalived,查看LVS路由条目

# systemctl  start keepalived
# ipvsadm   -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.122.254:80 rr
  -> 192.168.122.119:80           Route   1      0          0         
  -> 192.168.122.175:80           Route   1      0          0 

测试

查看到vip在MASTER服务器上,通过vip进行访问测试结果后关闭keepalived服务,此时vip浮动到BACKUP服务器上,再次进行访问测试 。

# ip a
3: ens8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:cc:c1:c4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.92/24 brd 192.168.122.255 scope global dynamic ens8
       valid_lft 2713sec preferred_lft 2713sec
    inet 192.168.122.254/24 scope global secondary ens8
       valid_lft forever preferred_lft forever
    inet6 fe80::7c89:ff52:2594:d034/64 scope link 
       valid_lft forever preferred_lft forever

客户端测试
# curl 192.168.122.254
或者
# elinks --dump http:192.168.122.254

三、理论补充

1.问题:再次启动master服务器keepalived服务,vip浮动到master服务器。

vrrp_instance VI_1 {
        state BACKUP
        interface ens3
        virtual_router_id 51
        priority 150
        nopreempt                    //再次重启优先级较高服务器keepalived服务后,vip没有浮动
        advert_int 1
        authentication {
                auth_type PASS
                auth_pass 1111
                }
        virtual_ipaddress {
                192.168.122.254/24 dev ens8
                }
        }

2.keepalived

keepalived是集群管理中保证集群高可用(VRRP协议实现高可用)的一个服务软件,其功能类似于heartbeat,用来防止单点故障。管理LVS负载均衡软件;实现LVS集群节点的健康检查;作为系统网络服务的高可用性(failover)。

3.VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

4.Keepalived模块

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

5.Vip注意事项:

DR服务器上新添加的网卡必须是启动状态(有无IP都可以),VIP地址不可以与此网卡地址相同。

 

<think>好的,我现在需要帮助用户配置LVSKeepalived和DNS结合的高可用负载均衡方案。首先,我得理清楚每个组件的作用以及它们如何协同工作。 用户提到的LVS是Linux Virtual Server,用于负载均衡,将流量分发到多个后端服务器。Keepalived则负责高可用性,通过VRRP协议监控主备节点,一旦主节点故障,VIP会漂移到备节点。DNS的作用应该是将域名解析到VIP,这样用户通过域名访问时,请求会被导向LVS集群。 接下来,我需要参考用户提供的引用内容。引用[1]和[2]提到LVSKeepalived的结合使用,确保负载均衡服务的高可用。引用[3]和[5]涉及DNS与LVS+Keepalived的架构,说明如何配置DNS来支持这个方案。引用[4]展示了VIP漂移的实例,验证了高可用的有效性。 首先,配置LVS。用户需要安装ipvsadm工具,设置虚拟服务器并添加后端Real Server。这里要注意LVS的工作模式,比如NAT、DR或TUN。DR模式比较常用,因为效率高,但需要配置Real Server的VIP在回环接口上,并关闭ARP响应。 然后是Keepalived的配置。主备节点都需要安装Keepalived,配置文件里定义VRRP实例,设置优先级,并关联虚拟IP。同时,配置LVS的规则,这样Keepalived可以管理LVS的转发规则。需要确保主节点的priority高于备节点,这样正常情况下VIP在主节点上。 DNS配置部分,用户需要将域名解析指向VIP,这样所有请求通过DNS到达LVS集群。可能需要设置DNS记录的TTL较短,以便在故障转移时快速更新。引用[3]提到了bind架构,可能是指使用BIND DNS服务器,将A记录指向VIP。 测试环节很重要,需要检查VIP是否正常漂移,以及DNS解析是否正确。可以通过关闭主节点的Keepalived服务,查看备节点是否接管VIP,并确认客户端访问是否无缝切换。 可能遇到的问题包括ARP问题、Real Server的配置错误,或者防火墙规则阻止了VRRP通信。需要确保VRRP协议使用的多播地址(通常是224.0.0.18)在防火墙中是放行的。 最后,用户可能需要优化配置,比如健康检查的频率、负载均衡算法(如轮询rr、加权等),以及日志监控,确保整个系统的稳定运行。</think>### LVS+Keepalived+DNS高可用负载均衡方案配置步骤 #### 一、架构设计 1. **LVS集群**:主备双节点实现负载均衡,通过`ipvsadm`管理流量分发 2. **Keepalived**:管理VIP漂移,监控节点状态,主备切换时自动更新LVS配置[^2] 3. **DNS轮询**:将多个VIP绑定到同一域名,实现DNS级负载均衡[^3] 4. **Web服务器集群**:后端真实服务器池(Real Server) #### 二、基础配置流程 **1. LVS配置(双节点相同)** ```bash # 安装ipvsadm yum install ipvsadm -y # 配置虚拟服务(示例配置) ipvsadm -A -t $VIP:80 -s rr # 创建TCP虚拟服务,使用轮询算法 ipvsadm -a -t $VIP:80 -r $RS1:80 -g # 添加真实服务器,DR模式 ipvsadm -a -t $VIP:80 -r $RS2:80 -g ``` **2. Keepalived配置(主节点)** ```bash # /etc/keepalived/keepalived.conf vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 # 备节点设置为90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.20/24 # VIP配置 } } virtual_server 10.0.0.20 80 { # LVS配置段 delay_loop 6 lb_algo rr lb_kind DR protocol TCP real_server 192.168.0.80 80 { TCP_CHECK { connect_timeout 3 } } real_server 192.168.0.50 80 { TCP_CHECK { connect_timeout 3 } } } ``` **3. DNS配置(Bind示例)** ```bash # 域名解析配置(轮询多个VIP) webcluster IN A 10.0.0.20 webcluster IN A 10.0.0.10 # 第二个VIP地址[^4] ``` #### 三、关键配置要点 1. **DR模式要求**: - Real Server需配置VIP在lo接口 ```bash ifconfig lo:0 $VIP netmask 255.255.255.255 ``` - 关闭ARP响应 ```bash echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce ``` 2. **高可用验证**: - 手动停止主节点Keepalived服务 ```bash systemctl stop keepalived ``` - 检查备节点是否接管VIP ```bash ip addr show eth0 # 应显示VIP地址 ``` 3. **健康检查优化**: ```bash real_server 192.168.0.80 80 { HTTP_GET { # 使用HTTP健康检查 url { path /healthcheck status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 1 } } ``` #### 四、架构优势 1. **多层高可用**:DNS轮询+LVS集群+Web集群三级容错 2. **自动故障转移**:VIP漂移时间<3秒[^2] 3. **扩展性强**:通过添加Real Server即可扩容 4. **流量可视化**:可通过`ipvsadm -Ln --stats`查看实时流量[^5]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值