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

相关文章

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Ubuntu 22.04 服务器安装部署(nginx+postgresql)

《Ubuntu22.04服务器安装部署(nginx+postgresql)》Ubuntu22.04LTS是迄今为止最好的Ubuntu版本之一,很多linux的应用服务器都是选择的这个版本... 目录是什么让 Ubuntu 22.04 LTS 变得安全?更新了安全包linux 内核改进一、部署环境二、安装系统

Keepalived+Nginx双机配置小结

《Keepalived+Nginx双机配置小结》本文主要介绍了Keepalived+Nginx双机配置小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1.1 软硬件要求1.2 部署前服务器配置调优1.3 Nginx+Keepalived部署1.3

nginx upstream六种方式分配小结

《nginxupstream六种方式分配小结》本文主要介绍了nginxupstream六种方式分配小结,包括轮询、加权轮询、IP哈希、公平轮询、URL哈希和备份服务器,具有一定的参考价格,感兴趣的可... 目录1 轮询(默认)2 weight3 ip_hash4 fair(第三方)5 url_hash(第三

nginx配置多域名共用服务器80端口

《nginx配置多域名共用服务器80端口》本文主要介绍了配置Nginx.conf文件,使得同一台服务器上的服务程序能够根据域名分发到相应的端口进行处理,从而实现用户通过abc.com或xyz.com直... 多个域名,比如两个域名,这两个域名其实共用一台服务器(意味着域名解析到同一个IP),一个域名为abc

JAVA集成本地部署的DeepSeek的图文教程

《JAVA集成本地部署的DeepSeek的图文教程》本文主要介绍了JAVA集成本地部署的DeepSeek的图文教程,包含配置环境变量及下载DeepSeek-R1模型并启动,具有一定的参考价值,感兴趣的... 目录一、下载部署DeepSeek1.下载ollama2.下载DeepSeek-R1模型并启动 二、J

nginx中重定向的实现

《nginx中重定向的实现》本文主要介绍了Nginx中location匹配和rewrite重定向的规则与应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下... 目录一、location1、 location匹配2、 location匹配的分类2.1 精确匹配2

Nginx之upstream被动式重试机制的实现

《Nginx之upstream被动式重试机制的实现》本文主要介绍了Nginx之upstream被动式重试机制的实现,可以通过proxy_next_upstream来自定义配置,具有一定的参考价值,感兴... 目录默认错误选择定义错误指令配置proxy_next_upstreamproxy_next_upst

nginx生成自签名SSL证书配置HTTPS的实现

《nginx生成自签名SSL证书配置HTTPS的实现》本文主要介绍在Nginx中生成自签名SSL证书并配置HTTPS,包括安装Nginx、创建证书、配置证书以及测试访问,具有一定的参考价值,感兴趣的可... 目录一、安装nginx二、创建证书三、配置证书并验证四、测试一、安装nginxnginx必须有"-