理论转换实践之keepalived+nginx实现HA

背景:

        keepalived+nginx实现ha是网站和应用服务器常用的方法,之前项目中单独用nginx实现过负载均衡和服务转发,keepalived一直停留在理论节点,加之最近工作编写的一个技术文档用到keepalived,于是便有了下文。

服务组件介绍:

        keepavlived

                一个用于实现高可用性和负载均衡的开源软件,通常在 Linux 环境下使用。它的主要作用是监视服务器集群中的各个节点,并在主节点失效时,快速将备用节点切换为主节点,从而实现系统的持续可用性。同时,它还可以用于负载均衡,将传入的请求分发到多个服务器上,以提高系统的性能和容量。本文只说主备节点切换。

        nginx

                最好用的web和反向代理服务器,属于常用中间件,此处就不多说了。

实现高可用:

        安装keepalived+nginx模拟实现高可用,其中keepalived负责vip切换,nginx为方便vip切换后的结果展示。为方便测试本场景使用docker容器进行操作和展示。

         3个centos7.9容器,2个容器(C,D)模拟HA,1个容器E作为客户端模拟调用nginx。

小试牛刀:

        准备工作:

        可使用docker创建3台centOs7.9容器,分别命名为centos7.9_C,centos7.9_D,centos7.9_E,下文3个容器简称为C,D,E

        ip分别为172.17.0.2,172.17.0.3,172.17.0.5,VIP 172.17.17.15       

        安装和配置

  • C安装keepalived和nginx

                keepalived修改配置文件,vi /etc/keepalived/keepalived,修改内容如下:

vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.17.0.15}
}

               nginx为了测试效果修改index.html为:

          ​​​​​​​

  • D安装keepalived和nginx

 keepalived修改配置文件,vi /etc/keepalived/keepalived,修改内容如下:

vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.17.0.15}
}

        nginx为了测试效果修改index.html为:

        

        测试用例:

  1. C,D正常,E访问:访问到的是C节点nginx提供的服务,如下图所示:​​​​​​​
  2. 停掉C,E访问:虚拟IP自动漂移至备节点,访问到的是D节点nginx提供的服务,如下图所示
  3. 恢复C,停掉D,E访问:访问到的是C节点nginx提供的服务,如下图所示:
  4. C和D都恢复,E访问:访问到的是C节点nginx提供的服务,如下图所示:

其他:

        keepalived服务高可用的原理实质是虚拟ip的漂移,通俗点说就是主备节点上服务启动后,主节点上的keepalived服务会自动给网卡添加上虚拟ip(也就是ip addr add命令),以此保证通过虚拟ip是可访问的,当主节点挂掉后把虚拟ip添加到备节点的网卡,主备节点是通过心跳机制验活。

总结:

        1、网站、应用服务器等需要持续可用性的场景使用keepalived+nginx实现HA是可行的,且复杂度适中,适合非架构师岗位的后台开发者。

        2、理论是服务于实践的,实践需要时间和精力,但是实践后会加深对理论的认知,建议伙伴们可以动手试一试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/113017.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Gitea自建仓库 并配置git上传

使用Gitea自建仓库 并配置git上传 使用 Docker 安装 | Gitea Documentation 1. 安装Docker 2. 使用Docker Compose快速安装 在安装目录下创建config 和 data两个文件夹 以下是我的配置,和官网提供的大差不差 version: "3"networks:gitea:external: …

论文阅读_医疗知识图谱_GraphCare

英文名称: GraphCare: Enhancing Healthcare Predictions with Open-World Personalized Knowledge Graphs 中文名称: GraphCare:通过开放世界的个性化知识图增强医疗保健预测 文章: http://arxiv.org/abs/2305.12788 代码: https://github.com/pat-jj/GraphCare 作…

uniapp项目实战系列(2):新建项目,项目搭建,微信开发工具的配置

目录 系列文章目录uniapp项目实战系列(1):导入数据库,启动后端服务,开启代码托管(点击跳转)1.新建项目2.托管项目的操作:(无勾选托管项目可无视)3.项目编译预览3.1游览器编译3.2微信…

以GitFlow分支模型为基准的Git版本分支管理流程

以GitFlow分支模型为基准的Git版本分支管理流程 文章目录 以GitFlow分支模型为基准的Git版本分支管理流程GitFlow分支模型中的主要概念GitFlow的分支管理流程图版本号说明借助插件Git Flow Integration Plus实现分支模型管理其他模型TBD模型阿里AoneFlow模型 GitFlow分支模型中…

2023-8-30 八数码(BFS)

题目链接&#xff1a;八数码 #include <iostream> #include <algorithm> #include <unordered_map> #include <queue>using namespace std;int bfs(string start) {string end "12345678x";queue<string> q;unordered_map<strin…

ATKck靶场系列二

信息收集 nmap -sP 192.168.111.0/24 nmap -sS -T4 -A -v -p- 192.168.111.80─# nmap -sS -T4 -A -v -p- 192.168.111.80 Starting Nmap 7.93 ( https://nmap.org ) at 2023-08-29 01:46 EDT NSE: Loaded 155 scripts for scanning. NSE: Script Pre-scanning. Initiating NS…

