文章目录

  • Pre
  • 环境信息
  • 官网
  • 原理
  • keepalived 安装
    • 137 安装 keepalived
    • 138 安装 keepalived
  • 配置keepalived的配置文件/etc/keepalived/keepalived.conf
    • 关键参数解读
    • 137
    • 138
  • 检测脚本
  • 日志
  • 状态发生变更,触发脚本
  • 小结
  • Questions
    • exited due to signal 15
    • notify_master notify_backup未生效

Pre

双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。


环境信息

节点 软件 IP
节点A keepalived + tomcat 192.168.126.137
节点B keepalived + tomcat 192.168.126.138
虚拟IP - 192.168.126.200

官网

https://keepalived.readthedocs.io/en/latest/#


原理

keepalived用于保证环境高可用,防止单点故障。

keepalived主要有三个模块,分别是core、check和VRRP。

  • core核心模块,负责主进程的启动、维护以及全局配置文件的加载和解析
  • check负责健康检查,包括常见的各种检查方式
  • VRRP模块实现VRRP协议

VRRP(Virtual Router Redundancy Protocol) 即虚拟路由冗余协议,实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。


keepalived 安装

两个节点均需要安装, 在137 和 138 节点上安装 ,执行 yum install keepalived

137 安装 keepalived

[root@localhost ~]# yum install keepalived
Loaded plugins: fastestmirror
.......
.......                   Complete!
[root@localhost ~]# 

138 安装 keepalived

[root@localhost ~]# yum install keepalived
Loaded plugins: fastestmirror
.......
.......                   Complete!
[root@localhost ~]# 

tomcat 也都装下哈 ,用于验证,可以yum安装

CentOS 7 yum安装与配置 Tomcat 写的挺不错,没有的话可以参考


配置keepalived的配置文件/etc/keepalived/keepalived.conf

关键参数解读

state 主服务器为MASTER,其他服务器均为BACKUP
interface 通信用的网卡,ip addr可以查看,以实际为准
virtual_router_id 主从服务器此ID必须一致
priority 优先级,主服务器必须大于其他服务器,数值越大优先级越高
authentication 主从服务器必须一致
virtual_ipaddress 虚拟IP地址,主从服务器必须一致,该VIP为客户端访问时使用的IP

137

! Configuration File for keepalived
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from example@example.comsmtp_server mail.example.comsmtp_connect_timeout 30router_id LVS_DEVEL
}
vrrp_script chk_tomcat {script "/etc/keepalived/tomcat_check.sh"interval 5weight -5fall 3  rise 2
}
vrrp_instance VI_1 {state MASTERinterface ens33mcast_src_ip 192.168.126.137virtual_router_id 51priority 101advert_int 2authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.126.200}track_script {chk_tomcat}
}

138

! Configuration File for keepalived
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from example@example.comsmtp_server mail.example.comsmtp_connect_timeout 30router_id LVS_DEVEL
}
vrrp_script chk_tomcat {script "/etc/keepalived/tomcat_check.sh"interval 5weight -5fall 3  rise 2
}
vrrp_instance VI_1 {state BACKUPinterface ens33mcast_src_ip 192.168.126.138virtual_router_id 51priority 99advert_int 2authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.126.200}track_script {chk_tomcat}
}

与主节点的配置上的区别,需要注意

state 表示一个是主机一个是备机,mcast_src_ip 当前服务器的ip,priority 主机要比备机的要高


检测脚本

!/bin/bash
JAVA_PROCESS=`ps -C java --no-heading| wc -l`
if [ $JAVA_PROCESS -eq 0 ];thenecho "tomcat is stop"sleep 2if [ `ps -C java --no-heading| wc -l` -eq 0 ];thensystemctl stop keepalived.service fi
fi

比较简单,根据实际情况调整

检测是否有tomcat在运行,如果没有的话,等2秒,如果还没有就把keepalived给停止掉,这样vip就能从主机master切换到备机BACKUP上了。


日志

可以查看 /var/log/messages 日志 观察切换和选主的过程。


状态发生变更,触发脚本

https://keepalived.readthedocs.io/en/latest/configuration_synopsis.html

! Configuration File for keepalived
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from example@example.comsmtp_server mail.example.comsmtp_connect_timeout 30router_id LVS_DEVEL
}vrrp_script chk_tomcat {script "/etc/keepalived/tomcat_check.sh"interval 5weight -5fall 3  rise 2
}
vrrp_instance VI_1 {state MASTERinterface ens33mcast_src_ip 192.168.126.137virtual_router_id 51priority 101advert_int 2authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.126.200}track_script {chk_tomcat}notify_master /etc/keepalived/a.sh               notify_backup /etc/keepalived/b.sh

当节点从BACKUP 转为 MASTER的时候 ,执行 /etc/keepalived/a.sh

当节点从MASTER 转为 BACKUP的时候 ,执行 /etc/keepalived/b.sh


小结

MASTER和 BACKUP,预先分配好, 通过priority 来确定, 当MASTER宕机以后,BACKUP 没有收到 MASTER的 VRRP消息,BACKUP就认为 MASTER宕机了,这个时候就把自己选举为MASTER。

MASTER宕机,本节点的日志

Dec 30 01:40:01 localhost Keepalived[6784]: Stopping
Dec 30 01:40:01 localhost systemd: Stopping LVS and VRRP High Availability Monitor...
Dec 30 01:40:01 localhost Keepalived_vrrp[6786]: VRRP_Instance(VI_1) sent 0 priority
Dec 30 01:40:01 localhost Keepalived_vrrp[6786]: VRRP_Instance(VI_1) removing protocol VIPs.
Dec 30 01:40:01 localhost Keepalived_healthcheckers[6785]: Stopped
Dec 30 01:40:02 localhost Keepalived_vrrp[6786]: Stopped
Dec 30 01:40:02 localhost Keepalived[6784]: Stopped Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2
Dec 30 01:40:02 localhost systemd: Stopped LVS and VRRP High Availability Monitor.

BACKUP节点的日志

Dec 30 01:40:05 localhost Keepalived_vrrp[9173]: VRRP_Instance(VI_1) Entering MASTER STATE
Dec 30 01:40:05 localhost Keepalived_vrrp[9173]: VRRP_Instance(VI_1) setting protocol VIPs.

当MASTER恢复以后,MASTER发送VRRP消息给BACKUP,这个时候虽然BACKUP是MASTER,但是 比较Prority后,发现自己的Prority小,会进入BACKUP模式,这个时候,之前设置的MASTER就又变成了MASTER了 。

MASTER恢复,本节点的日志

Dec 30 01:42:09 localhost Keepalived[6915]: Starting Healthcheck child process, pid=6916
Dec 30 01:42:09 localhost Keepalived[6915]: Starting VRRP child process, pid=6917
Dec 30 01:42:09 localhost Keepalived_healthcheckers[6916]: Opening file '/etc/keepalived/keepalived.conf'.
Dec 30 01:42:09 localhost systemd: Started LVS and VRRP High Availability Monitor.
Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: Registering Kernel netlink reflector
Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: Registering Kernel netlink command channel
Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: Registering gratuitous ARP shared channel
Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: Opening file '/etc/keepalived/keepalived.conf'.
Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: WARNING - default user 'keepalived_script' for script execution does not exist - please create.
Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: SECURITY VIOLATION - scripts are being executed but script_security not enabled.
Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: VRRP_Instance(VI_1) removing protocol VIPs.
Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: Using LinkWatch kernel netlink reflector...
Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: VRRP_Script(chk_tomcat) succeeded
Dec 30 01:42:10 localhost Keepalived_vrrp[6917]: VRRP_Instance(VI_1) Transition to MASTER STATE
Dec 30 01:42:12 localhost Keepalived_vrrp[6917]: VRRP_Instance(VI_1) Entering MASTER STATE
Dec 30 01:42:12 localhost Keepalived_vrrp[6917]: VRRP_Instance(VI_1) setting protocol VIPs.
Dec 30 01:42:12 localhost Keepalived_vrrp[6917]: Sending gratuitous ARP on ens33 for 192.168.126.200

BACKUP节点的日志


Dec 30 01:42:09 localhost Keepalived_vrrp[9173]: /etc/keepalived/tomcat_check.sh exited with status 127
Dec 30 01:42:12 localhost Keepalived_vrrp[9173]: VRRP_Instance(VI_1) Received advert with higher priority 101, ours 94
Dec 30 01:42:12 localhost Keepalived_vrrp[9173]: VRRP_Instance(VI_1) Entering BACKUP STATE
Dec 30 01:42:12 localhost Keepalived_vrrp[9173]: VRRP_Instance(VI_1) removing protocol VIPs.

Questions

exited due to signal 15

/var/log/messages 日志提示:/etc/keepalived/check_nginx.sh exited due to signal 15

调整如下参数

     interval 5           #监控脚本的执行时间要大于advert_int advert_int 2        #心跳检查间隔时间

notify_master notify_backup未生效

检查 getenforce

getenforce 如果 开启的话,关闭 执行 setenforce 0


Keepalived - Keepalived 实现 tomcat双机热备相关推荐

  1. keepalived实现Tomcat服务双机热备

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  2. 浅入浅出keepalived+nginx实现高可用双机热备

    对应用keepalived+nginx技术实现nginx高可用进行简单的分析,下面是通过对keepalived添加校验nginx存活脚本,监控nginx的状态,应用keepalived的主备模式实现n ...

  3. Redis双机热备方案--转

    http://luyx30.blog.51cto.com/1029851/1350832 参考资料: http://patrick-tang.blogspot.com/2012/06/redis-ke ...

  4. NFS双机热备探究实验

    NFS双机热备探究实验 一.实验背景: 公司只有一台NFS服务器,上面存有一些编译工具,通用脚本等,现在该机器比较老旧,出现故障时恢复困难,存在单点故障不说,还会造成线上服务的不稳定,现急需对该服务器 ...

  5. 使用keepalived监控tomcat 达到双机热备

    使用keepalived监控tomcat 达到双机热备 通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务. 当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而 ...

  6. LVS+Keepalived实现负载均衡和双机热备

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  7. 使用keepalived实现双机热备

    2019独角兽企业重金招聘Python工程师标准>>> 通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务. 当提供服务的一台出现故障的时候,另外一台会马上自动接 ...

  8. Keepalived实现双机热备

    Keepalived实现双机热备: 双机热备一般指的是两台机器设备同时在运行,但是只有一台处于提供服务的状态.当其中一台设备出现故障,那么另一台设备接管角色,继续提供服务,他们之间的切换时间非常之短, ...

  9. 搭建Nginx高可用集群(keepalived+双机热备)

    一.Nginx高可用 首先了解一下什么是高可用,高可用是分布式系统架构中必须考虑的因素. 我们都知道,使用nginx的反向代理和负载均衡可以解决tomcat等web容器的单点故障以及高并发等问题. 反 ...

最新文章

  1. 【莫队算法】bzoj3781 小B的询问
  2. 干货丨人工智能、大数据领域从菜鸟到高手的晋级指南(经典长文,值得收藏)
  3. 演示:通过实验取证IP报文的各个字段
  4. POJ 3280 Cheapest Palindrome(DP)
  5. .fit文件读取--head信息--修改head--读取csv文件-------ska暑期训练
  6. STM32CubeMX使用教程
  7. 时间序列度量算法之SBD
  8. PPT怎么母版怎么修改及应用
  9. win7怎么关闭配置计算机,Win7电脑怎么设置定时关机?
  10. 朱晔的互联网架构实践心得S1E8:三十种架构设计模式(下)
  11. LaTeX--5--一个文档的基本结构/导言区/标题_作者_日期
  12. 同一个ssh key用在多台电脑上
  13. linux sparse
  14. 最新亿级流量电商详情页系统的大型高并发与高可用缓存架构实战第一版附全套资料
  15. 新装的windows遇到命令行脚本无法执行
  16. 复星金服微服务_复星金服打造“爱妈妈”互助共享平台,解决职场妈妈的后顾之忧...
  17. 2022 云栖大会 | 一体化大数据智能峰会预约开启
  18. 家用漏电保护器过流跳闸与漏电跳闸的检查方法
  19. 【论文精读】KD-MVS
  20. No converter for [class XXX] with preset Content-Type ‘null‘

热门文章

  1. kuka机器人if逻辑编程_KUKA机器人调试的程序语法是什么
  2. 访问其他程序中的数据(ContentResolver的CRUD操作)
  3. 异步任务下载apk文件并弹出对话框提示当前进度,文件下载结束后弹出安装界面
  4. C语言查看队头元素,C语言实现循环队列的初始化进队出队读取队头元素判空-1...
  5. linux 打包 tar
  6. pyspark 计算 皮尔逊相关系数
  7. 设计RandomPool结构
  8. Spring 的 BeanUtils 踩坑记,你是不是遇到过这些问题?
  9. 自然语言处理NLP,如何使用AMBERT算法建立多粒度token预训练语言模型
  10. matlab out of memory产生原因和解决办法