Keepalived双机热备
Keepalived双机热备
Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健检查功能,如判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。在非LVS群集环境中使用时Keepalived也可以作为热备软件使用。
Keepalived采用VRRP(virtual router redundancy protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案-----由多台路由器组成一个热备组。通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主服务器提供服务,其他服务器处于冗余状态,若当前在线的服务器失败,其他服务器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。
热备组内的每台服务器都可以成为主服务器,虚拟IP地址(VIP)可以在热备组内的服务器之间进行转移,所以也称为漂移IP地址,使用Keepalived时,漂移地址的实现不需要手动建立虚拟接口配置文件(如eth0:0),而是由Keepalived根据配置文件自动管理。
案例:负载均衡+高可用群集 (LVS-DR+HA):拓扑图如下所示
上图设计目的是用Keepalived构建高可用性的LVS负载均衡群集。使用Keepalived构建LVS群集更加简便易用,主要优势体现在:对LVS负载调度器实现热备切换,提高可用性,对WEB服务器池中的节点进行分健康检查,自动移除失败节点,恢复后再重新加入。
在基于LVS-Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,本例将以DR模式的LVS群集为基础,增加一台从负载调度器,使用Keepalived来实现主、从调度器的热备,从而构建建有负载均衡、高可用两种能力的LVS网站群集平台。
实验环境:参照上图可知每台主机网卡的IP地址,如下所示:共7台主机
VIP(虚拟IP地址):172.16.16.172/24
主调度器:eth0 172.16.16.173/24 eth1: 192.168.7.173/24
从调度器:eth0 172.16.16.174/24 eth1: 192.168.7.174/24
WEB节点1: 172.16.16.177/24 eth1: 192.168.7.177/24
WEB节点2: 172.16.16.178/24 eth1: 192.168.7.178/24
NFS共享存储:eth0 192.168.7.250/24
具体操作步骤如下:
1、LVS+keepalived高可用群集---调度器组中的主、从调度器配置(主/从),即构建高可用的LVS负载均衡群集
Keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅用来做双机热备。使用Keepalived构建LVS群集更加简便易用,主要优势体现在:对LVS负载调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效点节,恢复后再重新加入。
基于LVS+keepalived实现的LVS群集中,至少包括两台热备的负载调度器,两台以上的节点服务器。本案例以DR模式的LVS模式群集为基础。
使用 Keepalived构建LVS群集时,也需要用到ipvsadm管理工具,但大部分工作会由Keepalived自动完成,不需要手动执行ipvsadm(除了查看和监控群集以外)
查看主调度器网卡接口IP地址:
查看从调度器网卡接口IP地址:
1)主服务器的配置:
安装keepalived软件包与服务控制
在编译安装Keepalived之前,必须先安装内核开发包kernel-devel以及openssl-devel、popt-devel等支持库,除此之外,在LVS群集环境中应用时,也需要用到ipvsadm管理工具。
安装ipvsadm软件包:
编译安装Keepalived
使用指定的linux内核位置对keepalived进行配置,并将安装路径指定为根目录,这样就无需额外创建链接文件了,配置完成后,依次执行make、make install进行安装。
使用keepalived服务
执行make install操作之后,会自动生成/etc/init.d/keepalived脚本文件,但还需要手动添加为系统服务,这样就可以使用service、chkconfig工具来对keepalived服务程序进行管理了。
主服务器的配置
Keepalived服务的配置目录位于/etc/keepalived。其中keepalived.conf是主配置文件,另外包括一个子目录samples/,提供了许多配置样列作为参考。在keepalived的配置文件中,使用”global_defs {……}”区段指定全局参数。使用”vrrp_instance 实例名称 {……}”区段指定VRRP热备参数,注释文字以”!”符号开头。
相关配置及主要配置项解释如下:
! Configuration File for keepalived #!表示注释
global_defs {
notification_email {
root@example.com #接收警报的 email 地址,可以添加多个
}
notification_email_from root@localhost
smtp_server 127.0.0.1 #使用本机转发 email
smtp_connect_timeout 30
router_id LVS_DEVEL #load balancer 的标识 ID,即本服务器的名称标识
}
vrrp_instance VI_1 { #定义VRRP热备实例
state MASTER #热备状态,MASTER表示主服务器;SLAVE表示备用服务器;当有多台备用的服务器,热备状态改为 BACKUP,此状态是由 priority 的值来决定的,当前priority 的值小于备机的值,那么将会失去 MASTER 状态
interface eth0 #HA 监测网络接口即承载VIP地址的物理接口
virtual_router_id 50 #虚拟路由器的ID号。主、备机的 virtual_router_id必须相同
priority 150 #主机的优先级,数值越大优先能越高。备份机改为 50
advert_int 1 #主备之间的通告间隔秒数(心跳频率)
authentication { #认证信息,每个热备组保持一致
auth_type PASS #认证类型,主备切换时的验证
auth_pass 1111 #密码字串
}
virtual_ipaddress { #指定漂移地址(VIP),可以有多个
172.16.16.172 #HA 虚拟 ip,可加多个
}
}
virtual_server 172.16.16.172 80 { #虚拟服务器地址(VIP)、端口
delay_loop 6 #健康检查的间隔时间(秒),每隔 6 秒查询 realserver状态
lb_algo rr #lvs 调度算法,这里使用轮询
lb_kind DR #lvs 负载均衡机制,这里使用直连路由
! persistence_timeout 50 #同一 IP 的连接 50 秒内被分配到同一台 realserver
protocol TCP #用 TCP 协议检查 realserver 状态
real_server 172.16.16.177 80 { #第一个WEB节点的地址、端口
weight 1 #节点的权重
TCP_CHECK { #健康检查方式
connect_port 80 #检查的目标端口
connect_timeout 3 #故障重试秒数(即连接超时)
nb_get_retry 3 #重试延迟(即重试次数)
delay_before_retry 3 #重试间隔(秒)
}
}
real_server 172.16.16.178 80 { #第二个WEB节点的地址、端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
配置主调度器:修改keepalived.conf文件中的全局参数、热备参数、WEB服务器池配置,相关配置参数如下图:
重新启动keepalived服务
2)配置从调度器:
从调度器的配置与主调度器基本相同,也包括全局参数、热备参数、服务器池配置,只需要调整router_id、state、prority参数即可,其余内容完全相同,配置完成以后重启keepalived服务。
安装keepalived软件包与服务控制
在编译安装Keepalived之前,必须先安装内核开发包kernel-devel以及openssl-devel、popt-devel等支持库,除此之外,在LVS群集环境中应用时,也需要用到ipvsadm管理工具。
安装ipvsadm软件包:
编译安装Keepalived
使用指定的linux内核位置对keepalived进行配置,并将安装路径指定为根目录,这样就无需额外创建链接文件了,配置完成后,依次执行make、make install进行安装。
使用keepalived服务
执行make install操作之后,会自动生成/etc/init.d/keepalived脚本文件,但还需要手动添加为系统服务,这样就可以使用service、chkconfig工具来对keepalived服务程序进行管理了。
配置从调度器:修改keepalived.conf文件,只修改红线标注的参数,其他参数和主调度器的配置文件完全一样。修改的地方如下图所示:
重新启动keepalived服务
在同一个keepalived热备组内,所有服务器的keepalived配置文件基本相同。不同之处主要在于服务器的名称标识、热备状态、优先级。
服务器的名称标识(router_id):建议为每个参与热备的服务器指定不同的名称
热备状态(state):至少应有一台主服务器,状态设为MASTER;可以有多台备用的服务器,将状态设为BACKUP.
优先级(priority):数值越大则取得VIP控制权的优先级越高,回此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺VIP控制权时发生冲突。
3)测试主、从调度器:
若防火墙不关闭的话可以在input链上建规则.
iptables -I INPUT -p ip -d 224.0.0.18 -jACCEPT
注:VRRP协议的通告报文使用固定的组播地址224.0.0.18,用IP 报文作为传输协议进行协议报文的传送。
当启动keepalived服务后,实际状态为MASTER的主服务器取得VIP控制权,并将eth0接口自动添加VIP地址,通过ip命令可以查看(注意:ifconfig命令看不到)
查看主服器的eth0接口信息:
从调度器服务器上启动keepalived服务,此时主服务器仍然在线,VIP地址实际上仍然由主服务器控制,其他服务器处于备用状态,因此在备用服务器中将不会为eth0接口添加VIP地址。
此时查看从服务器的eth0接口信息:
Keepalived的日志消息保存在/var/log/messages文件中,在测试主、从故障自动切换功能时,可以跟踪此日志文件来观察热备状态的变化。以连通性测为例
在internet的测试机上执行ping 172.16.16.172 –t,(172.16.16.172为VIP地址),能够正常ping通,说明主服务器以接管VIP地址,并及时响应客户机的请求。
禁用主服务器的eth0网卡,发现ping测试会中断3~4个包即恢复正常,说明已有其他服务器接替VIP地址,并及时响应客户机的请求。
重新启用主服务器的eth0网卡,发现ping测试再次中断3~4个包即恢复正常,说明主服务器已恢复正常,并夺回VIP地址的控制权。
在这述过程中可以查看日志记录来了解MASTER、SLAVE状态的迁移记录。
2、LVS+HA ----配置负载调度器(ipvsadm)
要在主、从负载调度器主机上分别配置负载调度器,加载ip_vs模块,安装ipvsadm软件包.这里使用的是LVS-DR模式,需要调整/proc系统的内核响应参数。
在sysctl.conf添加如下内容:
详细配置参考我在前面介绍的LVS-DR的有关设置。
3、在共享存储设备主机上配置共享存储服务(这里使用NFS发布共享服务),具体操作如下:
修改/etc/exports文件,内容如下:
/opt/wwwroot 192.168.7.0/24(rw,sync,no_root_squash)
允许192.168.7.0/24网段的主机访问NFS的共享。
参考LVS+NAT方式的虚拟服务器中有关NFS的防火墙设置或将NFS服务器的防火墙规则清除。
4、LVS+HA ---配置服务器池中的WEB节点服务器(172.16.16.177和172.16.16.178)
根据所选择的群集工作模式不同(DR或NAT),节点服务器的配置也有些差异。以DR模式为例。除了需要调整/proc系统的ARP响应参数以外,还需要为虚拟接口lo:0配置VIP地址。具体参考前面有关LVS-DR的配置。所以WEB节点的配置和LVS-DR配置是一样的。
使用DR模式时,节点服务器也需要配置VIP地址,并调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免发生冲突。
调整/proc响应参数
在sysctl.conf添加如下内容:
注:上图中参数的含义:
net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
arp_ignore:定义了网卡在响应外部ARP请求时候的响应级别
0:默认值,不管哪块网卡接收到了ARP请求,只要发现本机有这个MAC都给与响应
1:总是使用最合适的网卡来响应,一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另一块网卡的,这个时候接收到ARP请求的这块网卡就一定不响应,只有发现请求的MAC是自己的才给与响应。
net.ipv4.conf.default.arp_announce= 0 net.ipv4.conf.all.arp_announce = 0
net.ipv4.conf.lo.arp_announce= 0
定义了网卡在向外宣告自己的MAC-IP时候的限制级别
有三个值:
0:默认值,不管哪块网卡接收到了ARP请求,只要发现本机有这个MAC都给与响应
1:尽量避免响应ARP请求中MAC不是本网卡的,一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另一块网卡的,这个时候接收到ARP请求的这块网卡就尽量避免响应
2:总是使用最合适的网卡来响应,一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另一块网卡的,这个时候接收到ARP请求的这块网卡就一定不响应,只有发现请求的MAC是自己的才给与响应。
执行sysctl -p使修改生效
配置虚拟IP地址(VIP)-----节点服务器1的配置
在每个节点服务器,同样需要具有VIP地址172.16.16.172,但此地址仅用作发送WEB响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚拟接口lo:0来承载VIP地址,并为本机添加一条路由记录,将访问VIP的数据限制在本地以避免通信紊乱。
修改内容如下:
//特别注意:子网掩码必须为全1
重启network脚本使修改后的IP生效。
添加VIP本地访问路由:
安装httpd,创建测试页(略,采用和NAT模式一样设置),启用httpd服务程序
安装httpd软件包,创建测试网页
修改/etc/fstab文件,实现自动挂载
其他服务器节点做相同的备配,不再重复叙述。
5、安排多台测试机,从internet中直接访问http://172.16.16.172,将能够看到由真实服务器提供的网页内容
在LVS负载调度器中,通过查看节点状态可以观察当前的负载分配情况,对于轮询算法来说,每个节点所获得的连接负载应大致相当
至此有关LVS+keepalived群集配置完毕,这样即实现了lvs负载平衡又实现了调度器的热备。
转载于:https://blog.51cto.com/dumin/1706032
Keepalived双机热备相关推荐
- 图文教程,Nginx+Keepalived(双机热备)介绍已经搭建高可用负载均衡环境
上一次分享了Nginx相关的应用场景如下: Nginx介绍以及一些应用场景说明 在实际使用,单机版的Nginx就不能满足高可用的要求了,在这种情况下,我们使用Nginx+Keepalived(双机热 ...
- 【Nginx】如何基于主从模式搭建Nginx+Keepalived双机热备环境?这是最全的一篇了!!
写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...
- Linux7双机,Centos 7 keepalived双机热备
Centos 7 keepalived双机热备 操作环境: keepalived热备份(双机热备) Centos 7系统ip地址: 192.168.80.100 --主服务器 Centos 7系统ip ...
- nginx+keepalived双机热备
简介 keepalived是一个类似于layer3, 4 & 5交换机制的软件,即可以使IP层.传输层.和应用层的服务冗余集群化.常应用于iP的虚拟化,能够实现mysql.nginx等服务的双 ...
- (11) nginx + keepalived 双机热备
转载地址: http://www.cnblogs.com/kaituorensheng/p/4889268.html 阅读目录 序 nginx keepalived 测试 问题:杀死keepaliv ...
- LVS + Keepalived 双机热备+DR模式
简介 Keepalived 起初是专门针对 LVS 设计的一款强大的辅助工具,主要用来提供故障切换和健康检查( Health Checking )功能--判断 LVS 负载调度器.节点服务器的可用性, ...
- linux启动keepalived服务,llinux企业常用服务---HA+keepalived双机热备
部署前准备: iptables和selinux没配置,关掉 挂载系统镜像作为本地yum源,修改yum文件 源码包准备keepalived-1.2.13.tar.gz 环境介绍: 2台centos6.5 ...
- keepalived 双机热备
目前项目已经采用nginx来实现负载均衡,但是nginx调度器只有一台,上次还意外的down机一次,导致整个服务应用全部瘫痪,这次准备再加一个调度器来实现站点高可用性,也就是常说的双机热备了. mas ...
- 搭建Nginx高可用集群(keepalived+双机热备)
一.Nginx高可用 首先了解一下什么是高可用,高可用是分布式系统架构中必须考虑的因素. 我们都知道,使用nginx的反向代理和负载均衡可以解决tomcat等web容器的单点故障以及高并发等问题. 反 ...
最新文章
- git命令合并分支代码
- SQL触发器实例讲解1
- 空间数据索引RTree完全解析及Java实现
- apache ignite_通过示例获取Apache Ignite Baseline拓扑
- Easy.Ajax 部分源代码, 支持文件上传功能, 兼容所有主流浏览器
- 移植MyEclipse Web项目到Eclipse变成Java Project的解决办法
- redis memcache 性能比较
- Atitit.论图片类型 垃圾文件的识别与清理 流程与设计原则 与api概要设计 v2 pbj
- 新手学编程必会的100个代码
- css实现文本溢出时显示省略号(单行)
- Python爬虫爬取中国电影票房排行榜
- 【Python】从0开始写爬虫——扒一下狗东
- 任务宿主阻止关机解决方案
- 单招学计算机好学吗,单招没被录取学什么,计算机行业
- Oracle 删除归档
- 如何完美解决catia出现-运行异常,单击“确定终止”-问题
- KERNEL32相关函数
- 复旦大学计算机音乐实验室,复旦大学 智能视觉科技实验室
- 挖掘潜力谋发展优信二手车创新脚步与时俱进不停歇
- [管理]与ERP有关的主要管理概念
热门文章
- Python正则表达式初识(二)
- flask框架如何实现修改密码和免密登录功能
- 如何评价LoRa这项应用于低功率长距离场景的物联网传输技术?
- JavaScript初学者编程题(20)
- [kuangbin带你飞]专题七线段树 更新ing
- [Ahoi2013]差异[后缀数组+单调栈]
- esxi vsphere的端口_vSphere Client 6.0 更改 ESXESXi 主机的端口
- python输入数字字符串_Python笔记—基本数据类型—数字字符串
- Android 双目 单usb,【android9.0】无法打开usb uvc camera
- 解题报告(一)B、(CF453D) Little Pony and Elements of Harmony(FWT经典套路 + 任意模数 k 进制FWT + 快速幂)(2)