keepalived的介绍和安装部署

keepalived的介绍

作用

keepalived主要针对LVS群聚应用而设计的,提供故障切换和健康检查功能。在非LVS群集环境中,也可用来实现多机热备功能。

  • 故障切换:ha fallover功能,实现LB Master和Backup主机之间故障转移和自动切换

这是针对有两个负载均衡器Director同时工作而采取的故障转移措施。当主负载均衡器(MASTER)失效或出现故障时候,备份负载均衡器(BACKUP)将自动接管主负载均衡器的所有工作;一旦主负载均衡器故障修复,主负载均衡器又会接管回它原来处理的工作,而备份负载均衡器会释放master失效时它接管的工作,这时候两者恢复到之前的角色。

  • 健康检查:rs healthcheck功能。负载均衡定期检查RS的可用性决定是否给其分发请求。

当虚拟服务器中的某一个甚至是几个真实服务器同时发生故障无法提供服务时,负载均衡器会自动的将失效的服务器从转发队列中清除出去,从而保证用户的访问不受影响;当故障的服务器被修复以后,系统又会自动把它加入到转发队列,分发请求提供正常服务。

故障切换原理:

是通过VRRP(虚拟路由器冗余协议)来实现的。在keepalived Director正常工作时,主Director节点会不断的向备节点广播心跳消息,用来告诉备节点自己还活着,当主节点发生故障时,备节点就无法继续检测到主节点的心跳,进而调用自身接管程序,接管主节点的IP资源及服务。而当主节点恢复时,备节点会释放主节点故障时自身接管的IP资源及服务,恢复到原来的自身的备用角色。

安装部署

安装步骤

1.安装所必须的软件包

yum install kernel-developenssl-devel popt-devel -y

2.下载keepalived源码报,编译安装

wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
tar zxfkeepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure --prefix=/--with-kernel-dir=/usr/src/kernels/2.6.*
make && make install

编译参数:

--with-kernel-dir=DIR  指定内核文件所在目录,通常是在/usr/src/kernels/2.2*

--disable-lvs-syncd     do not use LVS synchronization daemon

--disable-lvs           do not use the LVS framework

--disable-vrrp          do not use the VRRP framework

若只想做keepalived其他服务(http,db,nginx,haproxy)高可用而不做LVS的高可用时候,可以使用上面三个参数进行禁用

keepalivedhi安装完之后,若安装路径不是指定的根路径,则为了操作方便,需要把生成的文件拷贝到系统常用的目录中

提示:当执行./configure之后出现下面这种情况时,表示成功

Keepalived configuration

------------------------

Keepalived version       : 1.2.2

Compiler                 : gcc

Compiler flags           : -g -O2

Extra Lib                : -lpopt -lssl -lcrypto

Use IPVS Framework       : No   #LVS功能

IPVS sync daemon support :No        #LVS功能

Use VRRP Framework       : Yes      #VRRP功能

Use Debug flags          : No

由于本实验只是测试keepalived双机热备,没装LVS(ipvsadm),所以会提示NO

若要都为yes时需要先安装ipvsadm

下载安装ipvsadm

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

ln -sfkernels/2.6.32-358.el6.x86_64/ /usr/src/linux

tar zxf ipvsadm-1.24.tar.gz

cd ipvsadm-1.24

make && make install

配置文件详解

! Configuration File forkeepalived

global_defs {

notification_email {        #指定邮件的目的地址

[email protected]

[email protected]

[email protected]

}

[email protected]

smtp_server 192.168.200.1           #指定smtp服务器地址

smtp_connect_timeout 30

router_id LVS_MASTER       #指定本机ID

}

全局定义部分:主要设置keepalived的通知机制和表示

第7--14行是email通知参数。作用:当LVS发生切换或RS等有故障时,就会发邮件报警。

第15行lvs负载均衡的表示(router_id),在一个局域网内,它必须是唯一的

