简单写一写keepalived

一、keepalived简介:

1、什么是keepalived?

keepalived起初是为lvs设计的而保证集群高可用的一个服务软件,用来检测服务器的状态以及loadbbalance主机和backup主机之间的failover(故障切换)防止单点故障。在集群当中如果有一台服务器宕机或工作出现故障,keepalived将检测到并将有故障的服务器踢出集群,同时让其他服务器来代替该服务器的工作,当服务器恢复正常后keepalived自动将该服务器加入到集群中,完全不需要人工干涉,只需要做好相关配置,并修复有故障的服务器即可。

2、keepalived的工作状态:

keepalived是以vrrp(virtual router redundancy protocol)协议,即虚拟路由冗余协议实现的。vrrp是实现路由器高可用的协议,将多台提供相同服务的路由器组成一个路由组,组内有一个主路由和多个备份路由组成。master使用组内的VIP(虚拟IP)对外提供服务,master使用组播地址224.0.0.18向backup发送vrrp通告。当backup收不到master发送的vrrp通告时,就认为master宕机了。通过vrrp的优先级在backup中重启选举一个优先级高的当做master对外提供服务。这样就保证了路由的高可用。

keepalived是一个类似于layer3, 4 & 7交换机制的软件,即IP/TCP协议栈的IP、TCP及应用层。

layer3工作原理:此时keepalived工作在IP/TCP协议栈的中IP层。以服务器的IP地址作为服务器工作正常与否的标准,master通过组播定期发送ICMP数据包,如果发现有返回异常的IP,keepalived将认为这台服务器失效,并提出服务器群

layer4工作原理:此时keepalived工作在IP/TCP协议栈的中TCP层。以服务提供的TCP端口的状态来决定服务器的工作是否正常,如果检测到端口监听异常,则keepalived将把这台服务器从服务器群中踢出。

layer7工作原理:此时keepalived工作在IP/TCP协议栈的中应用层。相比较来说比layer3、layer4要负责,网络占用带宽也要大一些,使用也相对较少。keepalived将根据用户自己的设定配置检查服务程序是否正常,如果跟用户设定不相符,则将视为服务器存在异常并将踢出服务器群。

4、keepalived的模块

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

5、keepalived的配置文件

一个功能比较完整的keepalived 的配置文件,其配置文件keepalived.conf 可以包含三个文本块:全局定义块(global_defs)、VRRP实例定义块(vrrp_instance)及虚拟服务器定义块(virtual_server)。全局定义块和虚拟服务器定义块是必须的,如果在只有一个负载均衡器的场合,就不须VRRP 实例定义块。

二、部署keepalived服务

1、在编译安装keepalived之前,首先安装keepalived所需要依赖的库文件:

[[email protected] ~]# yum -y install popt-devel  kernel-devel  openssl-devel gcc-c++ libnl-devel libnl3-devel  libnfnetlink-devel

2、下载keepalived源码压缩包。:

下载地址: http://www.keepalived.org/software/keepalived-1.3.5.tar.gz

[[email protected] ~]# wget  http://www.keepalived.org/software/keepalived-1.3.5.tar.gz

3、安装keepalived:

在编译的时候使用指定的内核库并指定安装目录为/目录可以省去很多麻烦的链接。这样就可以在安装完成之后直接使用keepalived服务了

[[email protected] ~]# tar zxf keepalived-1.3.5.tar.gz
[[email protected] ~]# cd keepalived-1.3.5
[[email protected] keepalived-1.3.5]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/3.10.0-514.21.1.el7.x86_64/include/
[[email protected] keepalived-1.3.5]# make
[[email protected] keepalived-1.3.5]# make install

4.安装完成。

keepalived配置文件位置:/etc/keepalived 下的keepalived.conf 目录下有samples子目录为各种模板文件。 执行程序位置:/usr/sbin/keepalived  。启动脚本已经自动添加系统了。可以直接使用systemctl命令执行启动。

时间: 2024-10-03 21:50:05

简单写一写keepalived的相关文章

Swift 函数调用到底写不写参数名

最近真正开始学 Swift,在调用函数的时候遇到一个问题:到底写不写函数名? 我们来看两个个例子: // 1 func test(a: Int, b: Int) ->Int { return a + b } test(a: 1, b: 1) // (A) test(1, b:1) // (B) //2 class Test { var name: String var age: Int init(name: String, age: Int) { self.name = name self.ag

★★★★★★★★★★★★★★★★★★啊好烦,写代码写的要吐血了哦

