1.场景描述

因为要做网关的高可用,用到了keepalived+nginx,来保证nginx的高可用,如下图:

安装了keepavlived,走了一些弯路,记录下吧,nginx的安装就不多说了,博客已经介绍了好几篇了。

2. 解决方案

2.1 安装keepalived

2.1.1 安装相关依赖包
[root@t-ruanjianlaowang ~]# yum install -y libnl*
[root@t-ruanjianlaowang ~]# yum install -y libnfnetlink-devel zlib zlib-devel gcc gcc-c++ openssl openssl-devel openssh

假如连不了,网上也有这些包的下载,下载后tar解压也行。

2.1.2 下载并安装keepalived

官网地址:https://www.keepalived.org/download.html

我们使用的最新版本:keepalived-2.0.18.tar.gz,993k

tar -zxvf keepalived-2.0.18.tar.gz
cd keepalived-2.0.18/
./configure --prefix=/usr/local/keepalived
make
make install
2.1.3 添加keepavlived为系统服务
[root@t-ruanjianlaowang ~]#  cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/keepalived 

[root@t-ruanjianlaowang ~]#  cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived

[root@t-ruanjianlaowang ~]# cp /root/tools/keepalived-2.0.18/keepalived/etc/init.d/keepalived   /etc/init.d/keepalived

#/etc/keepalived下好像有了keepalived文件夹,有了就不用mkdir了,软件老王
[root@t-ruanjianlaowang ~]# mkdir /etc/keepalived
[root@t-ruanjianlaowang ~]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
2.1.4 设置开机启动
# 设置开机启动
[root@t-ruanjianlaowang ~]# chkconfig keepalived on [root@t-ruanjianlaowang ~]# service keepalived start|stop|restart

到这里仅仅是keepalived安装完成,接下来还要根据项目项目配置keepalived.conf信息。

如果你觉得文章对你有些帮助,欢迎微信搜索「软件老王」第一时间阅读或交流!

2.2 配置文件修改

2.2.1 master的conf配置文件
vi cd /etc/keepalived/keepalived.conf
!Configuration File for keepalived
global_defs {
router_id RUANJIANLAOWANG_MASTER
} vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
} vrrp_instance VI_1 {
state MASTER
interface ens666 #这里必须非常注意,软件老王刚开始没太注意,这里是你的网卡名称
virtual_router_id 81 #这个会在backup机器上用到
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
} track_script {
chk_nginx
}
virtual_ipaddress {
10.192.168.21
}
}
2.2.2 还有个检查nginx是否挂掉的sh,也上传下
vi nginx_check.sh
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/usr/sbin/nginx
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/etc/init.d/keepalived stop
fi
fi
2.2.3 backup机器上conf文件
/bin/bash: Configuration: command not found
bal_defs {
router_id RUANJIANLAOWANG2
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
interval 2 ## 检测时间间隔
weight -20 ## 如果条件成立,权重-20
} vrrp_instance VI_1 {
state BACKUP
interface ens168
virtual_router_id 81 priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 111track_script {
chk_nginx ## 执行 Nginx 监控的服务,软件老王
}
virtual_ipaddress {
10.192.168.21
}
}

这里记着也把检查nginx的sh文件上传上,跟master上的一样。

2.3 启动

(1)配置完成后开始启动

[root@t-ruanjianlaowang ~]# service keepalived start

(2)启动过程中,打开日志看一下(刚开始可能会有问题,看下日志啥都明白了)

[root@t-ruanjianlaowang ~]# tail -f  /var/log/messages

(3)假如启动不了,可以尝试以下方式。

[root@t-ruanjianlaowang ~]# systemctl daemon-reload

#上面试过后,不行再重新注册服务
[root@t-ruanjianlaowang ~]#chkconfig --del keepalived
[root@t-ruanjianlaowang ~]# cd /usr/lib/systemd/system/
[root@t-ruanjianlaowang ~]#rm -rf keepalived.service
[root@t-ruanjianlaowang ~]# chkconfig --add keepalived

2.4 验证

[root@t-ruanjianlaowang ~]#ip addr show ens666
[root@t-ruanjianlaowang ~]#ip addr show ens168
ens666、ens168为网卡名称 假如绑定成功,软件老王机器里显示的信息里面会有:10.192.168.21的显示

