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

从零开始的云计算生活——番外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.lryc.cn/news/590134.html

相关文章:

  • AWS权限异常实时告警系统完整实现指南
  • 自动化框架 Selenium 的使用
  • 74、搜索二维矩阵
  • 随机链表的复制数据结构oj题(力口138)
  • Mybatis的SQL编写—XML方式
  • 3分钟实战!用DeepSeek+墨刀AI生成智能对话APP原型图
  • 035_ClaudeCode_MCP_介绍
  • 电脑安装 Win10 提示无法在当前分区上安装Windows的解决办法
  • 【数据结构】「栈」(顺序栈、共享栈、链栈)
  • 现代前端开发流程:CI/CD与自动化部署实战
  • 多维动态规划题解——最小路径和【LeetCode】空间优化一维数组
  • 手撕设计模式之消息推送系统——桥接模式
  • Jenkins全方位CI/CD实战指南
  • U3D打包IOS的自我总结
  • 如何选择适合的云手机配置?解决资源不足带来的性能瓶颈
  • Unity Android Logcat插件 输出日志中文乱码解决
  • Kafka 与 RocketMQ 消息确认机制对比分析
  • 深度解析:Python实战京东资产拍卖平台爬虫,从ID抓取到详情数据落地
  • 2025年C++后端开发高频面试题深度解析:线程安全LRU缓存设计与实现
  • 短剧系统开发:塑造数字娱乐新未来
  • 面试150 二叉树的层序遍历
  • UE5 相机后处理材质与动态参数修改
  • 猫眼娱乐IOS开发一面手撕算法
  • 工业相机GigE数据接口的优势及应用
  • [特殊字符] 第1篇:什么是SQL?数据库是啥?我能吃吗?
  • SQL,在join中,on和where的区别
  • 锁存型霍尔 IC:定义、应用与优势全解析
  • Git问题排查与故障解决详解
  • 前端性能与可靠性工程:前端韧性工程 - 优雅降级与离线支持
  • 《设计模式之禅》笔记摘录 - 7.中介者模式