Keepalived

工作原理

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

TCP/IP四层模型

具体实现及ARP协议简单了解

在实际应用中,当我们想给目标主机发送消息时,需要首先通过DNS获取到目的主机的IP地址;但在实际网络的链路上传送数据帧时,最终还是必须使用该主机的硬件地址。但是怎么知道对方MAC地址呢?这就是ARP需要做的事,通过IP地址解析到对方的MAC地址。同时在每个主机上都设有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址对应硬件地址的列表,都是通过发送ARP报文解析到的

也就是说是通过更改ip对应的MAC地址 实现动态切换

在虚拟机上简单演示

**Ubuntu 16.04.3 LTS**

1.安装Keepalived

    apt-cache pkgnames | grep keepalived
apt-get install keepalived

2.安装ntp服务 保证时间一致性

3.分别 查看网卡 并 绑定虚拟IP

ip a

## 编辑interfaces文件
auto ens33:0
iface ens33:0 inet static
address 192.168.232.100
netmask 255.255.255.0

4.查看虚拟ip 对应的MAC地址

ifconfig

##server1 ens33:0   Link encap:Ethernet  HWaddr 00:0c:29:f2:58:16  inet addr:192.168.232.100

##server2 ens33:0   Link encap:Ethernet  HWaddr 00:0c:29:8e:11:5e  inet addr:192.168.232.100

5.编辑keepalived

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
##Master配置

vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 103
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.232.100
}
} ##Slave配置
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 10
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.232.100
}
}
state 可以是MASTER或BACKUP,不过当其他节点keepalived启动时会将priority比较大的节点选举为MASTER,因此该项其实没有实质用途

interface 节点固有IP(非VIP)的网卡,用来发VRRP包

virtual_router_id 取值在0-255之间,用来区分多个instance的VRRP组播

priority 用来选举master的,要成为master,那么这个选项的值最好高于其他机器50个点,该项取值范围是1-255(在此范围之外会被识别成默认值100)

advert_int 发VRRP包的时间间隔,即多久进行一次master选举(可以认为是健康查检时间间隔)

authentication 认证区域,认证类型有PASS和HA(IPSEC),推荐使用PASS(密码只识别前8位)

virtual_ipaddress 虚拟ip

6.启动Keepalived服务 并查看系统日志

tail -f syslog

Master状态

ubuntu Keepalived_vrrp[3892]: VRRP_Instance(VI_1) Transition to MASTER STATE
ubuntu Keepalived_vrrp[3892]: VRRP_Instance(VI_1) Received lower prio advert, forcing new election
ubuntu Keepalived_vrrp[3892]: VRRP_Instance(VI_1) Entering MASTER STATE

Slave状态

Keepalived_vrrp[4139]: VRRP_Instance(VI_1) Entering BACKUP STATE

7.在Slave上传使用tcpdump查看arp广播

tcpdump vrrp
IP 192.168.232.103 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 51, prio 103, authtype simple, intvl 1s, length 20

8.在另外一台Server上 ping 虚拟ip

ping 192.168.232.100

root@ubuntu:/home/guolin# arp
Address HWtype HWaddress Flags Mask Iface
192.168.232.100 ether 00:0c:29:8e:11:5e C ens38

可以看到MAC地址是 00:0c:29:8e:11:5e

9.停止掉Master服务

通过查看日志可以看到 Slave转成Master状态了

ubuntu Keepalived_vrrp[4139]: VRRP_Instance(VI_1) Transition to MASTER STATE
Jan 28 17:44:36 ubuntu Keepalived_vrrp[4139]: VRRP_Instance(VI_1) Entering MASTER STATE

10.再次在另外一台Server 上ping 虚拟ip

ping 192.168.232.100
PING 192.168.232.100 (192.168.232.100) 56(84) bytes of data. arp
Address HWtype HWaddress Flags Mask Iface
192.168.232.100 ether 00:0c:29:f2:58:16 C ens38

可以看到MAC地址已经变成了 00:0c:29:f2:58:16