微服务实战系列(十)-网关高可用之中间件Keepalived-copy的更多相关文章

  1. 微服务实战系列(十)-网关高可用之中间件Keepalived

    1.场景描述 因为要做网关的高可用,用到了keepalived+nginx,来保证nginx的高可用,如下图: 安装了keepavlived,走了一些弯路,记录下吧,nginx的安装就不多说了,博客已 ...

  2. go-zero微服务实战系列(十一、大结局)

    本篇是整个系列的最后一篇了,本来打算在系列的最后一两篇写一下关于k8s部署相关的内容,在构思的过程中觉得自己对k8s知识的掌握还很不足,在自己没有理解掌握的前提下我觉得也很难写出自己满意的文章,大家看 ...

  3. go-zero微服务实战系列(三、API定义和表结构设计)

    前两篇文章分别介绍了本系列文章的背景以及根据业务职能对商城系统做了服务的拆分,其中每个服务又可分为如下三类: api服务 - BFF层,对外提供HTTP接口 rpc服务 - 内部依赖的微服务,实现单一 ...

  4. ASP.NET Core微服务实战系列

    希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. 前言 这里记录的是个人奋斗和成长的地方,该篇只是一个系列目录和构想 ...

  5. 微服务实战系列--Nginx官网发布(转)

    这是Nginx官网写的一个系列,共七篇文章,如下 Introduction to Microservices (this article) Building Microservices: Using ...

  6. Chris Richardson微服务实战系列

    微服务实战(一):微服务架构的优势与不足 微服务实战(二):使用API Gateway 微服务实战(三):深入微服务架构的进程间通信 微服务实战(四):服务发现的可行方案以及实践案例 微服务实践(五) ...

  7. 微服务实战系列(五)-注册中心Eureka与nacos区别

    1. 场景描述 nacos最近用的比较多,介绍下nacos及部署吧,刚看了下以前写过类似的,不过没写如何部署及与eureka区别,只展示了效果,补补吧. 2.解决方案 2.1 nacos与eureka ...

  8. go-zero 微服务实战系列(二、服务拆分)

    微服务概述 微服务架构是一种架构风格,它将一个大的系统构建为多个微服务的集合,这些微服务是围绕业务功能构建的,服务关注单一的业务功能,这些服务具有以下特点: 高度可维护和可测试 松散的耦合 可独立部署 ...

  9. 微服务实战系列(六)-网关springcloud zuul

    1. 场景描述 今天接着介绍springcloud,今天介绍下springcloud的路由网关-Zuul,外围系统或者用户通过网关访问服务,网关通过注册中心找到对应提供服务的客户端,网关也需要到注册中 ...

  10. 微服务实战系列(八)-网关springcloud gateway自定义规则

    1. 场景描述 先说明下项目中使用的网关是:springcloud gateway, 因需要给各个网关服务系统提供自定义配置路由规则,实时生效,不用重启网关(重启风险大),目前已实现:动态加载自定义路 ...

随机推荐

  1. C++之OpenCV入门到提高004:Mat 对象的使用

    一.介绍 今天是这个系列<C++之 Opencv 入门到提高>得第四篇文章.这篇文章很简单,介绍如何使用 Mat 对象来实例化图像实例,了解它的构造函数和常用的方法,这是基础,为以后的学习 ...

  2. 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现五

    一.前言介绍: 1.1 项目摘要 随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势.古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力.然而,在现代社会中 ...

  3. ABP - 菜单配置(导航栏选中高亮,高亮并定位当前标题)

    配置一个如上图所示的菜单: 1.打开文件NavigationProvider.cs 添加如下代码(如下图所示) .AddItem(new MenuItemDefinition( PageNames.A ...

  4. QT 6.8 安卓 Android 环境安装配置,你踩了几个坑,我教你跳出来,早看不入坑… …

    安装了QT6.8 最新版本,在线安装,用了数天后,想开始写一个Android程序,发现还在配置环境才可以继续,于是就开始配置: 菜单:编辑 -->preferences-->设备--> ...

  5. 鸿蒙NEXT开发案例:二维码的生成与识别

    [引言] 在本篇文章中,我们将探讨如何在鸿蒙NEXT平台上实现二维码的生成与识别功能.通过使用ArkUI组件库和相关的媒体库,我们将创建一个简单的应用程序,用户可以生成二维码并扫描识别. [环境准备] ...

  6. 性能调优、虚拟机、垃圾回收、软硬件协调相关文章和视频 — Part1

    本文由 ImportNew - 顾星竹 翻译自 javacodegeeks.如需转载本文,请先参见文章末尾处的转载要求. ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 J ...

  7. m4 mac mini本地部署ComfyUI,测试Flux-dev-GGUF的workflow模型10步出图,测试AI绘图性能,基于MPS(fp16),优点是能耗小和静音

    m4 mac mini已经发布了一段时间,针对这个产品,更多的是关于性价比的讨论,如果抛开各种补贴不论,价位上和以前发布的mini其实差别不大,真要论性价比,各种windows系统的mini主机的价格 ...

  8. 金仓数据库数据迁移实战:从MySQL到KES的顺利迁移

    今天我们将开始实践金仓数据库的数据迁移功能.在此之前,我们一直使用的是简化版的 Docker 镜像,这个版本并没有集成可视化操作工具.因此,为了更方便地进行后续的操作,我们需要额外下载一个 Windo ...

  9. Qt 在线程中invokeMethod采用QueuedConnection模式,调用带指针参数槽,实际不会调用

    widgetObject有操函数Test: void Test(int *v); 在线程中调用Test,会被忽略,实际不会调用. QMetaObject::invokeMethod(widgetObj ...

  10. 【Android】谷歌应用关机闹钟 PowerOffAlarm 源码分析,并实现定时开、关机

    前言 RTC RTC 即实时时钟(Real-Time Clock),主要是功能有: 时间保持:RTC可以在断电的时候,仍然保持计时功能,保证时间的连续性 时间显示与设置:RTC可以向系统提供年.月.日 ...