通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。
  当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。下面来以keepalived结合tomcat来实现一个web服务器的双机热备。
  keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。 Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。
  我们在本文中的测试环境如下:
  两台物理服务器和一个虚拟服务器(vip):
  master:192.168.248.128  
  backup: 192.168.248.129
  vip: 192.168.248.200 (虚拟ip)
测试环境的网络图如下:

在NodeA和NodeB分别部署tomcat并启动,然后安装keepalived帮助我们监控tomcat,我们通过vip:192.168.248.200可以访问到tomcat,这时候访问的其实是NodeA上的tomcat,我们如果关闭NodeA上面的tomcat,这时候NodeB会自动帮助我们接管,这样我们的服务依旧可以运行,下面我们来安装keepalived。

keepalived推荐使用yum安装,源码安装之后的配置挺复杂的

yum install keepalived

  安装完成后需要配置keepalived的配置文件,文件位于/etc/keepalived/keepalived.conf,下图中为需要修改的部分,默认的配置文件中在其后还有很多内容,本实例只是简单的DEMO,所以那些内容暂时用不上,可以全部删除,接下来说下图中这部分的配置

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

NodeA的keepalived.conf配置如下

! Configuration File for keepalived
global_defs {
notification_email {
zhouxiao@example.com
itsection@example.com
}
notification_email_from itsection@example.com
smtp_server mail.example.com
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_tomcat {
#script "killall -0 nginx"
script "/etc/keepalived/tomcat_check.sh"
interval 2
weight -5
fall 3
rise 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
mcast_src_ip 192.168.248.128
virtual_router_id 51
priority 101
advert_int 2
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.248.200
}
track_script {
chk_tomcat
}
}

NodeB同样使用 # yum install keepalived 安装

配置文件如下

! Configuration File for keepalived
global_defs {
notification_email {
zhouxiao@example.com
itsection@example.com
}
notification_email_from itsection@example.com
smtp_server mail.example.com
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_tomcat {
#script "killall -0 nginx"
script "/etc/keepalived/tomcat_check.sh"
interval 2
weight -5
fall 3
rise 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
mcast_src_ip 192.168.248.129
virtual_router_id 51
priority 100
advert_int 2
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.248.200
}
track_script {
chk_tomcat
}
}

这两个配置文件不同的地方就是state 表示一个是主机一个是备机,mcast_src_ip 写上当前服务器的ip,priority 主机要比备机的要高,更多的配置说明,可以在网上搜索更多的资料

接下来就是NodeA 和 NodeB都用到的检测tomcat是否运行的脚本tomcat_check.sh