vrrp_instance VI_1 {    定义VRRP热备实例

state MASTER

interface eth0

virtual_router_id 51   #虚拟路由标识

priority 100    #设置优先级。用于确定那个是主,备

advert_int 1     #通告间隔描述即心跳 

nopreempt        #非抢占(因为默认如果master挂的时候,backup会顶上,当master再好的时候,会再切回去,这样就会造成两次断开,加上nopreempt的时候,及时master又好了,依旧不会切换,但是要注意两个state 都要是backup)

 

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {              #设置虚拟IP类似LVS中的VIP

172.16.254.111

192.168.254.111

}

VRRP定义模块                                

第17行为VRRP实例vrrp_instance。每个VRRP实例可以认为是一个keepalived实例,在配置中可以存在多个实例                       

第18行实例状态,只有MASER和BACKUP两种状态,并且需要大写。      

interface 通信接口,设备对外提供服务的网卡。注意:lvs_sync_daemon_interface是用来设置负载均衡器之间监控的接口。                     

virtual_router_id这个标识是一个数字,同一个VRRP实例中必须唯一。每个热备组中需要保持一致。                              

配置多实例的时候只需要把第17-32行复制一份,修改VRRP实例名字等

virtual_server 192.168.200.100 80 {    #VIP 端口

delay_loop 3     #健康检查时间间隔

lb_algo rr      #lvs调度算法rr|wrr|lc|wlc|lblc|sh|dh

lb_kind NAT      #负载均衡转发规则NAT|DR|RUN

nat_mask 255.255.255.0   #nat 掩码

persistence_timeout 50   #会话保持时间

protocol TCP       #使用的协议

sorry_server<IPADDR> <port>     #备用机,所有realserver失效后启用

real_server 192.168.201.100 443 {       #RIP 端口

weight 1      #默认为1,0为失效

inhibit_on_failure   #在服务器健康检查失效时,将其设为0,而不是直接从ipvs中删除

notify_up   脚本(绝对路径)      #在检测到server up后执行脚本

notify_down 脚本(绝对路径)       #在检测到server down后执行脚本

SSL_GET {     #健康检查的名字

url {

path /

digest ff20ad2481f97b1754ef3e12ecd3a9cc #检查url,可以指定多个

status_code 200  #检查的返回状态码

}

url {

path /mrtg/

digest 9b3a0c85a887a256d6939da88aabd8cd

}

connect_timeout 3      #连接超时时间

nb_get_retry 3  #重连次数

delay_before_retry 3  #重连间隔时间

connect_port 80 #健康检查的端口的端口

}

}

}

启动并测试

1.keepalived启动

keepalived会自动生成启动文件,只需要附加执行权限即可

chmod a+x/etc/init.d/keepalived
service keepalived start
chkconfig keepalived on

2.查看生成的虚拟IP,并测试

主:

[[email protected] ~]# ip add showdev eth0

2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen1000

link/ether 00:0c:29:f3:4e:52 brdff:ff:ff:ff:ff:ff

inet 192.168.1.110/24 brd 192.168.1.255scope global eth0

inet 192.168.1.250/32 scope global eth0

inet6 fe80::20c:29ff:fef3:4e52/64 scopelink

valid_lft forever preferred_lft forever

备:

[[email protected] ~]#  ip add show dev eth0

2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen1000

link/ether 00:0c:29:15:20:bb brdff:ff:ff:ff:ff:ff

inet 192.168.1.109/24 brd 192.168.1.255scope global eth0

inet 192.168.1.250/32 scope global eth0

inet6 fe80::20c:29ff:fe15:20bb/64 scopelink

valid_lft forever preferred_lft forever

比较可以看出,现在虚拟ip在主(MASTER)上生成。

现在模拟主的eth0宕机,继续查看

主:

[[email protected] master ~]# ifdown  eth0

[[email protected] master ~]# ip add showdev eth0

2: eth0:<BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000

link/ether 00:0c:29:f3:4e:52brd ff:ff:ff:ff:ff:ff

备:

[[email protected] backup ~]#  ip add show dev eth0

2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen1000

link/ether 00:0c:29:15:20:bb brdff:ff:ff:ff:ff:ff

inet 192.168.1.109/24 brd 192.168.1.255scope global eth0

inet 192.168.1.250/32 scope global eth0

inet6 fe80::20c:29ff:fe15:20bb/64 scopelink

valid_lft forever preferred_lft forever

而同时去ping虚拟ip,会发现中断一下之后会继续能ping通。(下面截图是在虚拟环境中,所以会有延迟,真实环境会是瞬间就完成切换)

恢复主master

主:

[[email protected] master ~]# ifup eth0

正在决定 eth0 的 IP 信息...完成。

[[email protected] master ~]# ip add showdev eth0

2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen1000

link/ether 00:0c:29:f3:4e:52 brdff:ff:ff:ff:ff:ff

inet 192.168.1.250/32 scope global eth0

inet 192.168.1.110/24 brd 192.168.1.255scope global eth0

inet6 fe80::20c:29ff:fef3:4e52/64 scopelink

valid_lft forever preferred_lft forever

备:

[[email protected] backup ~]# ip add showdev eth0

2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen1000

link/ether 00:0c:29:15:20:bb brdff:ff:ff:ff:ff:ff

inet 192.168.1.109/24 brd 192.168.1.255scope global eth0

inet6 fe80::20c:29ff:fe15:20bb/64 scopelink

valid_lft forever preferred_lft forever

会发现,虚拟IP重新回到主上。ping包也是丢了一个后立刻就又通了

时间: 2024-10-15 06:07:43

keepalived的介绍和安装部署的相关文章

Storm介绍及安装部署

本节内容: Apache Storm是什么 Apache Storm核心概念 Storm原理架构 Storm集群安装部署 启动storm ui.Nimbus和Supervisor 一.Apache Storm是什么 Apache Storm是自由开源的分布式实时计算系统,擅长处理海量数据,适用于数据实时处理而非批处理. 批处理使用的大多是鼎鼎大名的hadoop或者hive,作为一个批处理系统,hadoop以其吞吐量大.自动容错等优点,在海量数据处理上得到了广泛的使用.但是,hadoop不擅长实时

Kafka介绍及安装部署

本节内容: 消息中间件 消息中间件特点 消息中间件的传递模型 Kafka介绍 安装部署Kafka集群 安装Yahoo kafka manager kafka-manager添加kafka cluster 一.消息中间件 消息中间件是在消息的传输过程中保存消息的容器.消息中间件在将消息从消息生产者到消费者时充当中间人的作用.队列的主要目的是提供路由并保证消息的传送:如果发送消息时接收者不可用,消息对列会保留消息,直到可以成功地传递它为止,当然,消息队列保存消息也是有期限的. 二.消息中间件特点 1

Zabbix介绍及安装部署

.    zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. zabbix由2部分构成,zabbix server与可选组件zabbix agent zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris,

hue框架介绍和安装部署

大家好,我是来自内蒙古的小哥,我现在在北京学习大数据,我想把学到的东西分享给大家,想和大家一起学习 hue框架介绍和安装部署 hue全称:HUE=Hadoop User Experience 他是cloudera公司提供的一个web框架,和其他大数据框架整合,提供可视化界面 hue的架构 1.hue UI:hue提供一个可视化的web界面 2.hue server:hue的服务器,对外提供一个web的访问 3.hue db:存储整合框架的信息 1.Hue的介绍 HUE=Hadoop User E

3_HA介绍和安装部署

一.hadoop 2.x产生背景 1.hadoop 1.x中hdfs和mr在高可用和扩展性等方面存在问题.2.hdfs存在的问题:NN单点故障,难以应用于在线场景:NN压力过大,内存受限,影响系统扩展性.3.mr存在的问题:1.x难以支持除mr之外的计算框架,如spark和storm(mr一般得到结果时间较长,storm和spark可以很快得到结果). 二.hadoop 1.x与hadoop2.x区别 1.2.x由hdfs.mr和yarn三个分支构成,yarn是分布式的资源管理器(资源包括内存,

Elasticsearch介绍及安装部署

本节内容: Elasticsearch介绍 Elasticsearch集群安装部署 Elasticsearch优化 安装插件:中文分词器ik 一.Elasticsearch介绍 Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard的方式保证数据安全,并且提供自动resharding的功能,加之github等大型的站点也采用 Elasticsearch作为其搜索服务. 二.Elasticsearch集群安装部署 1. 环境信息 主机名

SharePoint Online 开发篇:node.js和npm介绍和安装部署

Blog链接:https://blog.51cto.com/13969817 过去的几年中,出现的最重要的开发平台是Node.js和基于npm的开发,SharePoint Framework是这种开发方法的一个示例,本文我们来了解下Node.js.npm和Node Package Manager 是什么? Node.js,是一个建立在Google Chrome JavaScript的引擎(V8引擎)上的服务器端平台.JavaScript引擎的性能已经提高了很多,取决于你在做什么,事实上,它们的性

hadoop(1)_HDFS介绍及安装部署

一.hadoop简介 1.hadoop的初衷是为了解决Nutch的海量数据爬取和存储的需要,HDFS来源于google的GFS,MapReduce来源于Google的MapReduce,HBase来源于Google的BigTable.hadoop后被引入Apache基金会. 2.hadoop两大核心设计是HDFS和MapReduce,HDFS是分布式存储系统,提供高可靠性.高扩展性.高吞吐率的数据存储服务;MapReduce是分布式计算框架,具有易于编程.高容错性和高扩展性等优点. 3.hado

高性能集群软件Keepalived的介绍以及安装与配置

Keepalived介绍: Keepalived是Linux下一个轻量级的高可用解决方案:起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态.它根据TCP/IP参考模型的第三.第四和第五层交换机机制检测每个服务节点的状态,如果某个服务节点出现异常,或工作出现故障,Keepalived将检测到,并将出现故障的服务节点从集群系统中剔除,而在故障节点恢复正常后,Keepalived又可以自动将此服务节点重新加入服务器集群中,这些工作全部自动完成,不需要人工干涉,需要人工完成的只是修复出现故