如何利用LVS和Keepalived技术实现高效稳定的负载均衡配置?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2368个文字,预计阅读时间需要10分钟。
使用LVS和Keepalived实现负载均衡:基础手把手指南
在当今互联网时代,大量网络系统都采用了服务器集群技术。集群将相同的服务部署在多台服务器上,以实现负载均衡,提高系统的稳定性和可用性。本文将简要介绍如何使用LVS和Keepalived实现负载均衡。
1. LVS和Keepalived简介
LVS(Linux Virtual Server)是一款开源的虚拟服务器软件,它可以将请求分发到后端服务器上,从而实现负载均衡。Keepalived则是一款高可用性软件,可以监控LVS集群的状态,并在后端服务器出现故障时自动进行故障转移。
2. 安装LVS和Keepalived
以CentOS系统为例,使用以下命令安装LVS和Keepalived:
yum install ipvsadm keepalived
3. 配置LVS
首先,配置LVS的虚拟服务器(Virtual Server),编辑`/etc/ipvsadm.conf`文件,添加以下内容:
-V 192.168.1.1:80 192.168.1.2:80
这里,`192.168.1.1`是虚拟服务器的IP地址,`80`是端口号,`192.168.1.2`是后端服务器的IP地址。
4. 配置Keepalived
编辑`/etc/keepalived/keepalived.conf`文件,添加以下内容:
! Configuration File for keepalived
global_defs { notification_email { root@localhost } notification_email_subject Keepalived Alert}
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.1 }}
virtual_server 192.168.1.1 80 192.168.1.2 80
这里,`192.168.1.1`是虚拟服务器的IP地址,`80`是端口号,`192.168.1.2`是后端服务器的IP地址。
5. 启动和测试
启动Keepalived和LVS服务:
systemctl start keepalivedsystemctl start ipvsadm
使用`ipvsadm -L`命令查看LVS的规则,确认虚拟服务器已配置成功。
至此,使用LVS和Keepalived实现负载均衡的基础配置已完成。
借助LVSKeepalived实现负载均衡一、负载均衡:必不可少的基础手段1.1找更多的牛来拉车吧当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一借助LVS+Keepalived实现负载均衡一、负载均衡:必不可少的基础手段1.1 找更多的牛来拉车吧
1.1 找更多的牛来拉车吧
当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等。
古人有云:当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车。
在实际应用中,在Web服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一台Web服务器,将客户端的请求转发给它处理,实现客户端到真实服务端的透明转发。最近几年很火的「云计算」以及分布式架构,本质上也是将后端服务器作为计算资源、存储资源,由某台管理服务器封装成一个服务对外提供,客户端不需要关心真正提供服务的是哪台机器,在它看来,就好像它面对的是一台拥有近乎无限能力的服务器,而本质上,真正提供服务的,是后端的集群。
1.2 负载均衡的类型
负载均衡可以采用硬件设备(例如常常听见的F5),也可以采用软件负载。
商用硬件负载设备成本通常较高(一台几十万上百万很正常),所以在条件允许的情况下我们会采用软件负载;
软件负载解决的两个核心问题是:选谁、转发,其中最著名的是LVS(Linux Virtual Server)。
传送门->关于负载均衡的实现方式类型等介绍请浏览我的另一篇博文:《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构
二、初识LVS:Linux Virtual Server2.1 LVS是神马东西
LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
2.2 LVS有神马作用
LVS主要用于服务器集群的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术。它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。它易用,配置非常简单,且有多种负载均衡的方法。它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。另外可扩展性也非常好。
LVS自从1998年开始,发展到现在已经是一个比较成熟的技术项目了。可以利用LVS技术实现高可伸缩的、高可用的网络服务,例如WWW服务、Cache服务、DNS服务、FTP服务、MAIL服务、视频/音频点播服务等等,有许多比较著名网站和组织都在使用LVS架设的集群系统,例如:Linux的门户网站(www.linux.com)、向RealPlayer提供音频视频服务而闻名的Real公司(www.real.com)、全球最大的开源网站(sourceforge.net)等。
2.3 LVS的体系结构
使用LVS架设的服务器集群系统有三个部分组成:
(1)最前端的负载均衡层,用Load Balancer表示;
(2)中间的服务器集群层,用Server Array表示;
(3)最底端的数据共享存储层,用Shared Storage表示;
在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。
传送门->关于体系结构的详细介绍,请浏览南飞蚂蚁的blog:ixdba.blog.51cto.com/2895551/552947
2.4 LVS负载均衡机制
(1)LVS是四层负载均衡,也就是说建立在OSI模型的第四层——传输层之上,传输层上有我们熟悉的TCP/UDP,LVS支持TCP/UDP的负载均衡。因为LVS是四层负载均衡,因此它相对于其它高层负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。
(2)LVS的转发主要通过修改IP地址(NAT模式,分为源地址修改SNAT和目标地址修改DNAT)、修改目标MAC(DR模式)来实现。
①NAT模式:网络地址转换
NAT(Network Address Translation)是一种外网和内网地址映射的技术。NAT模式下,网络数据报的进出都要经过LVS的处理。LVS需要作为RS(真实服务器)的网关。当包到达LVS时,LVS做目标地址转换(DNAT),将目标IP改为RS的IP。RS接收到包以后,仿佛是客户端直接发给它的一样。RS处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP。这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,这样,这个包对客户端看起来就仿佛是LVS直接返回给它的。客户端无法感知到后端RS的存在。
②DR模式:直接路由
DR模式下需要LVS和RS集群绑定同一个VIP(RS通过将VIP绑定在loopback实现),但与NAT的不同点在于:请求由LVS接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过LVS。详细来看,一个请求过来时,LVS只需要将网络帧的MAC地址修改为某一台RS的MAC,该包就会被转发到相应的RS处理,注意此时的源IP和目标IP都没变,LVS只是做了一下移花接木。RS收到LVS转发来的包时,链路层发现MAC是自己的,到上面的网络层,发现IP也是自己的,于是这个包被合法地接受,RS感知不到前面有LVS的存在。而当RS返回响应时,只要直接向源IP(即用户的IP)返回即可,不再经过LVS。
(3)DR负载均衡模式数据分发过程中不修改IP地址,只修改mac地址,由于实际处理请求的真实物理IP地址和数据请求目的IP地址一致,所以不需要通过负载均衡服务器进行地址转换,可将响应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽成为瓶颈。因此,DR模式具有较好的性能,也是目前大型网站使用最广泛的一种负载均衡手段。
三、构建实战:LVS+Keepalived实现负载均衡3.1 实验结构总览
(1)本次基于VMware Workstation搭建一个四台Linux(CentOS 6.4)系统所构成的一个服务器集群,其中两台负载均衡服务器(一台为主机,另一台为备机),另外两台作为真实的Web服务器(向外部提供www.importnew.com/11229.html
(2)win_xp,《LVS简介及使用》:www.cnblogs.com/codebean/archive/2011/07/25/2116043.html
(3)jiwang1980,《LVS+Keepalived》:7567567.blog.51cto.com/706378/578289
(4)南飞蚂蚁的BLOG,《Linux负载均衡软件LVS之概念篇》:ixdba.blog.51cto.com/2895551/552947
(5)AKing王国,《四层和七层负载均衡的区别》:kb.cnblogs.com/page/188170/
本文共计2368个文字,预计阅读时间需要10分钟。
使用LVS和Keepalived实现负载均衡:基础手把手指南
在当今互联网时代,大量网络系统都采用了服务器集群技术。集群将相同的服务部署在多台服务器上,以实现负载均衡,提高系统的稳定性和可用性。本文将简要介绍如何使用LVS和Keepalived实现负载均衡。
1. LVS和Keepalived简介
LVS(Linux Virtual Server)是一款开源的虚拟服务器软件,它可以将请求分发到后端服务器上,从而实现负载均衡。Keepalived则是一款高可用性软件,可以监控LVS集群的状态,并在后端服务器出现故障时自动进行故障转移。
2. 安装LVS和Keepalived
以CentOS系统为例,使用以下命令安装LVS和Keepalived:
yum install ipvsadm keepalived
3. 配置LVS
首先,配置LVS的虚拟服务器(Virtual Server),编辑`/etc/ipvsadm.conf`文件,添加以下内容:
-V 192.168.1.1:80 192.168.1.2:80
这里,`192.168.1.1`是虚拟服务器的IP地址,`80`是端口号,`192.168.1.2`是后端服务器的IP地址。
4. 配置Keepalived
编辑`/etc/keepalived/keepalived.conf`文件,添加以下内容:
! Configuration File for keepalived
global_defs { notification_email { root@localhost } notification_email_subject Keepalived Alert}
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.1 }}
virtual_server 192.168.1.1 80 192.168.1.2 80
这里,`192.168.1.1`是虚拟服务器的IP地址,`80`是端口号,`192.168.1.2`是后端服务器的IP地址。
5. 启动和测试
启动Keepalived和LVS服务:
systemctl start keepalivedsystemctl start ipvsadm
使用`ipvsadm -L`命令查看LVS的规则,确认虚拟服务器已配置成功。
至此,使用LVS和Keepalived实现负载均衡的基础配置已完成。
借助LVSKeepalived实现负载均衡一、负载均衡:必不可少的基础手段1.1找更多的牛来拉车吧当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一借助LVS+Keepalived实现负载均衡一、负载均衡:必不可少的基础手段1.1 找更多的牛来拉车吧
1.1 找更多的牛来拉车吧
当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等。
古人有云:当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车。
在实际应用中,在Web服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一台Web服务器,将客户端的请求转发给它处理,实现客户端到真实服务端的透明转发。最近几年很火的「云计算」以及分布式架构,本质上也是将后端服务器作为计算资源、存储资源,由某台管理服务器封装成一个服务对外提供,客户端不需要关心真正提供服务的是哪台机器,在它看来,就好像它面对的是一台拥有近乎无限能力的服务器,而本质上,真正提供服务的,是后端的集群。
1.2 负载均衡的类型
负载均衡可以采用硬件设备(例如常常听见的F5),也可以采用软件负载。
商用硬件负载设备成本通常较高(一台几十万上百万很正常),所以在条件允许的情况下我们会采用软件负载;
软件负载解决的两个核心问题是:选谁、转发,其中最著名的是LVS(Linux Virtual Server)。
传送门->关于负载均衡的实现方式类型等介绍请浏览我的另一篇博文:《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构
二、初识LVS:Linux Virtual Server2.1 LVS是神马东西
LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
2.2 LVS有神马作用
LVS主要用于服务器集群的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术。它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。它易用,配置非常简单,且有多种负载均衡的方法。它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。另外可扩展性也非常好。
LVS自从1998年开始,发展到现在已经是一个比较成熟的技术项目了。可以利用LVS技术实现高可伸缩的、高可用的网络服务,例如WWW服务、Cache服务、DNS服务、FTP服务、MAIL服务、视频/音频点播服务等等,有许多比较著名网站和组织都在使用LVS架设的集群系统,例如:Linux的门户网站(www.linux.com)、向RealPlayer提供音频视频服务而闻名的Real公司(www.real.com)、全球最大的开源网站(sourceforge.net)等。
2.3 LVS的体系结构
使用LVS架设的服务器集群系统有三个部分组成:
(1)最前端的负载均衡层,用Load Balancer表示;
(2)中间的服务器集群层,用Server Array表示;
(3)最底端的数据共享存储层,用Shared Storage表示;
在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。
传送门->关于体系结构的详细介绍,请浏览南飞蚂蚁的blog:ixdba.blog.51cto.com/2895551/552947
2.4 LVS负载均衡机制
(1)LVS是四层负载均衡,也就是说建立在OSI模型的第四层——传输层之上,传输层上有我们熟悉的TCP/UDP,LVS支持TCP/UDP的负载均衡。因为LVS是四层负载均衡,因此它相对于其它高层负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。
(2)LVS的转发主要通过修改IP地址(NAT模式,分为源地址修改SNAT和目标地址修改DNAT)、修改目标MAC(DR模式)来实现。
①NAT模式:网络地址转换
NAT(Network Address Translation)是一种外网和内网地址映射的技术。NAT模式下,网络数据报的进出都要经过LVS的处理。LVS需要作为RS(真实服务器)的网关。当包到达LVS时,LVS做目标地址转换(DNAT),将目标IP改为RS的IP。RS接收到包以后,仿佛是客户端直接发给它的一样。RS处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP。这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,这样,这个包对客户端看起来就仿佛是LVS直接返回给它的。客户端无法感知到后端RS的存在。
②DR模式:直接路由
DR模式下需要LVS和RS集群绑定同一个VIP(RS通过将VIP绑定在loopback实现),但与NAT的不同点在于:请求由LVS接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过LVS。详细来看,一个请求过来时,LVS只需要将网络帧的MAC地址修改为某一台RS的MAC,该包就会被转发到相应的RS处理,注意此时的源IP和目标IP都没变,LVS只是做了一下移花接木。RS收到LVS转发来的包时,链路层发现MAC是自己的,到上面的网络层,发现IP也是自己的,于是这个包被合法地接受,RS感知不到前面有LVS的存在。而当RS返回响应时,只要直接向源IP(即用户的IP)返回即可,不再经过LVS。
(3)DR负载均衡模式数据分发过程中不修改IP地址,只修改mac地址,由于实际处理请求的真实物理IP地址和数据请求目的IP地址一致,所以不需要通过负载均衡服务器进行地址转换,可将响应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽成为瓶颈。因此,DR模式具有较好的性能,也是目前大型网站使用最广泛的一种负载均衡手段。
三、构建实战:LVS+Keepalived实现负载均衡3.1 实验结构总览
(1)本次基于VMware Workstation搭建一个四台Linux(CentOS 6.4)系统所构成的一个服务器集群,其中两台负载均衡服务器(一台为主机,另一台为备机),另外两台作为真实的Web服务器(向外部提供www.importnew.com/11229.html
(2)win_xp,《LVS简介及使用》:www.cnblogs.com/codebean/archive/2011/07/25/2116043.html
(3)jiwang1980,《LVS+Keepalived》:7567567.blog.51cto.com/706378/578289
(4)南飞蚂蚁的BLOG,《Linux负载均衡软件LVS之概念篇》:ixdba.blog.51cto.com/2895551/552947
(5)AKing王国,《四层和七层负载均衡的区别》:kb.cnblogs.com/page/188170/

