Java技术中如何使用keepalived实现双机热备

Keepalived简介

Keepalived是Linux下一个轻量级别的高可用解决方案。高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭义的来讲就是之主机的冗余和接管, 它与HeartBeat RoseHA 实现相同类似的功能,都可以实现服务或者网络的高可用,但是又有差别,HeartBeat是一个专业的、功能完善的高可用软件,它提供了HA 软件所需的基本功能,比如:心跳检测、资源接管,检测集群中的服务,在集群节点转移共享IP地址的所有者等等。HeartBeat功能强大,但是部署和使用相对比较麻烦,与HeartBeat相比,Keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然它没有HeartBeat功能强大,但是Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成。

Keepalived是什么?

Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。

后来Keepalived又加入了VRRP的功能,VRRP(Vritrual Router Redundancy Protocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied 一方面具有服务器状态检测和故障隔离功能,另外一方面也有HA cluster功能,下面介绍一下VRRP协议实现的过程。

 

VRRP协议与工作原理

在现实的网络环境中。主机之间的通信都是通过配置静态路由或者(默认网关)来完成的,而主机之间的路由器一旦发生故障,通信就会失效,因此这种通信模式当中,路由器就成了一个单点瓶颈,为了解决这个问题,就引入了VRRP协议。

熟悉网络的学员对VRRP协议应该不陌生,它是一种主备模式的协议,通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信,这其中涉及到两个概念:物理路由器和虚拟路由器。

VRRP可以将两台或者多台物理路由器设备虚拟成一个虚拟路由,这个虚拟路由器通过虚拟IP(一个或者多个)对外提供服务,而在虚拟路由器内部十多个物理路由器协同工作,同一时间只有一台物理路由器对外提供服务,这台物理路由设备被成为:主路由器(Master角色),一般情况下Master是由选举算法产生,它拥有对外服务的虚拟IP,提供各种网络功能,如:ARP请求,ICMP 数据转发等,而且其它的物理路由器不拥有对外的虚拟IP,也不提供对外网络功能,仅仅接收MASTER的VRRP状态通告信息,这些路由器被统称为“BACKUP的角色”,当主路由器失败时,处于BACKUP角色的备份路由器将重新进行选举,产生一个新的主路由器进入MASTER角色,继续提供对外服务,整个切换对用户来说是完全透明的。

每个虚拟路由器都有一个唯一的标识号,称为VRID,一个VRID与一组IP地址构成一个虚拟路由器,在VRRP协议中,所有的报文都是通过IP多播方式发送的,而在一个虚拟路由器中,只有处于Master角色的路由器会一直发送VRRP数据包,处于BACKUP角色的路由器只会接受Master角色发送过来的报文信息,用来监控Master运行状态,一一般不会发生BACKUP抢占的情况,除非它的优先级更高,而当MASTER不可用时,BACKUP也就无法收到Master发过来的信息,于是就认定Master出现故障,接着多台BAKCUP就会进行选举,优先级最高的BACKUP将称为新的MASTER,这种选举角色切换非常之快,因而保证了服务的持续可用性。

Keepalvied的工作原理

上面我们介绍了Keepalived通过VRRP实现高可用性的工作原理,而Keepalived作为一个高性能集群软件,它还能实现对集群中服务器运行状态的监控以及故障隔离,下面我们介绍一下Keepalived对服务器运行状态和故障隔离的工作原理。

Keepalived工作在TCP/IP 参考模型的 三层、四层、五层,也就是分别为:网络层,传输层和应用层,根据TCP、IP参数模型隔层所能实现的功能,Keepalived运行机制如下:

在网络层:我们知道运行这4个重要的协议,互联网络IP协议,互联网络可控制报文协议ICMP、地址转换协议ARP、反向地址转换协议RARP,在网络层Keepalived在网络层采用最常见的工作方式是通过ICMP协议向服务器集群中的每一个节点发送一个ICMP数据包(有点类似与Ping的功能),如果某个节点没有返回响应数据包,那么认为该节点发生了故障,Keepalived将报告这个节点失效,并从服务器集群中剔除故障节点。

在传输层:提供了两个主要的协议:传输控制协议TCP和用户数据协议UDP,传输控制协议TCP可以提供可靠的数据输出服务、IP地址和端口,代表TCP的一个连接端,要获得TCP服务,需要在发送机的一个端口和接收机的一个端口上建立连接,而Keepalived在传输层里利用了TCP协议的端口连接和扫描技术来判断集群节点的端口是否正常,比如对于常见的WEB服务器80端口。或者SSH服务22端口,Keepalived一旦在传输层探测到这些端口号没有数据响应和数据返回,就认为这些端口发生异常,然后强制将这些端口所对应的节点从服务器集群中剔除掉。

在应用层:可以运行FTP,TELNET,SMTP,DNS等各种不同类型的高层协议,Keepalived的运行方式也更加全面化和复杂化,用户可以通过自定义Keepalived工作方式,例如:可以通过编写程序或者脚本来运行Keepalived,而Keepalived将根据用户的设定参数检测各种程序或者服务是否允许正常,如果Keepalived的检测结果和用户设定的不一致时,Keepalived将把对应的服务器从服务器集群中剔除。

Keepalvied的安装

我们在本文中的测试环境如下:

两台物理服务器和一个虚拟服务器(vip):

master: centos7 192.168.8.4

backup: centos7 192.168.8.6

vip:192.168.8.100

测试环境的网络topology图如下:

打开百度App,看更多图片

节点A 192.168.8.4 (主节点), 节点B 192.168.8.6(备用节点),虚拟IP(对外提供服务的IP 192.168.8.100)。

在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。当主节点不可用时,备用节点接管虚拟IP(即虚拟IP漂移至节点B),提供正常服务。

keepalived的原理可以这样简单理解:

keepalived安装在两台物理服务器上,并相互监控对方是否在正常运行。

当节点A正常的时候:节点A上的keepalived会将下面的信息广播出去:

192.168.8.100 这个IP对应的MAC地址为节点A网卡的MAC地址,图中的其它电脑如客户端和NodeB会更新自己的ARP表,对应192.168.8.100的MAC地址=节点A网卡的MAC地址。当节点A发生故障的时候,节点B上的keepalived会检测到,并且将下面的信息广播出去:192.168.8.100 这个IP对应的MAC地址为节点B网卡的MAC地址图中的其它电脑如客户端会更新自己的ARP表,对应192.168.8.100的MAC地址=节点B网卡的MAC地址,下面分别在两台机器上进行软件安装:

1. 下载keepalived :说明:目前在CentOS7上安装需要1.3.2以上版本,否则会出现一个操作系统内核错误,不好搞定,建议使用root用户安装

2. 解压keepalived :tar -xvf keepalived-1.3.4.tar.gz

3. ./configure

4. make

5. make install

6. whereis keepalived

7. mkdir /etc/keepalived

8. cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

9. cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/ (目前这个文件在keepalived解压后,存在keepalived文件夹,etc文件夹,init.d中,具体看安装的版本)

10. cp /usr/local/etc/sysconfig/keepalived /etc/sys

11. cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

12. cp /usr/local/sbin/keepalived /usr/sbin/

13. chkconfig --add keepalived 添加操作系统启动

14. chkconfig --list keepalived

15. service keepalived start/stop/restart 启动关闭keepalived服务

Keepalvied的防火墙配置

防火墙规则(主从机都要配置,双向打开vrrp服务,建议关闭防火墙先测试keepalived配置是否正确,这里是firewall防火墙的配置,iptables的话查下):

16. firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

17. firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --out-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

18. firewall-cmd --reload

Keepalvied配置

分别配置主机从机的keepalived.conf文件,配置完成后重启keepalived服务,双机热备功能服务器配置完成。

1. 主机的配置

2. 从机的配置

作者:黑马程序员
链接:https://www.jianshu.com/p/06067f977ed8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/cnndevelop/p/12059057.html

时间: 2024-08-27 10:28:44

Java技术中如何使用keepalived实现双机热备的相关文章

HAproxy + keepalived 实现双机热备

一.HAProxy简介: HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. HAProxy实现了一种事件驱动.单一进程模型,此模型支持非常大的并发连接数.多进程或

利用Keepalived实现双机热备详解

在这个高度信息化的IT时代,企业的生产系统.业务运营.销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的.不间断的计算机系统或网络服务. 一.Keepalived双机热备基础知识 1.Keepalived概述 Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能--判断LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集. Keepaliv

LVS+keepalived实现双机热备

昨晚写了关于lvs的文章,今天以实例介绍下LVS+keepalived实现双机热备 服务器IP地址设置表 服务器名称 网络接口 IP地址 路由器 外网IP 121.201.24.138 lvs-master eth0 172.16.100.2 eth1(VIP) 172.16.100.100 lvs-backup eth0 172.16.100.3 lo:0(VIP) 172.16.100.100 web1 eth0 172.16.100.4 lo:0(VIP) 172.16.100.100 w

Keepalived+lvs 双机热备

Keepalived 双机热备 使用 Keepalived 做双机热备非常简单,经常和 LVS 搭配来实现高可用负载平衡方案 1. Master / Slave 首先准备两台测试服务器和一个虚拟IP. Server A: 192.168.1.10 (主服务器) Server B: 192.168.1.20 Virtual IP: 192.168.1.100 测试服务: 在两台服务器上分别安装 Nginx,并修改默认的 index.html 文件,显示当前服务器 IP 以便识别. 1. 在两台服务

keepalived nginx 双机热备图文讲解

原文:http://blog.csdn.net/wanglei_storage/article/details/51175418 keepalived nginx 双机热备实战精讲 在试验之前先贴张图上来,大致说下具体的需求及环境(注:实验所用到的脚本在文章末尾,如果在过程中遇到可以先看脚本) 环境: VIP(漂移地址):192.168.1.60-192.168.1.61 nginx-1:192.168.1.50 nginx-2:192.168.1.51 关闭 iptables.关闭selinu

用haproxy搭建web群集并由keepalived 实现双机热备

搭建haproxy+keepalived高可用群集. 一.案例概述 1.haproxy是目前比较流行的一种集群调度工具,是一款免费开源的软件,并且具有一定得安全性:haproxy较适用于负载较大的web节点,并且支持数万的并发量.同类调度工具还有很多,如LVS和Nginx.相比较而言,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,性能没有haproxy好.haproxy主要实现web群集的负载均衡haproxy官方网站:http:

keepalived+nginx双机热备+负载均衡

keepalived+nginx双机热备+负载均衡 最近因业务扩展,需要将当前的apache 转为nginx(web), 再在web前端放置nginx(负载均衡).同时结合keepalived 对前端nginx实现HA. nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都

tomcate+keepalived配置双机热备

环境清单: 应用1:192.168.51.101 应用2:192.168.51.75 虚拟IP:192.168.51.179 一.安装Tomcat(参照其他文档): 二.部署应用,并修改响应的端口(9090): 1.修改server.xml文件,修改后内容如下: <?xml version='1.0' encoding='utf-8'?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more con

MySQL+Keepalived实现双机热备

Keepalived双机热备 一.概述: keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议. 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为m