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地址,避免发生冲突。

  1. 调整/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使修改生效

  1. 配置虚拟IP地址(VIP)-----节点服务器1的配置

    在每个节点服务器,同样需要具有VIP地址172.16.16.172,但此地址仅用作发送WEB响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚拟接口lo:0来承载VIP地址,并为本机添加一条路由记录,将访问VIP的数据限制在本地以避免通信紊乱。

    修改内容如下:

    //特别注意:子网掩码必须为全1

    重启network脚本使修改后的IP生效。

    添加VIP本地访问路由:

  2. 安装httpd,创建测试页(略,采用和NAT模式一样设置),启用httpd服务程序

    安装httpd软件包,创建测试网页

    修改/etc/fstab文件,实现自动挂载

    其他服务器节点做相同的备配,不再重复叙述。

    5、安排多台测试机,从internet中直接访问http://172.16.16.172,将能够看到由真实服务器提供的网页内容

    在LVS负载调度器中,通过查看节点状态可以观察当前的负载分配情况,对于轮询算法来说,每个节点所获得的连接负载应大致相当

    至此有关LVS+keepalived群集配置完毕,这样即实现了lvs负载平衡又实现了调度器的热备。

转载于:https://blog.51cto.com/dumin/1706032

​Keepalived双机热备相关推荐

  1. 图文教程,Nginx+Keepalived(双机热备)介绍已经搭建高可用负载均衡环境

    上一次分享了Nginx相关的应用场景如下: ​Nginx介绍以及一些应用场景说明 在实际使用,单机版的Nginx就不能满足高可用的要求了,在这种情况下,我们使用Nginx+Keepalived(双机热 ...

  2. 【Nginx】如何基于主从模式搭建Nginx+Keepalived双机热备环境?这是最全的一篇了!!

    写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...

  3. Linux7双机,Centos 7 keepalived双机热备

    Centos 7 keepalived双机热备 操作环境: keepalived热备份(双机热备) Centos 7系统ip地址: 192.168.80.100 --主服务器 Centos 7系统ip ...

  4. nginx+keepalived双机热备

    简介 keepalived是一个类似于layer3, 4 & 5交换机制的软件,即可以使IP层.传输层.和应用层的服务冗余集群化.常应用于iP的虚拟化,能够实现mysql.nginx等服务的双 ...

  5. (11) nginx + keepalived 双机热备

    转载地址:  http://www.cnblogs.com/kaituorensheng/p/4889268.html 阅读目录 序 nginx keepalived 测试 问题:杀死keepaliv ...

  6. LVS + Keepalived 双机热备+DR模式

    简介 Keepalived 起初是专门针对 LVS 设计的一款强大的辅助工具,主要用来提供故障切换和健康检查( Health Checking )功能--判断 LVS 负载调度器.节点服务器的可用性, ...

  7. linux启动keepalived服务,llinux企业常用服务---HA+keepalived双机热备

    部署前准备: iptables和selinux没配置,关掉 挂载系统镜像作为本地yum源,修改yum文件 源码包准备keepalived-1.2.13.tar.gz 环境介绍: 2台centos6.5 ...

  8. keepalived 双机热备

    目前项目已经采用nginx来实现负载均衡,但是nginx调度器只有一台,上次还意外的down机一次,导致整个服务应用全部瘫痪,这次准备再加一个调度器来实现站点高可用性,也就是常说的双机热备了. mas ...

  9. 搭建Nginx高可用集群(keepalived+双机热备)

    一.Nginx高可用 首先了解一下什么是高可用,高可用是分布式系统架构中必须考虑的因素. 我们都知道,使用nginx的反向代理和负载均衡可以解决tomcat等web容器的单点故障以及高并发等问题. 反 ...

最新文章

  1. git命令合并分支代码
  2. SQL触发器实例讲解1
  3. 空间数据索引RTree完全解析及Java实现
  4. apache ignite_通过示例获取Apache Ignite Baseline拓扑
  5. Easy.Ajax 部分源代码, 支持文件上传功能, 兼容所有主流浏览器
  6. 移植MyEclipse Web项目到Eclipse变成Java Project的解决办法
  7. redis memcache 性能比较
  8. Atitit.论图片类型 垃圾文件的识别与清理  流程与设计原则 与api概要设计 v2 pbj
  9. 新手学编程必会的100个代码
  10. css实现文本溢出时显示省略号(单行)
  11. Python爬虫爬取中国电影票房排行榜
  12. 【Python】从0开始写爬虫——扒一下狗东
  13. 任务宿主阻止关机解决方案
  14. 单招学计算机好学吗,单招没被录取学什么,计算机行业
  15. Oracle 删除归档
  16. 如何完美解决catia出现-运行异常,单击“确定终止”-问题
  17. KERNEL32相关函数
  18. 复旦大学计算机音乐实验室,复旦大学 智能视觉科技实验室
  19. 挖掘潜力谋发展优信二手车创新脚步与时俱进不停歇
  20. [管理]与ERP有关的主要管理概念

热门文章

  1. Python正则表达式初识(二)
  2. flask框架如何实现修改密码和免密登录功能
  3. 如何评价LoRa这项应用于低功率长距离场景的物联网传输技术?
  4. JavaScript初学者编程题(20)
  5. [kuangbin带你飞]专题七线段树 更新ing
  6. [Ahoi2013]差异[后缀数组+单调栈]
  7. esxi vsphere的端口_vSphere Client 6.0 更改 ESXESXi 主机的端口
  8. python输入数字字符串_Python笔记—基本数据类型—数字字符串
  9. Android 双目 单usb,【android9.0】无法打开usb uvc camera
  10. 解题报告(一)B、(CF453D) Little Pony and Elements of Harmony(FWT经典套路 + 任意模数 k 进制FWT + 快速幂)(2)