el-date-picker 等 点击无反应不回显问题解决

如上图&#xff0c;编辑回显正常&#xff0c;但是时间控件在拖动过程中时间不会跟随改变。 解决办法&#xff1a; <el-date-picker input"onInput()" ...><el-input input"onInput()" ...>js中onInput() {this.$forceUpdate();},

弹窗、抽屉、页面跳转区别 | web交互入门

当用户点击或触发浏览页面的某个操作&#xff0c;有很多web交互方式&#xff0c;可以大致分为弹窗、抽屉、跳转新页面三种web交互方式。虽然这三种web交互方式看起来没什么不同&#xff0c;但实际上弹窗、抽屉、跳转新页面对交互体验有蛮大的影响。 这需要UI\UX设计师针对不同…

Redis与Mysql区别

一、关系型数据库 mysql&#xff0c;pgsql,oracle ,sqlserver 支持连表关联查询&#xff08;会有一些特定的语法特特性&#xff09; 二、非关系型数据库 redis,mongodb,memcache &#xff08;key-value&#xff09; 三、关系型数据库与非关系型数据库的区别&#xff1a; 1&am…

9个实用的交互设计软件,Get更简单的原型制作方式!

好用的原型图软件不仅可以快速可视化产品经理的想法&#xff0c;提高沟通效率&#xff0c;还可以加快测试进度&#xff0c;打造更真实的用户体验。今天本文为大家整理了9个好用的原型图工具&#xff0c;一起来看看吧&#xff01; 1、即时设计 在设计场景中&#xff0c;即时设…

universal robot 机械臂 官方基本教程

https://academy.universal-robots.cn/modules/e-Series-core-track/Chinese/module3/story_html5.html?courseId2166&languageChinese 教程1 控制箱内部 包含&#xff1a; 主机板&#xff0c;SD卡&#xff0c;和安全控制板 安全控制板负责所有控制信息&#xff0c;包括…

Java处理 CDT时区转换CST时区

例如&#xff1a;夏令营时间&#xff08;“Sat Aug 01 00:00:00 CDT 1987”&#xff09; //TODO CDT时区转换CST时区Date date new Date(value);TimeZone cdtTZ TimeZone.getTimeZone("America/Chicago");TimeZone cstTZ TimeZone.getTimeZone("America/Mexi…

windows磁盘清理

文章目录 1.清理 temp 文件1.1 运行自定义的 clean.bat1.2 手动清理 C/windows/Temp 文件夹 2.清理系统更新后的旧文件(win10 适用)3.系统清理 C 盘临时文件(win11 适用)4.更改系统默认文件夹路径5.其它小技巧5.1 软件不要安装在 C 盘5.2 软件生成的资源文件不要放在 C 盘5.3 卸…

电脑日历怎么添加日程?如何在电脑上设置日程提醒?

在办公室使用电脑办公时&#xff0c;我们需要在电脑日历上添加日程&#xff0c;以便及时提醒自己工作中的重要事件。比如&#xff0c;我们需要安排明天的会议时间、发送重要文件的截止日期&#xff0c;或者是提醒自己去参加一个重要的客户洽谈会。这些日程安排对于我们的工作效…

设计模式--迭代器模式(Iterator Pattern)

一、什么是迭代器模式 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;用于提供一种统一的方式来访问一个聚合对象中的各个元素&#xff0c;而不需要暴露该聚合对象的内部结构。迭代器模式将遍历集合的责任从集合对象中分离出来&#xf…

【记录】手机QQ和电脑QQ里的emoji种类有什么差异?

版本 手机 QQ&#xff1a;V 8.9.76.12115 电脑 QQ&#xff1a;QQ9.7.15&#xff08;29157&#xff09; 偶然发现&#xff0c;有一种emoji手机上怎么找都找不到&#xff0c;一开始以为自己失忆了&#xff0c;后来发现这种emoji只在电脑上有。 接下来简单说一下找emoji差异的方式…

华为鲲鹏服务器

1.简介 鲲鹏通用计算平台提供基于鲲鹏处理器的TaiShan服务器、鲲鹏主板及开发套件。硬件厂商可以基于鲲鹏主板发展自有品牌的产品和解决方案&#xff1b;软件厂商基于openEuler开源OS以及配套的数据库、中间件等平台软件发展应用软件和服务&#xff1b;鲲鹏开发套件可帮助开发…

VR全景加盟会遇到哪些问题?全景平台会提供什么?

想创业&#xff0c;你是否也遇到这些问题呢&#xff1f;我是外行怎么办&#xff1f;没有团队怎么办&#xff1f;项目回本周期快吗&#xff1f;项目靠谱吗&#xff1f;加盟平台可信吗&#xff1f;等等这类疑问。近几年&#xff0c;VR产业发展迅速&#xff0c;尤其是VR全景项目在…

haneWIN安装及配置

简介 haneWIN是windows系统下搭建NFS server的常用工具&#xff0c;官网是https://www.hanewin/imprint-e.htm&#xff0c;当然&#xff0c;也可以搜索一些和谐版来用。 1.安装nfs1169 右击安装包&#xff0c;选择以管理员方式运行 点击下一步 可自定义选择安装的文件夹&…