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的显示

I’m 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!

网关高可用之keepavlived全流程(安装/配置/验证/解析)的更多相关文章

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

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

  2. Mycat高可用解决方案一(mysql安装)

    Mycat高可用解决方案一(mysql安装) Mycat关键特性 关键特性 支持SQL92标准 支持MySQL.Oracle.DB2.SQL Server.PostgreSQL等DB的常见SQL语法 ...

  3. Hadoop 高可用(HA)的自动容灾配置

    参考链接 Hadoop 完全分布式安装 ZooKeeper 集群的安装部署 0. 说明 在 Hadoop 完全分布式安装 & ZooKeeper 集群的安装部署的基础之上进行 Hadoop 高 ...

  4. 基于zookeeper的高可用Hadoop HA集群安装

    (1)hadoop2.7.1源码编译 http://aperise.iteye.com/blog/2246856 (2)hadoop2.7.1安装准备 http://aperise.iteye.com ...

  5. 高可用Keepalived+LVS搭建流程

    本流程搭建1个master,1个backup节点的Keepalived,使用lvs轮询2个节点的服务. 一.使用版本 CentOS 7.7 Keepalived 1.3.5 ipvsadm 1.27( ...

  6. 高可用Hadoop平台-Ganglia安装部署

    1.概述 最近,有朋友私密我,Hadoop有什么好的监控工具,其实,Hadoop的监控工具还是蛮多的.今天给大家分享一个老牌监控工具Ganglia,这个在企业用的也算是比较多的,Hadoop对它的兼容 ...

  7. 分布式架构高可用架构篇_02_activemq高可用集群(zookeeper+leveldb)安装、配置、高可用测试

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

  8. 分布式架构高可用架构篇_activemq高可用集群(zookeeper+leveldb)安装、配置、高可用测试

    原文:http://www.iteye.com/topic/1145651 从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统的Master-Slave 方式,增加了基于Z ...

  9. 分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

随机推荐

  1. C# 发送邮件 并自定义邮件格式

    话不多说,直接上代码 //邮件提醒 string Body = @"Dear " + list.Rows[i]["people"] + ":<b ...

  2. 三步理解--门控循环单元(GRU),TensorFlow实现

    1. 什么是GRU 在循环神经⽹络中的梯度计算⽅法中,我们发现,当时间步数较⼤或者时间步较小时,循环神经⽹络的梯度较容易出现衰减或爆炸.虽然裁剪梯度可以应对梯度爆炸,但⽆法解决梯度衰减的问题.通常由于 ...

  3. 夯实Java基础(十七)——注解(Annotation)

    1.注解概述 从JDK5.0开始,Java增加对元数据(MetaData)的支持,也就是注解(Annotation).其实我们早就已经接触过注解了,例如我们经常在Java代码中可以看到 “@Overr ...

  4. spring cloud 断路器 Hystrix

    一.微服务架构中使用断路器的原因 二.代码实现 1.在Ribbon中使用短路器 1.1.引入依赖 <dependency> <groupId>org.springframewo ...

  5. 轻松pick移动开发第二篇,rem布局

    一.为什么要使用rem布局 前面我写了flex布局的优点,分配伸缩盒容器中子盒子占的份数及排列方式,使其不受屏幕缩放的影响,使布局变得简单.然而,在有些时候,不可避免要给盒子设置高度的值,怎么让高度也 ...

  6. CSS3开启硬件加速

    { transform: translateZ(0); transform: translate3d(0,0,0);}<!-- transform: translateZ(0); transfo ...

  7. JAVA通过HTTP方式获取数据

    测试获取免费天气数据接口:http://www.weather.com.cn/data/sk/101190408.html URL数据如下图: 代码部分: package https; import ...

  8. Flink中Periodic水印和Punctuated水印实现原理(源码分析)

    在用户代码中,我们设置生成水印和事件时间的方法assignTimestampsAndWatermarks()中这里有个方法的重载 我们传入的对象分为两种 AssignerWithPunctuatedW ...

  9. Java之Exception

    Exception这个东西,程序中必须会有的,尽管我们很不乐意看到它,可是从另一个角度考虑,有异常则说明程序有问题,有助于我们及时改正.有的时候程序出错的原因有很多,比如不合法的输入.类型.空指针甚至 ...

  10. unity_小功能实现(碰撞检测)

    1.触发器Trigger:勾选IsTrigger属性 //当player刚进入触发区域的时刻发生触发检测,比如在靠近门的某个区域门一直处于开着状态 void OnTriggerEnter(Collid ...