lvs+keepalived+nginx实现四层负载+七层负载

目录

一、lvs配置

二、nginx配置

三、测试

3.1 keepalived负载均衡

3.2 lvs+keepalived高可用

 3.3 nginx高可用


主机IP
lvs01-33

11.0.1.33

lvs02-3411.0.1.34
nginx0111.0.1.31
nginx0211.0.1.32
VIP11.0.1.30

4台主机主机添加host 

[root@nginx01 sbin]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
11.0.1.31 nginx01
11.0.1.32 nginx02
11.0.1.33 lvs01-33
11.0.1.34 lvs02-34

一、lvs配置

以下两台lvs都要配置,除了配置文件不一样以外

lvs一定要搭配keepalived使用,配置上更简单,并且能实现主备高可用

yum install -y ipvsadm keepalived

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
vi /etc/keepalived/keepalived.conf

主机master

lb_algo字段表示负载调度算法,采用权重算法,nginx01权重为5,nginx02权重为3

需要更改的字段router_id、ens33、priority 100、VIP+端口、真实IP+端口

global_defs {  
    router_id lvs01-33  # 设置lvs的id,在一个网络内应该是唯一的,一般用主机名
}  
vrrp_instance VI_1 {  
    state MASTER   #指定Keepalived的角色,MASTER为主,BACKUP为备          
    interface ens33  #指定Keepalived的角色,MASTER为主,BACKUP为备
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR    
    advert_int 1  #检查间隔,默认为1s
    authentication {  
        auth_type PASS  
        auth_pass 1111  
    }  
    virtual_ipaddress {  
        11.0.1.30  #定义虚拟IP(VIP)为11.0.1.30,可多设,每行一个
    }  
}  
# 定义对外提供服务的LVS的VIP以及port
virtual_server 11.0.1.30 80 {  
    delay_loop 6 # 设置健康检查时间,单位是秒                    
    lb_algo wlc # 设置负载调度的算法为wlc 基于权重的调度算法                  
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式   
    nat_mask 255.255.255.0                
   #persistence_timeout 0 会话保持时间    
    protocol TCP                  
    real_server 11.0.1.31 80 {  # 指定real server1的IP地址
        weight 5   # 配置节点权值,数字越大权重越高              
        TCP_CHECK {  
        connect_timeout 10         
        nb_get_retry 3  
        delay_before_retry 3  
        connect_port 80  
        }  
    }  
    real_server 11.0.1.32 80 {  # 指定real server2的IP地址
        weight 3  # 配置节点权值,数字越大权重越高  
        TCP_CHECK {  
        connect_timeout 10  
        nb_get_retry 3  
        delay_before_retry 3  
        connect_port 80  
        }  
     }  
}

备机backup

global_defs {  
    router_id lvs01-34  # 设置lvs的id,在一个网络内应该是唯一的
}  
vrrp_instance VI_1 {  
    state BACKUP   #指定Keepalived的角色,MASTER为主,BACKUP为备          
    interface ens33  #指定Keepalived的角色,MASTER为主,BACKUP为备
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 90  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR    
    advert_int 1  #检查间隔,默认为1s
    authentication {  
        auth_type PASS  
        auth_pass 1111  
    }  
    virtual_ipaddress {  
        11.0.1.30  #定义虚拟IP(VIP)为11.0.1.30,可多设,每行一个
    }  
}  
# 定义对外提供服务的LVS的VIP以及port
virtual_server 11.0.1.30 80 {  
    delay_loop 6 # 设置健康检查时间,单位是秒                    
    lb_algo wlc # 设置负载调度的算法为wlc 基于权重的调度算法                  
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式   
    nat_mask 255.255.255.0                
   #persistence_timeout 0 会话保持时间    
    protocol TCP                  
    real_server 11.0.1.31 80 {  # 指定real server1的IP地址
        weight 5   # 配置节点权值,数字越大权重越高              
        TCP_CHECK {  
        connect_timeout 10         
        nb_get_retry 3  
        delay_before_retry 3  
        connect_port 80  
        }  
    }  
    real_server 11.0.1.32 80 {  # 指定real server2的IP地址
        weight 3  # 配置节点权值,数字越大权重越高  
        TCP_CHECK {  
        connect_timeout 10  
        nb_get_retry 3  
        delay_before_retry 3  
        connect_port 80  
        }  
     }  
}

二、nginx配置

安装nginx,并更改html页面内容为当前IP

nginx安装:Nginx、keepalived安装详细步骤_keepalive 安装-CSDN博客

两台nginx都要配置

以下命令是临时的,重启后失效,命令内容:在lo网卡上虚拟出一个lo:0接口,添加路由,抑制两台nginx主机的ARP响应。注意掩码是32,目前没找到永久配置的方法,只能以自定义服务设置为开机自启动。

ifconfig lo:0 11.0.1.30 netmask 255.255.255.255 broadcast 11.0.1.30 

route add -host 11.0.1.30 dev lo:0

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

检测虚拟网卡接口lo:0,且IP为VIP

