LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,是一个由章文嵩博士发起的自由软件项目,官方站点是:The Linux Virtual Server Project¹。LVS的目标是通过Linux操作系统和负载均衡技术,实现一个高性能,高可用,高可扩展的服务器集群系统²。
LVS的体系架构由三个部分组成:最前端的负载均衡层(Load Balancer),中间的服务器群组层(Server Array),最底层的数据共享存储层(Shared Storage)²。负载均衡层由一台或多台负载调度器(Director Server)组成,它们安装了LVS模块和监控模块,负责将用户的请求分发给后端的服务器(Real Server)。服务器群组层由一组提供应用服务的机器组成,它们可以是Web服务器,Mail服务器,FTP服务器等。数据共享存储层为所有的服务器提供共享的数据空间和内容一致性,它可以使用磁盘阵列或者集群文件系统等技术实现。
LVS有三种工作模式:NAT模式,DR模式和TUN模式²。NAT模式是通过修改数据包中的目标IP地址和端口来实现负载均衡,它要求后端服务器的网关指向负载调度器,请求和响应都要经过负载调度器转发。DR模式是通过修改数据包中的目标MAC地址来实现负载均衡,它要求后端服务器使用与负载调度器相同的虚拟IP地址(VIP),请求只经过负载调度器转发,响应直接返回给客户端。TUN模式是通过封装IP隧道来实现负载均衡,它适用于跨网络的集群系统,请求和响应都要经过负载调度器转发。
LVS有十种调度算法,用于选择合适的后端服务器来处理用户的请求²。这些算法有:轮询(RR),加权轮询(WRR),最少连接(LC),加权最少连接(WLC),局部性哈希(LH),目标地址哈希(DH),源地址哈希(SH),最短期望延迟(SED),最小连接数哈希(NQ),最近使用(LCU)等。
参考:
(1) 超详细!一文带你了解 LVS 负载均衡集群! - 掘金.
(2) 超详细LVS详解与配置【转载】 - 知乎 - 知乎专栏.
(3) 電路佈局驗證 - 維基百科,自由的百科全書.
(4) LVS负载均衡(LVS简介、三种工作模式、十种调度算法)_chenhuyang的博客-CSDN博客.
KEEPALIVED是一个用于提供高可用性的软件,它主要用于实现Linux服务器的故障转移和负载均衡¹。KEEPALIVED可以监控服务器的健康状况,如果检测到故障,它可以自动切换虚拟IP地址(VIP)到备用服务器上,从而保证服务的连续性²。KEEPALIVED还可以与LVS结合,实现更高效的负载均衡功能³。
KEEPALIVED的核心是VRRP协议,它是一种用于管理多台路由器的虚拟路由协议,可以实现路由器之间的动态备份¹。VRRP协议定义了一组路由器为一个VRRP组,其中一台为主路由器(Master),其他为备份路由器(Backup)。主路由器拥有一个虚拟IP地址(VIP),并负责转发数据包。备份路由器监听主路由器的心跳信号,如果检测不到心跳信号,就会通过选举产生一个新的主路由器,并接管VIP和数据转发¹。
KEEPALIVED的配置文件位于/etc/keepalived/keepalived.conf,它主要包含两个部分:全局定义(global_defs)和VRRP实例(vrrp_instance)²。全局定义部分用于设置一些全局参数,如路由器ID,邮件通知等。VRRP实例部分用于定义一个或多个VRRP组,包括组名,状态,优先级,接口,VIP等信息。例如:
global_defs {
router_id LVS_DEVEL
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server localhost
smtp_connect_timeout 30
}
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.0.100/24 dev eth0 label eth0:1
}
}
这个配置文件定义了一个名为VI_1的VRRP实例,它的状态是MASTER,使用eth0接口,虚拟路由ID是51,优先级是100,广播间隔是1秒,认证方式是密码1111,虚拟IP地址是192.168.0.100/24。
参考:
(1) Keepalived User Guide — Keepalived 1.4.3 documentation.
(2) Setting up a Linux cluster with Keepalived: Basic configuration.
(3) Keepalived 原理与实战 - 知乎.
(4) Keepalived and high availability: Advanced topics - Enable Sysadmin.
NGINX是一个开源的软件,它可以作为Web服务器,反向代理服务器,缓存服务器,负载均衡器,媒体流服务器等多种功能¹。它最初由Igor Sysoev编写,目的是解决C10K问题,即如何让Web服务器能够同时处理数万个并发连接²。NGINX采用了事件驱动,异步的架构,提高了性能和稳定性,成为了最快的Web服务器之一²。
NGINX作为Web服务器,可以提供静态和动态的内容,支持HTTP/2, WebSocket, gRPC等协议,支持FLV和MP4等多种视频格式的流媒体服务¹。NGINX还可以通过过滤器实现压缩,字节范围,分块响应,XSLT, SSI, 图像转换等功能¹。
NGINX作为反向代理服务器,可以将用户的请求转发给后端的服务器(如FastCGI, uwsgi, SCGI, memcached等),并对其进行缓存,负载均衡和容错¹。NGINX还可以作为邮件代理服务器,支持IMAP, POP3, SMTP等协议,并提供认证和连接重定向的功能¹。
NGINX作为负载均衡器,可以实现HTTP, TCP, UDP等协议的负载均衡,并提供多种调度算法,如轮询(RR),加权轮询(WRR),最少连接(LC),加权最少连接(WLC),哈希(DH, SH)等¹。NGINX还可以实现响应速率限制,连接数限制,访问控制等功能¹。
NGINX还有一个商业版的产品NGINX Plus,它在NGINX的基础上提供了一些额外的功能,如动态配置API,健康检查,会话持久化,活动监控等²。NGINX Plus还提供了专业的技术支持和服务²。
参考:
(1) nginx.
(2) What Is NGINX? - NGINX.
(3) Advanced Load Balancer, Web Server, & Reverse Proxy - NGINX.
LVS、NGINX、KEEPALIVED三者都是用于实现高可用和负载均衡的软件,但它们有以下几个主要的区别:
要采用LVS+NGINX+KEEPALIVED实现整体服务的负载均衡与高可用,你可以参考以下步骤¹²:
参考:
(1) keepalived+LVS+nginx搭建高可用负载均衡(二) - 知乎.
(2) Nginx双机主备(KeepAlived实现) - 知乎 - 知乎专栏.
(3) Nginx 集群负载(基于LVS和Keepalived)搭建 - W3Schools.
(4) 【全程干货-超详细步骤】LVS+Keepalived搭建双机热备高可用负载均衡(实战-可上生产环境) - 知乎.