本地虚拟机模拟LVS+Keepalived+Nginx集群 (含关闭NetworkManager, 克隆虚拟机用)

本文主要是介绍本地虚拟机模拟LVS+Keepalived+Nginx集群 (含关闭NetworkManager, 克隆虚拟机用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

Nginx是服务器集群的网关, 在生产中有流量分发的作用; 另外它属于应用层的负载均衡(第七层), 可以对请求和响应作额外的代理操作, 比如: gzip, 添加响应头以支持跨域, 防盗链配置

为保证Nginx的高可用, 需要搭建Nginx集群, LVS的负载均衡是基于链路层(第四层), 只分发请求而不进行代理, 所以LVS的吞吐量是高于Nginx的, 适合为Nginx集群作负载均衡

服务器与ip规划

  • LVS一台: VIP(虚拟ip, 生产中应是公网ip): 192.168.209.150;
    DIP(内网ip): 192.168.209.151
  • Nginx2台, RIP(真实ip, 因被LVS负载均衡, 所以生产中处于内网): 192.168.209.222和 192.168.209.223

上述3个计算机节点关闭网络配置管理器,因为有可能会和网络接口冲突

systemctl stop NetworkManager 
systemctl disable NetworkManager

LVS节点配置虚拟ip和负载均衡规则

配置虚拟ip

在LVS节点 (本案例为151节点)进入网卡配置目录 /etc/sysconfig/network-scripts
拷贝网卡, 创建子接口 cp ifcfg-ens33 ifcfg-ens33:1
修改子接口配置:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=cbebd981-2b3f-4271-812c-9b7d202ba714
DEVICE=ens33:1
ONBOOT=yes
IPADDR=192.168.209.150
GATEWAY=192.168.209.2
NETMASK=255.255.255.0
DNS1=114.114.114.114

注意改 DEVICEIPADDR即可

重启网络服务 service network restart, 再执行 ip addr, 查看虚拟ip是否添加成功
在这里插入图片描述在云端, 阿里云不支持虚拟IP,需要购买他的负载均衡服务
腾讯云支持虚拟IP,但是需要额外购买,一台节点最大支持10个虚拟ip

用ipvsadm配置负载均衡规则

安装ipvsadm: yum install ipvsadm

创建LVS节点,用户访问的集群调度者

ipvsadm -A -t 192.168.209.150:80 -s rr -p 5

各参数含义如下:
-A:添加集群
-t:tcp协议
ip地址:设定集群的访问ip,也就是LVS的虚拟ip
-s:设置负载均衡的算法,rr表示轮询
-p:设置连接持久化的时间

创建2台RS真实服务器

ipvsadm -a -t 192.168.209.150:80 -r 192.168.209.222:80 -g
ipvsadm -a -t 192.168.209.150:80 -r 192.168.209.223:80 -g

-a:添加真实服务器
-t:tcp协议
-r:真实服务器的ip地址
-g:设定DR模式

保存到规则库,否则重启失效

ipvsadm -S

查看集群列表:

ipvsadm -Ln

LVS持久化配置, 选做, 参考链接 LVS持久化配置

为两台Nginx配置虚拟ip和arp(响应级别和通告行为)

配置虚拟ip

在Nginx所在的真实服务器节点(以222为例), /etc/sysconfig/network-scripts
复制 lo网卡 cp ifcfg-lo ifcfg-lo:1, vim ifcfg-lo:1
修改为如下:

DEVICE=lo:1
IPADDR=192.168.209.150
NETMASK=255.255.255.255
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

arp配置

vim /etc/sysctl.conf

配置所有网卡、默认网卡以及虚拟网卡的arp响应级别和通告行为,分别对应:all,default,lo:

# configration for lvs
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

刷新配置文件 sysctl -p

增加一个网关,用于接收数据报文,当有请求到本机后,会交给lo去处理:

route add -host 192.168.209.150 dev lo:1

防止重启失效,做如下处理,用于开机自启动:

echo "route add -host 192.168.1.150 dev lo:1" >> /etc/rc.local

此时, 开启两台RS上的Nginx服务, 即可通过访问 LVS中配置的虚拟ip(150节点), 访问Nginx了

Keepalived +LVS 高可用

LVS单个节点宕机, 则所有Nginx都不可访问, 考虑Keepalived +LVS实现高可用

下面, 以151节点为例, 使用keepalived配置LVS主节点

安装Keepalived过程省略, 需要提示一点: 执行make编译前, 需要指定核心配置文件所在位置: --prefix=/usr/local/keepalived --sysconf=/etc

keepalived注册为系统服务:

keepalived 注册为系统服务:
- 切换到路径 /home/software/keepalived-2.0.18/keepalived/etc
- 将自启动脚本复制到系统文件夹 cp init.d/keepalived /etc/init.d/
cp sysconfig/keepalived /etc/sysconfig/
- systemctl daemon-reload, 重加载系统服务
- 将keepalived作为系统服务启动, systemctl start keepalived.service

在 /etc/keepalived/ 下, 修改keepalived主配置文件如下

! Configuration File for keepalivedglobal_defs {# 主机标识符,全局唯一router_id keep_151
}# 计算机节点实例
vrrp_instance VI_1 {# MASTER, nginx 主节点state MASTER# 网卡名interface ens33virtual_router_id 151priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.209.150}
}# 配置集群地址访问的IP+端口, 端口和Nginx保持一致, 都是80
virtual_server 192.168.209.150 80 {# 健康检查时间  delay_loop 6# 负载均衡算法, 默认轮询lb_algo rr# 设置LVS的模式 NAT|TUN|DRlb_kind DR# 设置会话持久化时间persistence_timeout 5protocol TCP# 负载均衡的RSreal_server 192.168.209.222 80 {weight 1# 设置健康检查TCP_CHECK {connect_port 80# 检查的超时时间connect_timeout 2# 重试次数nb_get_retry 3# 间隔时间delay_before_retry 3   }}  real_server 192.168.209.223 80 {weight 1# 设置健康检查TCP_CHECK {connect_port 80# 检查的超时时间connect_timeout 2# 重试次数nb_get_retry 3# 间隔时间delay_before_retry 3}}
}

由于负载均衡规则已经由 keepalived定义了, 那我们可以清除 LVS此前定义的负载均衡规则 ipvsadm -C

启动或重启 keepalived服务 systemctl start keepalivedsystemctl restart keepalived

执行 ipvsadm -Ln , 查看 LVS负载均衡规则是否设置成功
在这里插入图片描述
151节点的配置完成了,152节点类似配置。访问192.168.209.150即可访问nginx

最后,150节点在生产环境应当是公网ip, 其他节点都是内网ip

这篇关于本地虚拟机模拟LVS+Keepalived+Nginx集群 (含关闭NetworkManager, 克隆虚拟机用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/174880

相关文章

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

Nginx添加内置模块过程

《Nginx添加内置模块过程》文章指导如何检查并添加Nginx的with-http_gzip_static模块:确认该模块未默认安装后,需下载同版本源码重新编译,备份替换原有二进制文件,最后重启服务验... 目录1、查看Nginx已编辑的模块2、Nginx官网查看内置模块3、停止Nginx服务4、Nginx

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置