全数字好域名疯狂抢99%成功率|域名注册|已备案未注册|到期删除过期域名查询|-尽在(爱酷名_ikuMing.com) 啊好烦,写代码写的要吐血了哦 写代码真的好痛苦啊,快坚持不下去了,谁来拯救我一下哦

2014-5-27 今天我想写一写“思杨是个小吃货”

今天我想写一写"思杨是个小吃货" 哈哈,和宝宝在一起总是很开心,很愉快.虽然我的能量和他的不在一个Level上.人家是啥时候都精力旺盛而且不知疲惫. 昨天奶奶炒了个西葫芦,思杨指着其中一片说 给我这个. 我就随便给他夹了个小点的.他就嘟着嘴不吃,而且哭个嗓子说这个,这个... 哈哈,经奶奶提醒我才明白,他的手指的是一片大的,他要那个大点的.我给他的太小了.于是,我夹大的给他,他开心了 哈哈. 其实爸爸是觉得小的入味. 最近好像有个苗苗小朋友去家里玩.思杨老实说这是我的,那是我的.哎 ,

script脚本中写不写$(document).ready(function() {});的区别

$(document).ready() 里的代码是在页面内容都加载完才执行的,如果把代码直接写到script标签里,当页面加载完这个script标签就会执行里边的代码了,此时如果你标签里执行的代码调用了当前还没加载过来的代码或者dom,那么就会报错,当然如果你把script标签放到页面最后面那么就没问题了,此时和ready效果一样. $(document).ready(function(){})可以简写成$(function(){}); 点击段落后,此段落隐藏: <html> <head

回写盘写速度被限速为10M左右

问题现像如下图所示: 用hd-speed等测试虚拟盘速度都能达到90M/s左右,但复制文件到虚拟盘速度最高只有10M/s 原因:由于客户机开机加载这个随机驱动和随机进程后,会对磁盘启动进程等有扫描检查的动作,并且对网络有限制,所以会就出现回写盘写速度被限制10M左右,目录为随机目录如下图所示: 解决方法: 开启驱动过滤对随机驱动进行拦截 原文地址:https://www.cnblogs.com/bingxing/p/8454527.html

利用JAVA线程安全队列简单实现读者写者问题。

常见的操作系统教科书中,会使用互斥锁来实现读者线程和写者线程的同步问题,但是在JDK5推出线程安全队列之后,将该问题变得异常简单. java.util.concurrent.ConcurrentLinkedQueue 是线程安全的非阻塞队列,其实很容易想到,非阻塞队列当线程需要等待的时候,则不会阻塞等待,而是直接根据情况返回. java.util.concurrent.LinkedBlockingQueue 是线程安全的阻塞队列,该队列能够在很多情况下对线程进行阻塞,比如队列为空时调用take(

如何写一个简单的手写识别算法?

gesture recognizer 是比较好的解法. 洒家也有一个类似的算法,借鉴了原始手写ocr的思路来实现的.其实是写在 $1 gesture recognizer 之前的,但没有 $1 gesture recognizer 归纳得好,作者jacob还是我偶像. Realtime Gesture recognition 把所有的笔画定义了个8个方向,然后将B的笔画可以分解成一个字符串.然后当人在触摸屏上画出一个符号时,也将它分解成8个方向的字符串,最后比较两个字符串的距离就能判断出和不同符

实现简单的手写涂鸦板(demo源码)

在一些软件系统中,需要用到手写涂鸦的功能,然后可以将涂鸦的结果保存为图片,并可以将"真迹"通过网络发送给对方.这种手写涂鸦功能是如何实现的了?最直接的,我们可以使用Windows提供的GDI技术或GDI+技术来实现绘图功能.但是,要实现一个如此简单的涂鸦板,也不是那么容易的事情.幸运的是,我们可以直接使用OMCS提供的内置集成了这种功能的一个WinForm控件HandwritingPanel. HandwritingPanel控件的主要接口如下图所示: /// <summary&

【示例】教你简单用Java写一个动态更新的下拉列表(无数据库)

动态更新下拉列表 场景需求,在选择省之后出现选择的地级市名字 在之前的教程交了怎么用server配置启动 打开eclipse新建一个dynamic web projec,文件目录如下 首先看下index.html,遇到的所有问题都出现js里面.页面拥有连个下拉列表,表1为省选择,表2 为城市选择.当表1选中时,调用updateSelect函数,更新表2的option.值得注意的时DOM的结构,在取得结果时,发现如是 option.text=result[i].childNodes[0].chil