当前位置: 首页 > ai >正文

从零开始的云计算生活——番外3,LVS+KeepAlived+Nginx高可用实现方案

目录

前言

一、环境搭建

1.环境准备

2.安装ipvsadm和keepalived(Lvs服务器),nginx服务器安装nginx

3.为两台RS配置虚拟ip(nginx服务器)

1.配置虚拟网络子接口

2.ARP响应级别与通告行为的概念

3.配置ARP

二、Keepalived+Lvs+Nginx高可用集群负载均衡的搭建

1. 配置 Master

2. 配置Lvs Backup

3. 测试

1.测试Lvs

2.测试nginx


前言

在大型网站中一般服务端会做集群,同时利用负载均衡器做负载均衡。这样有利于将大量的请求分散到各个服务器上,提升网站的响应速度。当然为了解决单点故障的问题,还会做热备份方案。这里演示利用LVS做负载均衡器,同时利用Keepalived保证其高可用,基于LVS的DR模式构建Nginx集群。

一、环境搭建

1.环境准备

HOSTNAMEIP说明
nginx192.168.71.170nginx服务器
nginx192.168.71.174nginx服务器
Lvs+keepalived(主)192.168.71.166Lvs+keepalived(VIP:192.168.71.150)
Lvs+keepalived(备)192.168.71.169Lvs+keepalived(VIP:192.168.71.150)

2.安装ipvsadm和keepalived(Lvs服务器),nginx服务器安装nginx

 

图中显示目前版本为1.2.1,此外是一个空列表,啥都没。

  • 注:关于虚拟ip在云上的事儿

    • 1.阿里云不支持虚拟IP,需要购买他的负载均衡服务

    • 2.腾讯云支持虚拟IP,但是需要额外购买,一台节点最大支持10个虚拟ip

3.为两台RS配置虚拟ip(nginx服务器)

两台服务器配置一样,以下已一台服务器配置作为演示

1.配置虚拟网络子接口

1.进入到网卡配置目录,找到 lo(本地环回接口,用户构建虚拟网络子接口),创建一个新的文件ifcfg-lo:0 :

2.修改内容如下:

DEVICE=lo:0
IPADDR=192.168.71.150
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0

nginx1配置

nginx2配置

2.ARP响应级别与通告行为的概念

1.arp-ignore:ARP响应级别(处理请求)

  • 0:只要本机配置了ip,就能响应请求

  • 1:请求的目标地址到达对应的网络接口,才会响应请求

2.arp-announce:ARP通告行为(返回响应)

  • 0:本机上任何网络接口都向外通告,所有的网卡都能接受到通告

  • 1:尽可能避免本网卡与不匹配的目标进行通告

  • 2:只在本网卡通告

3.配置ARP

1.打开sysctl.conf

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

net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_announce=2
net.ipv4.conf.lo.arp_announce=2

3.刷新配置  

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

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

vim /etc/profile
route add -host 192.168.71.150 dev lo

二、Keepalived+Lvs+Nginx高可用集群负载均衡的搭建

这种架构目前在很多公司都在采用的高可用高性能架构, 优点如下:

  1. 使用Keepalived + Lvs 后可以实现主备切换高可用

  2. 结合了Lvs 后, 针对于后台的Real Server 这些真实的服务器做健康检查, 如果某台真实的服务器宕机后, Lvs就会自动剔除, 如果恢复后也可以自动加入.

  3. 其实 Keepalived 本身就是为 Lvs 定做了, 他们的匹配度, 结合度非常高, 通过 keepalivd 就可以配置 Lvs与 RS 的关系, 如负载均衡算法, 健康检查配置等.

1. 配置 Master

1.进入keepalived配置文件, 修改配置信息, 修改如下即可(注意观察注释匹配自己的信息节点)

配置文件如下:

! Configuration File for keepalivedglobal_defs {router_id LVS_102
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.115.150}
}
# LVS 配置: 配置集群访问的 IP+端口, 端口和nginx保持一致, 都是80, IP与端口是空格而不是冒号
virtual_server 192.168.115.150 80 {# 健康检查的时间, 单位是秒delay_loop 6# 配置负载均衡的算法, 默认是 轮询lb_algo rr# 设置LVS的工作模式 NAT|TUN|DR  lb是load_balance 负载均衡的缩写lb_kind DR# 会话持久化的时间, 默认是 50 秒persistence_timeout 5# 协议 -tprotocol TCP# Real Server 配置  nginx服务ip+端口real_server 192.168.115.113 80 {# 轮询的权重, 默认有多少台, 就设置为多少个 1weight 1# 设置健康检查, 基于 tcpTCP_CHECK {# 检查的80端口connect_port 80# 检查的超时时间 2秒connect_timeout 2# 重试的次数 我们设置为2, 一般是5-7nb_get_retry 2# 设置间隔时间 3sdelay_before_retry 3}}real_server 192.168.115.114 80 {weight 1# 设置健康检查, 基于 tcpTCP_CHECK {# 检查的80端口connect_port 80# 检查的超时时间 2秒connect_timeout 2# 重试的次数 我们设置为2, 一般是5-7nb_get_retry 2# 设置间隔时间 3sdelay_before_retry 3}}
}