高可用技术之keepalived原理简单了解的更多相关文章

  1. 分享MYSQL中的各种高可用技术(源自姜承尧大牛)

    分享MYSQL中的各种高可用技术(源自姜承尧大牛) 图片和资料来源于MYSQL大牛姜承尧老师(MYSQL技术内幕作者) 姜承尧: 网易杭州研究院 技术经理 主导INNOSQL的开发 mysql高可用各 ...

  2. 分享MYSQL中的各种高可用技术

    分享MYSQL中的各种高可用技术 图片和资料来源于姜承尧老师(MYSQL技术内幕作者) mysql高可用各个技术的比较 数据库的可靠指的是数据可靠 数据库可用指的是数据库服务可用 可靠的是数据:例如工 ...

  3. Linux 高可用开源方案 Keepalived VS Heartbeat对比

    1)Keepalived使用更简单:从安装.配置.使用.维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat2.1.4后拆分成3个子项目,安装.配置.使用都 ...

  4. 转://Oracle 高可用技术与云基础架构

    众所周知Oracle云基础架构已经在越来越多的行业里应用.大家了解云基础架构是如何演进的嘛?可能有人会说Oracle高可用技术是组成云架构的基础,那它们的关系是怎么样的?大家又了解Oracle高可用技 ...

  5. (转)Oracle与DB2在数据库高可用技术上的相同与差异探讨

    原文:http://www.talkwithtrend.com/Article/178339 数据库建设过程中,高可用是每一个企业数据中心数据库建设过程中至关重要的一个关注点,直接关系到业务连续性和稳 ...

  6. Redis主从复制+Keepalived+VIP漂移实现HA高可用技术之详细教程

    1.大家可以先看我的单台Redis安装教程,链接在此点击Redis在CentOS for LInux上安装详细教程 2.第一台redis配置,是正常配置.作为MASTER主服务器,第二台redis的配 ...

  7. redis主从+keepalived实现高可用技术

    Redis是我们当下比较流行使用的非关系数据库,可支持多样化的数据类型,多线程高并发支持,redis运行在内存拥有更快的读写.因为redis的表现如此出色,如何能保障redis在运行中能够应对宕机故障 ...

  8. MySQL高可用架构之MHA 原理与实践

    MHA简介 关于MHA MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automating master failover 功能.MHA在监控到mas ...

  9. 【独家】终生受用的Redis高可用技术解决方案大全

    最近很多朋友向我咨询关于高可用的方案的优缺点以及如何选择合适的方案线上使用,刚好最近在给宜人贷,光大银行做企业内训的时候也详细讲过,这里我再整理发出来,供大家参考,如有不妥之处,欢迎批评指正,也欢迎推 ...

随机推荐

  1. IT兄弟连 JavaWeb教程 重定向

    HTTP协议规定了一种重定向机制,重定向的运作流程如下: ●  用户在浏览器端输入特定URL,请求访问服务器端的某个组件. ●  服务器端的组件返回一个状态码为302的响应结果,该响应结果的含义为: ...

  2. 跟我一起玩Win32开发(11):使用控件——先来耍一下按钮

    用户通过控件与应用程序交互,在吹牛之前,先介绍一个工具,这是官方的工具,使用它,你可以预览常用控件的外观.样式,以及对控进行操作时接收和发送哪些消息.下载地址如下: http://www.micros ...

  3. websocket实现群聊

    server # @File: 群聊 from flask import Flask, render_template, request from geventwebsocket.handler im ...

  4. php输出中文字符

    中文字符不可以使用imagettftext()函数在图片中直接输出,如果要输出中文字符,需要先使用iconv()函数对中文字符进行编码,语法格式如下:string iconv ( string $in ...

  5. C#方法拓展

    作用: “扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.” 要求: 1.拓展方法必须是在一个非嵌套.非泛型的静态类中定义.2.他至少有一个参数.3. ...

  6. PKU_campus_2018_A Wife

    思路: 题目链接http://poj.openjudge.cn/practice/C18A/ 先说一个结论,每一天要么7要么0,由此提供一种状态压缩dp的解法. 实现: #include <bi ...

  7. jQuery选择器之表单对象属性筛选选择器

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content ...

  8. 【学习笔记】Sass入门指南

    本文将介绍Sass的一些基本概念,比如说“变量”.“混合参数”.“嵌套”和“选择器继承”等.著作权归作者所有. 什么是Sass? Sass是一门非常优秀的CSS预处语言,他是由Hampton Catl ...

  9. SIRI课程表

    wen 周一@0@{今天没课哦}周一 周二今天共一节课 第2节,可编程控制器应用,11号教学楼1 0 3房间 周二 周三今天共三节课 第二节,过程控制系统,2号楼2 1 0房间,第三节机械制造技术11 ...

  10. webuploader上传工具

    http://fex.baidu.com/webuploader/getting-started.html#显示用户选择 Html部分 首先准备dom结构,包含存放文件信息的容器.选择按钮和上传按钮三 ...