本地虚拟机模拟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

相关文章

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa