keepalived实现Tomcat服务双机热备
欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。
欢迎跳转到本文的原文链接:https://honeypps.com/backend/keepalived-tomacat-standby/
项目中需要采用tomcat双机热备机制,以确保系统性能。本人通过查阅资料以及亲自实现完成,写下这篇博文,供个人读者参考。
1. 规划
1.1服务器环境规划
负载服务器master及WEB服务器1真实IP:10.10.195.53
负载服务器backup及WEB服务器2真实IP:10.10.195.190
负载服务器虚拟ip:10.10.195.212
1.2 软件环境规划
操作系统:Red Hat Enterprise Linux Server release 5.6 (Tikanga)
keepalived:keepalived-1.2.19
Java:jdk-1.7.0_79
Tomcat:apache-tomcat-7.0.64
2. 负载服务器配置
这里只叙述如何安装配置keepalived,至于java以及tomcat的安装及配置,这里不赘述。
2.1 安装keepalived
[~]tar -zxvf keepalived-1.2.19.tar.gz
[~] cd keepalived-1.2.19
[keepalived-1.2.19] ./configure --prefix=/usr/local/keepalived --disable-fwmark
#(如果直接输入./configure有可能报错:configure:error: No SO_MARK declaration in headers)
[keepalived-1.2.19] make
[keepalived-1.2.19] make install
2.2 配置keepalived服务
[keepalived-1.2.19] cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
[keepalived-1.2.19] cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[keepalived-1.2.19] cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[keepalived-1.2.19] mkdir /etc/keepalived
[keepalived-1.2.19] cp /usr/local/keepalived/etc/keepalived/keepalived.conf/etc/keepalived/
[keepalived-1.2.19] chkconfig --add keepalived
[keepalived-1.2.19] chkconfig keepalived on
重启\启动\关闭\查看状态keepalived
service keepalived restart
service keepalived start
service keepalived stop
service keepalived status
2.3 配置keepalived.conf文件
[~]mv /etc/keepalived/keepalived.conf/etc/keepalived/keepalived.conf.bak
[~]vi /etc/keepalived//keepalived.conf
主备机的keepalived.conf文件大致相同,只是注意红色标注的地方。
主机配置:
global_defs {router_id NodeA
}
vrrp_script chk_http_port {script "/opt/tomcat.pid"interval 5weight 2
}
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 52priority 150advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_http_port}virtual_ipaddress {10.10.195.212}
}
备机配置:
global_defs {router_id NodeB
}
vrrp_script chk_http_port {script "/opt/tomcat.pid"interval 5weight 2
}
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 52priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_http_port}virtual_ipaddress {10.10.195.212}
}
2.4配置/opt/tomcat.pid
#!/bin/bash
#description: check tomcat service anddecide whether stop the keepalived or not
#edited by zzh: 2015-10-14CATALINA_HOME=/users/shr/apache-tomcat-7.0.64
JAVA_HOME=/users/shr/util/JavaDir/jdk
export CATALINA_HOME
export JAVA_HOMEps ax --width=1000 | grep"org.apache.catalina.startup.Bootstrap start" | grep -v"grep" | awk '{printf $1 " "}' | wc | awk '{print $2}' >tomcat_process_count.txt
read line < tomcat_process_count.txtstart_tomcat=$CATALINA_HOME/bin/startup.shif [ ${line} -lt 1 ]
thenecho -n "===Starting tomcat===:"${start_tomcat}# :sudo service tomcat startecho "===tomcat start ok.==="sleep 3# check the tomcat status.ps ax --width=1000 | grep "org.apache.catalina.startup.Bootstrapstart" | grep -v "grep" | awk '{printf $1 " "}' | wc |awk '{print $2}' > tomcat_process_count.txtread line2 < tomcat_process_count.txtif [ ${line2} -lt 1 ]thensudo service keepalived stopfi
fi
rm tomcat_process_count.txt
#shell end.
3. 日志查看
3.1 正常启动
输入tail -f /var/log/messages查看启动keepalived日志:
(MASTER:10.10.195.53)
Sep 29 15:49:16 shr Keepalived[5536]:Starting Keepalived v1.2.19 (09/21,2015)
Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Netlink reflector reports IP 10.10.195.53added
Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Netlink reflector reports IP 10.10.195.53added
Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Registering Kernel netlink reflector
Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Registering Kernel netlink command channel
Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Opening file'/etc/keepalived/keepalived.conf'.
Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Configuration is using : 6572 Bytes
Sep 29 15:49:16 shr Keepalived[5537]:Starting Healthcheck child process, pid=5538
Sep 29 15:49:16 shr Keepalived_healthcheckers[5538]:Using LinkWatch kernel netlink reflector...
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Netlink reflector reports IP 10.10.195.53 added
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Netlink reflector reports IP 10.10.195.53 added
Sep 29 15:49:16 shr Keepalived[5537]:Starting VRRP child process, pid=5539
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Registering Kernel netlink reflector
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Registering Kernel netlink command channel
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Registering gratuitous ARP shared channel
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Opening file '/etc/keepalived/keepalived.conf'.
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Configuration is using : 36541 Bytes
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Using LinkWatch kernel netlink reflector...
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
Sep 29 15:49:17 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Transition to MASTER STATE
Sep 29 15:49:17 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Received lower prio advert, forcing new election
Sep 29 15:49:18 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Entering MASTER STATE
Sep 29 15:49:18 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) setting protocol VIPs.
Sep 29 15:49:18 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.10.195.212
Sep 29 15:49:18 shr Keepalived_vrrp[5539]:Netlink reflector reports IP 10.10.195.212 added
Sep 29 15:49:18 shrKeepalived_healthcheckers[5538]: Netlink reflector reports IP 10.10.195.212added
Sep 29 15:49:23 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.10.195.212
(BACKUP:10.10.195.190)
Sep 29 15:46:25 server1 Keepalived[18218]:Starting Keepalived v1.2.19 (09/25,2015)
Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Netlink reflector reports IP 10.10.195.190added
Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Netlink reflector reports IP 10.10.195.190added
Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Registering Kernel netlink reflector
Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Registering Kernel netlink command channel
Sep 29 15:46:25 server1 Keepalived_healthcheckers[18220]:Opening file '/etc/keepalived/keepalived.conf'.
Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Configuration is using : 6682 Bytes
Sep 29 15:46:25 server1 Keepalived[18219]:Starting Healthcheck child process, pid=18220
Sep 29 15:46:25 server1 Keepalived[18219]:Starting VRRP child process, pid=18221
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Netlink reflector reports IP 10.10.195.190 added
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Netlink reflector reports IP 10.10.195.190 added
Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Using LinkWatch kernel netlink reflector...
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Registering Kernel netlink reflector
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Registering Kernel netlink command channel
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Registering gratuitous ARP shared channel
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Opening file '/etc/keepalived/keepalived.conf'.
Sep 29 15:46:25 server1 Keepalived_vrrp[18221]:Configuration is using : 36651 Bytes
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Using LinkWatch kernel netlink reflector...
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: VRRP_Instance(VI_1) Entering BACKUP STATE
Sep 29 15:46:25 server1 Keepalived_vrrp[18221]:VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
3.2 主备切换
l 当在主机(MASTER:10.10.195.53)中输入 sudoservice keepalived stop,此时就会进行主备切换,主机切换成备机。
主机(MASTER:10.10.195.53)输出如下
Oct 14 13:25:09 shr Keepalived_vrrp[26683]:VRRP_Instance(VI_1) sending 0 priority
Oct 14 13:25:09 shr Keepalived_vrrp[26683]:VRRP_Instance(VI_1) removing protocol VIPs.
Oct 14 13:25:09 shrKeepalived_healthcheckers[26682]: Netlink reflector reports IP 10.10.195.212removed
Oct 14 13:25:09 shr Keepalived[26681]:Stopping Keepalived v1.2.19 (09/21,2015)
备机(BACKUP:10.10.195.190)输出如下
Oct 14 13:19:58 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Transition to MASTER STATE
Oct 14 13:19:59 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Entering MASTER STATE
Oct 14 13:19:59 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) setting protocol VIPs.
Oct 14 13:19:59 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for10.10.195.212
Oct 14 13:19:59 server1 Keepalived_healthcheckers[30889]:Netlink reflector reports IP 10.10.195.212 added
Oct 14 13:19:59 server1Keepalived_vrrp[30890]: Netlink reflector reports IP 10.10.195.212 added
Oct 14 13:20:04 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for10.10.195.212
l 当在主机(MASTER:10.10.195.53)中输入sudoservice keepalived start,此时就会切换成主机。备机(BACKUP:10.10.195.190)输出如下信息:
Oct 14 13:25:11 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Received higher prio advert
Oct 14 13:25:11 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Entering BACKUP STATE
Oct 14 13:25:11 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) removing protocol VIPs.
Oct 14 13:25:11 server1Keepalived_healthcheckers[30889]: Netlink reflector reports IP 10.10.195.212removed
Oct 14 13:25:11 server1Keepalived_vrrp[30890]: Netlink reflector reports IP 10.10.195.212 removed
4. 查看虚拟ip
可以通过ip add show命令查看添加的虚拟ip:
[shr@shr bin]$ip add show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu16436 qdisc noqueuelink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lo
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000link/ether 00:0c:29:6b:f2:a8 brd ff:ff:ff:ff:ff:ffinet 10.10.195.53/24 brd 10.10.195.255 scope global eth0inet 10.10.195.212/32scope global eth0
5. 常见错误
5. 1常见错误一:
/var/log/messages has thousands of errorslike this:Jun 28 09:18:32 rust Keepalived_vrrp:receive an invalid ip number count
associated with VRID!
Jun 28 09:18:32 rust Keepalived_vrrp: bogusVRRP packet received on eth0 !!!
Jun 28 09:18:32 rust Keepalived_vrrp:VRRP_Instance(VI_1) Dropping received
VRRP packet...The backup director starts up, but doesn'tlisten on the virtual addresses
at all. Its /var/log/messages has thousands of errors like this:Jun 28 06:25:05 stye Keepalived_vrrp:receive an invalid ip number count
associated with VRID!
Jun 28 06:25:05 stye Keepalived_vrrp: bogusVRRP packet received on eth0 !!!
Jun 28 06:25:05 stye Keepalived_vrrp:VRRP_Instance(VI_1) ignoring received
advertisment...<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
解决方法:
改变配置文件/etc/keepalived/keepalived.conf中virtual_router_id为另一个值即可。
(changed the vrid to another number and it worked fine).
5.2 常见错误二:
主机执行到VRRP_Instance(VI_1) Entering BACKUP STATE之后没有执行VRRP_Instance(VI_1)setting protocol VIPs。
解决方法:
可能是配置文件keepalived.conf中{左边没有空格。
附
linux添加tomcat服务
在/etc/init.d中输入 sudo vim tomcat
脚本具体内容如下:
#!/bin/bash
#chkconfig: 2345 10 90
#description: Starts and Stops the tomcatdaemon
#edited by ZZH: 2015-10-14CATALINA_HOME=/users/shr/apache-tomcat-7.0.64
JAVA_HOME=/users/shr/util/JavaDir/jdk
export CATALINA_HOME
export JAVA_HOMEstart_tomcat=$CATALINA_HOME/bin/startup.sh
stop_tomcat=$CATALINA_HOME/bin/shutdown.shif [ ! -f $CATALINA_HOME/bin/catalina.sh ]
thenecho"===Tomcat is not available.==="exit
fistart()
{echo-n "===Starting tomcat===:"${start_tomcat}echo"===tomcat start ok.==="
}stop()
{echo-n "===Shutting down tomcat===:"${stop_tomcat}echo"===tomcat stop ok.==="
}status()
{ps ax --width=1000 | grep"org.apache.catalina.startup.Bootstrap start" | grep -v"grep" | awk '{printf $1 " "}' | wc | awk '{print $2}'> tomcat_process_count.txtreadline < tomcat_process_count.txtrmtomcat_process_count.txtif[ $line -gt 0 ]thenecho-n "tomcat ( pid = "ps ax --width=1000 | grep"org.apache.catalina.startup.Bootstrap start" | grep -v"grep" | awk '{printf $1 " "}' | awk '{print $1}'> tomcat_process_pid.txtreadpid < tomcat_process_pid.txtrmtomcat_process_pid.txtecho-n $pidecho-n ") is running..."echoelseecho"tomcat is stopped"fi
}case "$1" instart)start;;stop)stop;;restart)stopsleep1start;;status)status;;*)echo"Usage:$0 {start|stop|restart}"exit1
esacexit 0
# shell end.
在终端输入:
sudo chmod 755 tomcat
sudo chkconfig --add tomcat
tomcat 启动 service tomcatstart
tomcat 关闭 service tomcatstop
tomcat 重启 service tomcatrestart
tomcat状态查看 service tomcatstatus
欢迎跳转到本文的原文链接:https://honeypps.com/backend/keepalived-tomacat-standby/
欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。
keepalived实现Tomcat服务双机热备相关推荐
- 使用keepalived监控tomcat 达到双机热备
使用keepalived监控tomcat 达到双机热备 通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务. 当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而 ...
- njx如何实现负载均衡_LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡
前言 首先声明下,由于这两天找资料,看了不少博客 ,但是出于不细心,参考者的博客地址没有记录下来,所有文中要是出现了与大家博客相同的地方,那么请大家在评论区说明并附上博客地址,我好引用进来:这里表示抱 ...
- LVS+Keepalived实现负载均衡和双机热备
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- 浅入浅出keepalived+nginx实现高可用双机热备
对应用keepalived+nginx技术实现nginx高可用进行简单的分析,下面是通过对keepalived添加校验nginx存活脚本,监控nginx的状态,应用keepalived的主备模式实现n ...
- Redis双机热备方案--转
http://luyx30.blog.51cto.com/1029851/1350832 参考资料: http://patrick-tang.blogspot.com/2012/06/redis-ke ...
- NFS双机热备探究实验
NFS双机热备探究实验 一.实验背景: 公司只有一台NFS服务器,上面存有一些编译工具,通用脚本等,现在该机器比较老旧,出现故障时恢复困难,存在单点故障不说,还会造成线上服务的不稳定,现急需对该服务器 ...
- oracle rac和ha对比,双机热备(HA),dg和RAC区别
Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目 ...
- Keepalived - Keepalived 实现 tomcat双机热备
文章目录 Pre 环境信息 官网 原理 keepalived 安装 137 安装 keepalived 138 安装 keepalived 配置keepalived的配置文件/etc/keepaliv ...
- linux启动keepalived服务,llinux企业常用服务---HA+keepalived双机热备
部署前准备: iptables和selinux没配置,关掉 挂载系统镜像作为本地yum源,修改yum文件 源码包准备keepalived-1.2.13.tar.gz 环境介绍: 2台centos6.5 ...
最新文章
- 帮我看看这个是什么意思 c++代码
- 一样入职的应届生工资不一样_天天向上汪涵透露工资细节,王一博拿的工资和他一样,不公平...
- scala list 接受java string_「软帝学院」Java零基础学习详解
- 同学,你有一份来自支付宝AI学姐的面试锦囊待查收
- idea conf文件_JavaWe商品项目保姆级解析IDEA版(配置篇)
- 无监督学习 k-means_无监督学习-第4部分
- iptables 配置后连接不上数据库_CentOs中iptables配置允许mysql远程访问
- mysql 时间计算函数_MySQL时间计算函数DATE_SUB()用法简介说明
- 读JDK动态代理源码(Proxy类)
- 【Matlab】Plot的用法详解
- App制作开发工具源代码搭建网站转app网站
- 如何安装uclient_uclient软件
- html微博换头像,手机新浪微博头像怎么设置 手机新浪微博更换头像教程
- java:利用数组实现将古诗词纵向输出
- 计算机无法用u盘重装系统,最简单不用U盘电脑重装系统教程
- 为知笔记 | 3 分钟创建格式美美的笔记
- Amcharts 入门教程
- 如何在网上回复负面评论
- 讲不明白的成语故事(轻松一笑)
- 【ACM 2020 - Text Recognition in the Wild:A Survey】OCR识别综述
热门文章
- redis(11)--AOF持久化
- 约束rmq_差分约束
- 【VMware vSAN 6.6】5.8.自动化:vSAN硬件服务器解决方案
- 航院 1874 畅通工程续
- css 宽高自适应的div 元素 如何居中 垂直居中
- JVM内存溢出分析-实战JVM(二)
- CentOS 6.x搭建Open***实现双IDC互联
- 新建Silverlight文件的方法
- Aizu - 1407 Parentheses Editor(对顶栈+模拟)
- HDU多校4 - 6808 Go Running(最小点覆盖+网络流优化)