[root@nginx01 init.d]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 11.0.1.31  netmask 255.255.255.0  broadcast 11.0.1.255
        inet6 fe80::4ae3:fc87:6344:7062  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:60:05:0e  txqueuelen 1000  (Ethernet)
        RX packets 35532  bytes 2276489 (2.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22319  bytes 1530060 (1.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 11.0.1.30  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)

查看路由 netstat -r 

三、测试

nginx01、nginx02访问正常

3.1 keepalived负载均衡

两台lvs开启keepalived,访问VIP,访问正常,由于我设定nginx01的权重高于nginx02,所以是nginx01返回页面,系统工具优先级选出最佳节点

[root@lvs01-33 ~]# systemctl start keepalived
[root@lvs01-34 ~]# systemctl start keepalived

如果你想知道当前是哪个lvs在工作,只需要通过查看VIP当前在哪台lvs即可

3.2 lvs+keepalived高可用

将lvs01的keepalived进程关闭

[root@lvs01-33 ~]# systemctl stop keepalived

VIP访问仍然正常,说明lvs工作正常

 

 3.3 nginx高可用

将nginx01的nginx进程杀死 

[root@nginx01 sbin]# ./nginx -s stop

再次访问

 

 将nginx01的nginx进程重启,那么nginx01重新接管

参考文档:

https://www.cnblogs.com/tangyanbo/p/4305589.html

https://www.cnblogs.com/xiaocheche/p/7689432.html

lvs详细文档:(原理、模式(NAT、TUN、DR)、调度算法)

LVS负载均衡(LVS简介、三种工作模式、十种调度算法)-CSDN博客

https://www.cnblogs.com/anay/p/9260306.html#_label7

DR模式详细:

LVS | LVS 的三种工作方式(DR原理)(二)_lvs dr 为什么局域网-CSDN博客

ipvsadm常用命令: 

ipvsadm命令 – 管理Linux虚拟服务器 – Linux命令大全(手册)

arp冲突解释:

【arp冲突】linux抑制arp通告-CSDN博客

  • 23
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: b'lvs+keepalived+nginx' 是一种常用的负载均衡解决方案,其中 lvs( Linux Virtual Server) 作为负载均衡器,keepalived 作为高可用方案,nginx 作为 Web 服务器。它们结合起来可以实现高效、高可靠的负载均衡。 ### 回答2: LVS是Linux Virtual Server的缩写,它是一个开源的,基于Linux内核实现的高可用和可伸缩网络服务器集群系统。LVS在网络服务器中用于将大量的网络流量分配到多个后端服务器上,从而提高服务器的负载均衡和可伸缩性。LVS主要包括四个模块:IPVS,IPVSADM,KEEPALIVED和WEBUI。其中IPVS是实现流量分配的核心部分,IPVSADM可以监控和管理IPVS的规则,KEEPALIVED可用于实现高可用性,WEBUI可用于通过Web界面管理LVS集群。 KEEPALIVED是一款基于VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)的高可用性解决方案。当主服务器发生故障时,KEEPALIVED会自动将VIP(Virtual IP,虚拟IP)转移到备份服务器上,从而保证服务的不中断。KEEPALIVED可以与LVS集成使用,实现高可用的LVS集群。 Nginx是一款开源的高性能Web服务器和反向代理服务器。Nginx是一款非常流行的Web服务器,它可以提供高性能的Web服务,并支持负载均衡、反向代理、动态Web内容缓存等高级功能。在LVS集群中,Nginx通常被用作后端Web服务器,能够在LVS集群中进行负载均衡和高可用性配置,从而提高Web应用的可靠性和可伸缩性。 总的来说,LVSKEEPALIVEDNginx是三个非常实用的工具,它们可以在大型Web应用中实现高可用的负载均衡、高性能的Web服务器和反向代理服务器。这些工具能够提供更高的可靠性和可扩展性,从而满足企业在高流量和高负载的环境下的应用需求。 ### 回答3: LVS是Linux Virtual Server的缩写,是国产的高性能、高可用性的服务器集群技术。LVS可以分为四个子系统:IP负载均衡,服务调度,数据转发和应用服务器池。其中IP负载均衡是LVS的核心,通过对外提供虚拟IP地址和端口,将客户端的请求分发到不同的后端服务器上,实现负载均衡的目的。 Keepalived是一种高可用性的解决方案,它可以提供基于虚拟路由器热备的高可用性,并支持在主备节点间自动切换。Keepalived主要由两个组件组成:Keepalived daemon和VRRP脚本。Keepalived daemon通过VRRP协议实现主备节点的选举,VRRP脚本则用于检测服务器服务的可达性,并在必要时进行主备切换。 Nginx是一款高性能、轻量级的Web服务器和反向代理服务器,它在处理高并发连接和静态文件时表现出色,也可以作为负载均衡器使用。Nginx支持通过upstream模块将请求转发到后端服务器,实现负载均衡的功能。 综合考虑,LVSKeepalived可以协同工作实现高性能、高可用性的服务器集群。LVS将客户端请求分发到不同的应用服务器上,保证各个服务器的负载均衡;同时,Keepalived可以实现主备节点的选举和自动切换,保证服务的高可用性。Nginx作为反向代理服务器,可以挂载在LVS后面,接收LVS分发的请求,并将这些请求转发到后端服务器上,实现负载均衡的功能。通过这种方式,可以实现高性能、高可用性、可扩展性强、成本低的服务器集群。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值