#!/bin/bash
JAVA_PROCESS=`ps -C java --no-heading| wc -l`
if [ $JAVA_PROCESS -eq 0 ];then
echo "tomcat is stop"
sleep 2
if [ `ps -C java --no-heading| wc -l` -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi

关闭两台服务器的防火墙

这个脚本的意思就是检测是否有tomcat在运行,如果没有的话,就把keepalived给停止掉,这样vip就能从主机master切换到备机BACKUP上了。把这个文件分别放入两台机器的/etc/keepalived文件夹内,然后#cd /etc/keepalived 进入到该文件夹内,输入# chmod 777 tomcat_check.sh 为这个脚本添加可以执行的命令

我们可以使用 #./tomcat_check.sh 看看这个脚本能否执行,如果脚本报错了,可能是文本的编码问题,可以点击这里解决

这样就全部配置完了。然后我们分别开启两台机器上的tomcat以及keepalived

service keepalived restart

在NodeA 我们输入 # ip addr

我们可以看到在 eth0这个网卡上绑定了我们的vip 192.168.248.200,

这时候,我们分别访问http://192.168.248.128:8080/  http://192.168.248.200:8080/  http://192.168.248.129:8080/

这时候,我们停掉主机128上的tomcat,依次访问上面的三个网址,可以发现:

在NodeB 129服务器上,我们输入# ip addr

vip切换到备份机器上来了,这时候说明我们使用keepalived监控tomcat成功了,如果NodeA上的tomcat突然停掉,NodeB上的tomcat就会即可接管服务。

使用keepalived监控tomcat 达到双机热备的更多相关文章

  1. Nginx+keepalived 脚本安装主从双机热备自动切换解决方案

    Nginx+keepalived 脚本安装主从双机热备自动切换解决方案 2013-07-02 19:24:13 标签:filesnginx keepalived 原创作品,允许转载,转载时请务必以超链 ...

  2. ansible自动部署Keepalived实现Nginx服务双机热备

    脚本实现通过ansible-playbook自动化安装Keepalived和配置,主要解决问题如下: Keepalived自动化安装: keepalived_vrid配置,自动根据vip获取最后一段作 ...

  3. HA(High available)-Keepalived高可用性集群(双机热备)单点实验-菜鸟入门级

    HA(High available)-Keepalived高可用性集群   Keepalived 是一个基于VRRP虚拟路由冗余协议来实现的WEB 服务高可用方案,虚拟路由冗余协议 (Virtual ...

  4. LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡

    前言 首先声明下,由于这两天找资料,看了不少博客 ,但是出于不细心,参考者的博客地址没有记录下来,所有文中要是出现了与大家博客相同的地方,那么请大家在评论区说明并附上博客地址,我好引用进来:这里表示抱 ...

  5. KeepAlived+HaProxy+MyCat+Percona双机热备PXC集群

    一.搭建PXC集群 1.环境:centos7+PXC5.7.21+mycat1.6.5 2.卸载mariadb rpm -qa | grep mariadb* yum -y remove mariad ...

  6. keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群

    本章笔者亲自动手,使用LVS技术实现实现一个可以支持庞大访问量.高可用性.高伸缩性的服务器集群 在读本章之前,可能有不少读者尚未使用该技术,或者部分读者使用Nginx实现应用层的负载均衡.这里大家都可 ...

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

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

  8. 使用keepalived实现双机热备

    通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.下面来以keepalived结合tom ...

  9. Keepalived双机热备

    一,Keepalived双机热备的应用场景 1,网站流量不高,压力不大,但是对服务器的可靠性要求极其高,例如实时在线OA系统,政府部门网站系统,医院实时报医系统,公安局在线报案系统,股市后台网站系统等 ...

随机推荐

  1. ethereum(以太坊)(十一)--字节数组(一)

    pragma solidity ^0.4.0; contract byte1{ /* 固定大小字节数组(Fixed-size byte arrays) 固定大小字节数组可以通过bytes1,bytes ...

  2. 【Effective C++ 读书笔记】条款03: 尽量使用 const

    关键字const多才多艺,变化多端却不高深莫测. const 修饰指针 面对指针, 你可以指出 指针自身.指针所指物.或者两者都不是 const. 如果关键字 const 出现在星号左边,表示被指物是 ...

  3. PHP 防止 E-mail 注入( PHP 过滤器)

    PHP 防止 E-mail 注入 防止 e-mail 注入的最好方法是对输入进行验证. 下面的代码与上一节类似,不过我们已经增加了检测表单中 email 字段的输入验证程序: <html> ...

  4. 虚拟机无法ping通物理机的解决方案

    环境:Windows7下安装虚拟机,虚拟机上装有Ubuntu16.04的server版系统. 1.打开Windows防火墙,在打开或关闭Windows防火墙中 关闭Windows的防火墙. 2.禁用服 ...

  5. 【机器学习算法基础+实战系列】KNN算法

    k 近邻法(K-nearest neighbor)是一种基本的分类方法 基本思路: 给定一个训练数据集,对于新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例多数属于某个类别,就把输 ...

  6. Kali Linux 搜狗输入法安装

    1.下载 搜狗输入法 for Linux http://pinyin.sogou.com/linux/ //有64位和32位的deb包 我这里下载的是 : sogoupinyin_2.1.0.0086 ...

  7. P2580 于是他错误的点名开始了(trie)

    P2580 于是他错误的点名开始了 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉 ...

  8. 《Cracking the Coding Interview》——第17章:普通题——题目7

    2014-04-28 23:28 题目:给定一个数字,用英语把它读出来. 解法:ZOJ上有相反的题目.如果我要用中文读书来呢? 代码: // 17.7 Read an integer in Engli ...

  9. Percona-Tookit工具包之pt-table-usage

      Preface       There always be some table join operations in our SQL statement.Although we can know ...

  10. Linux下通过tcpdump抓包工具获取信息

    介绍 tcpdump是网络数据包截获分析工具.支持针对网络层.协议.主机.网络或端口的过滤.并提供and.or.not等逻辑语句帮助去除无用的信息. tcpdump - dump traffic on ...