清除负载均衡的规则

重启keepalived, 使得配置生效

2. 配置Lvs Backup

步骤同 Master ,只有配置文件不一样

! Configuration File for keepalived
global_defs {#主服务器配置不同,名称随便起router_id LVS_103
}vrrp_instance VI_1 {#主服务器配置不同state BACKUPinterface ens33virtual_router_id 51#主服务器配置不同,权重需要比主服务器低priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.115.150}
}
# LVS 配置: 配置集群访问的 IP+端口, 端口和nginx保持一致, 都是80, IP与端口是空格而不是冒号
virtual_server 192.168.115.150 80 {# 健康检查的时间, 单位是秒delay_loop 6# 配置负载均衡的算法, 默认是 轮询lb_algo rr# 设置LVS的工作模式 NAT|TUN|DR  lb是load_balance 负载均衡的缩写lb_kind DR# 会话持久化的时间, 默认是 50 秒persistence_timeout 5# 协议 -tprotocol TCP# Real Server 配置  nginx服务ip+端口real_server 192.168.115.100 80 {# 轮询的权重, 默认有多少台, 就设置为多少个 1weight 1# 设置健康检查, 基于 tcpTCP_CHECK {# 检查的80端口connect_port 80# 检查的超时时间 2秒connect_timeout 2# 重试的次数 我们设置为2, 一般是5-7nb_get_retry 2# 设置间隔时间 3sdelay_before_retry 3}}real_server 192.168.115.101 80 {weight 1# 设置健康检查, 基于 tcpTCP_CHECK {# 检查的80端口connect_port 80# 检查的超时时间 2秒connect_timeout 2# 重试的次数 我们设置为2, 一般是5-7nb_get_retry 2# 设置间隔时间 3sdelay_before_retry 3}}
}

重启完出现相同路由规则标识已配置成功

3. 测试

1.测试Lvs

停掉 LVS 的 Master 节点

网站还可以正常访问

重启Master 节点,我们发现ip有漂移回来了

2.测试nginx

我们关闭170节点的Nginx服务器(假如宕机状态)

进入master节点进行查看集群信息

完成

http://www.xdnf.cn/news/15475.html

相关文章:

  • 深入理解概率图模型:贝叶斯网络因子分解、d-分离与马尔可夫毯
  • vuex原理以及实现
  • MySQL基础学习之DML,DQL(二)
  • 【docker】将本地镜像打包部署到服务器上
  • 架构设计之计算高性能——单体服务器高性能
  • 从混沌到秩序:数据科学的热力学第二定律破局——线性回归的熵减模型 × 最小二乘的能量最小化 × 梯度下降的负反馈控制系统,用物理定律重构智能算法的统一场论
  • Java数据结构第二十五期:红黑树传奇,当二叉树穿上 “红黑铠甲” 应对失衡挑战
  • Linux 文件操作命令大全:从入门到精通的实用指南
  • 《Qt信号与槽机制》详解:从基础到实践
  • Qt 的信号槽机制中,使用 `connect` 函数时,第五个参数是 **连接类型(Connection Type)**,
  • 机器学习sklearn入门:归一化和标准化
  • Antd中使用Table集成 react-resizable实现可伸缩列
  • Jenkins credentials 增加了github credential 但是在Git SCM 凭证中不显示
  • Arcgis 10.7 矢量的分区统计
  • FPGA从flash加载程序的时候,Flash和FPGA芯片的供电是稳定了还是没有稳定就开始加载程序?
  • 「源力觉醒 创作者计划」_巅峰对话:文心大模型4.5系列与DeepSeek/Qwen 3.0深度解析
  • 图像基础指南
  • 【龙泽科技】新能源汽车电驱动总成装调与检修仿真教学软件
  • React+Next.js+Tailwind CSS 电商 SEO 优化
  • SFT:大型语言模型专业化定制的核心技术体系——原理、创新与应用全景
  • mongodb操作巨鹿
  • python应用day11--requests爬虫详解
  • TypeScript的export用法
  • DeepSeek(18):SpringAI+DeepSeek大模型应用开发之会话日志
  • 3分钟实战!用DeepSeek+墨刀AI生成智能对话APP原型图
  • 【官方回复】七牛云开启referer防掉链后小程序访问七牛云图片显示403
  • PyCharm(入门篇)
  • Navicat Premium17.2.8 下载与安装(免费版)
  • 如何选择适合的云手机配置?解决资源不足带来的性能瓶颈
  • 【RTSP从零实践】12、TCP传输H264格式RTP包(RTP_over_TCP)的RTSP服务器(附带源码)