HA(High available)-Keepalived高可用性集群(双机热备)单点实验-菜鸟入门级
HA(High available)-Keepalived高可用性集群
Keepalived 是一个基于VRRP虚拟路由冗余协议来实现的WEB 服务高可用方案,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP),类似于工作在3,4,5层的交换机软件。利用其来避免单点故障。
keepalived 软件期初设计专为解决LVS负载均衡软件设计的。用来管理和监控LVS集群系统中的各个服务节点的状态,后来加入可以实现高可用的vrrp功能,因此keeplived软件不仅可以管理LVS软件外还可以,作为其他服务(Nginx Haproxy mysql等的高可用解决方案)的软件。
keepalived 功能:
1.管理LVS负载均衡软件。
2.实现对lVS集群节点健康检查功能(healthcheck).
3作为系统网络服务的高可用功能(failover)
配置服务原理以web服务为例 :一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服 务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
keepalived和heartbeat区别
Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);
Heartbeat是基于主机或网络服务的高可用方式;
keepalived的目的是模拟路由器的双机[前端]
heartbeat的目的是用户service的双机[服务]
lvs的高可用建议用keepavlived
业务的高可用用heartbeat
VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。 Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。
测试环境如下
两台物理服务器和一个虚拟服务器(vip):
master:redhat 6.5 eth1 192.168.1.105
backup: redhat 6.5 eth1 192.168.1.106
vip: 192.168.1.100
测试环境的网络图如下:
+---------------------------VIP(192.168.1.100)----------------------+
| |
| |
Server[master]<----------------keppalived------------------>server[BACKUP]
eth0:192.168.1.105 eth0:192.168.1.106
节点A 192.168.1.105(主节点), 节点B 192.168.1.106(备用节点),虚拟IP(对外提供服务的IP 192.168.1.100)
在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。
当主节点不可用时,备用节点接管虚拟IP(即虚拟IP漂移至节点B),提供正常服务。
keepalived的原理可以这样简单理解:
keepalived安装在两台物理服务器上,并相互监控对方是否在正常运行。
当节点A正常的时候:节点A上的keepalived会将下面的信息广播出去:
192.168.1.100 这个IP对应的MAC地址为节点A网卡的MAC地址
图中的其它电脑如客户端和NodeB会更新自己的ARP表,对应192.168.8.100的MAC地址=节点A网卡的MAC地址。
当节点A发生故障的时候,节点B上的keepalived会检测到,并且将下面的信息广播出去:
192.168.1.100 这个IP对应的MAC地址为节点B网卡的MAC地址
图中的其它电脑如客户端会更新自己的ARP表,对应192.168.1.100的MAC地址=节点B网卡的MAC地址。
配置如下:
>/etc/keepalived/keepalived.conf 清除原配置文件内容。
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
1335234172@qq.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id wyl01
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 55
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24 dev eth0 label eth0:1
}
}
保存退出。
配置备节点,主备节点配置大致相同,只需更改:
router_id wyl01
state MASTER
priority 100
为:
router_id wyl02
state BACKUP
priority 99
保存即可。
说明:
! Configuration File for keepalived
global_defs {
notification_email {
1335234172@qq.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id wyl01 id为wyl01必须唯一,不同的keepalived.conf此处的ID必须唯一
}
vrrp_instance VI_1 { 实例名为VI_1,相同实例的备节点要和这个名字相同。
state MASTER 节点状态为MASTER 备节点状态应该为BACKUP
interface eth0 通讯接口为eth0
virtual_router_id 55 实例ID为55 keepalived.conf 里唯一。
priority 100 优先级为100,备节点的优先级必须比这个低
advert_int 1 通讯检查时间间隔为1s
authentication {
auth_type PASS PASS为认证类型,此参数主备节点必须相同
auth_pass 1111 密码1111 准备节点必须相同
}
virtual_ipaddress {
192.168.1.100/24 dev eth0 label eth0:1
}
}
虚拟ip即vip为192.168.1.100,子网掩码为24,绑定接口为eth0 别名为eth0:1 次参数准备节点相同
启用服务主备keepalived ,和nginx :
/etc/init.d/keepalived start
service nginx start
查看备节点ip :ip arrd |grep eth0:1
显示有记录,查看备节点显示无此记录
如果备节点中出现eth0:1说明keepalived 配置不正常。高可用裂脑了,可逐步排除。
浏览器访问192.168.1.100 显示正常。
测试主备切换
停到主节点,理论:切换到备服务
service keepalived stop
查看备节点ip :ip addr |grep eth0:1
备节点显示正常,浏览器测试:ok
测试2
重新开启主节点 理论:备接节点vip失效,主节点重新接管。
service keepalived start
查看主节点ip 浏览器访问
显示正常。
查看备节点ip
ip显示正常。
Keepalived 主备单实例实验完结。
keepalived 双实例双主模式配置
keepalived 双主模式原理 :A业务在wyl01上是主模式。在wyl02上是备模式。而B业务,在wyl01上是备模式,在wyl02上是主模式。配置只需要在单实例的基础上增加一个vrrp_instance VI_2实例即可。
在wyl01上配置如下:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
1335234172@qq.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id wyl01
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 55
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24 dev eth0 label eth0:1
}
}
vrrp_instance VI_2 {
state BACKUP
interface eth0
virtual_router_id 55
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.10/24 dev eth0 label eth0:2
}
}
保存退出即可。
在wyl02配置如下:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
1335234172@qq.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id wyl02
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 55
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24 dev eth0 label eth0:1
}
}
vrrp_instance VI_2 {
state MASTER
interface eth0
virtual_router_id 55
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.10/24 dev eth0 label eth0:2
}
}
保存退出即可。
启动keeplived服务测试成功。
RRP虚拟路由冗余协议简介
路由中VRRP工作工作原理:
虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,
1.路由器开启VRRP功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为主用路由器,优先级低的成为备用路由器。主用路由器定期发送VRRP通告报文,通知备份组内的其他路由器自己工作正常;备用路由器则启动定时器等待通告报文的到来。
2。在抢占方式下,当主用路由器收到VRRP通告报文后,会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级,则成为主用路由器;否则将保持备用状态。(在非抢占方式下,只要主用路由器没有出现故障,备份组中的路由器始终保持主用或备用状态,备份组中的路由器即使随后被配置了更高的优先级也不会成为主用路由器。)
3.如果备用路由器的定时器超时后仍未收到主用路由器发送来的VRRP通告报文,则认为主用路由器已经无法正常工作,此时备用路由器会认为自己是主用路由器,并对外发送VRRP通告报文。备份组内的路由器根据优先级选举出主用路由器,承担报文的转发功能。
VRRP它是通过竞选机制将路由的任务交给某台VRRP路由器的。实现虚拟路由功能的。
VRRP 采用多播的方式默认多播地址:224.0.0.18.实现高可用之间通讯的。
keepalived 工作原理
keepalived是通过vrrp进行通信的,vrrp通过竞选机制来确定主备的,主的优先级高于备。因此工作中主会优先获得所有资源。备节点处于等待状态。当主宕掉后,备节点收不到报文就会重新参与竞选,优先级最高的则接管主节点的资源。顶替主节点对外 服务。
在keeplived服务对之间,只有作为主的服务器会一直发送VRRP广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即备监听不到主发送的广播包文时,就会启动相关服务接管资源。保证业务的连续性。
HA(High available)-Keepalived高可用性集群(双机热备)单点实验-菜鸟入门级的更多相关文章
- Nginx+keepalived 脚本安装主从双机热备自动切换解决方案
Nginx+keepalived 脚本安装主从双机热备自动切换解决方案 2013-07-02 19:24:13 标签:filesnginx keepalived 原创作品,允许转载,转载时请务必以超链 ...
- ansible自动部署Keepalived实现Nginx服务双机热备
脚本实现通过ansible-playbook自动化安装Keepalived和配置,主要解决问题如下: Keepalived自动化安装: keepalived_vrid配置,自动根据vip获取最后一段作 ...
- 使用keepalived监控tomcat 达到双机热备
通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务. 当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.下面来以keepalived结合to ...
- KeepAlived+HaProxy+MyCat+Percona双机热备PXC集群
一.搭建PXC集群 1.环境:centos7+PXC5.7.21+mycat1.6.5 2.卸载mariadb rpm -qa | grep mariadb* yum -y remove mariad ...
- spark、standalone集群 (2)集群zookeeper 热备
测试 cmd spark-examples-1.6.0-hadoop2.6.0.jar spark 2.0以后 就没有这个 jar.需要下载 ./bin/spark-submit -- ...
- keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群
本章笔者亲自动手,使用LVS技术实现实现一个可以支持庞大访问量.高可用性.高伸缩性的服务器集群 在读本章之前,可能有不少读者尚未使用该技术,或者部分读者使用Nginx实现应用层的负载均衡.这里大家都可 ...
- 物联网架构成长之路(9)-双机热备Keepalived了解
1. 前言 负载均衡LB,高可用HA,这一小结主要讲双机热备方案保证高可用.这里选择Keepalived作为双机热备方案,下面就对具体的配置进行了解.2. 下载Keepalived wget http ...
- oracle 双机热备,oracle dataguard 和oracle rac的区别和联系(转)
Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目 ...
- 两台linux利用heartbeat+drbd 完美实现双机热备
一直想做基于linux的双机热备,一直没有时间和机会.一直以为只要做双机热备的实验就必须两台机器外接一个存储.甚至一个月以前在学习keepalived的时候还在琢磨keepalvied去掉哪些条件可以 ...
随机推荐
- 渲染引擎之Camera
Camera, 在游戏渲染引擎里面, 如果摄影师的眼睛, 它决定了观众可以看到的游戏内容.从3D技术角度讲,Camera就是如何计算视图矩阵view matrix的模块(这里不讨论透视的方法),无论是 ...
- 向JS对象添加和删除事件
this.removeEventListener = function (obj, ename, func) { var store = obj[this.addEventListener.pre + ...
- ajax json 动态传值
<a href="#" onclick="getRightInfo(${v.ctid})"></a> <div id=" ...
- gitd模式-主从备份恢复
主从节点分配: 192.168.1.100 master binlog server读取节点 192.168.1.101 slave 备份节点 备注:binlog server从master节点备份b ...
- 开发实时壁纸(Live Wallpapers)
所谓实时壁纸,就是指手机桌面不再是简单的图片,而是运行中的动画,这个动画是由程序实时绘制的,因此被称为实时壁纸. 为了开发实时壁纸,Android提供了WallpaperService基类,实时壁纸的 ...
- 微信、QQ浏览器X5内核问题汇总
一. 资料汇总 1.前端H5调起QQ浏览器的总结:http://km.oa.com/group/22486/articles/show/210189?kmref=search 2.Android We ...
- js获取页面宽度高度及屏幕分辨率
网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...
- find_first_of()和 find_last_of() 【获取路径、文件名】
find_first_of()和 find_last_of() [获取路径.文件名](2011-06-11 12:44:46)转载▼标签: 杂谈 分类: c string 类提供字符串处理函数,利用 ...
- mysql之存储过程
一.存储过程 迄今为止,使用的大多数 SQL语句都是针对一个或多个表的单条语句.并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成.例如,考虑以下的情形. 1. ...
- 2、Linux系统root用户忘记密码的重置方式
.界面按空格暂停,按E .找到UTF-,在后面空格后输入init=/bin/sh 然后CHRL+X启动 .进入到这个界面,输入mount -o remount,rw / .输入passwd..然后输入 ...