实现keepalived企业级高可用基于LVS-DR模式

一、为什么要使用keepalived

当后端实现了负载均衡后坏掉一台机器后可以用另一台后台web服务器补上,但是当前端的LVS坏掉后,整套服务就彻底废掉,因此前端的LVS也需要实现负载均衡。

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

keepalived:通过实现vrrp协议来实现地址漂移

配置文件简单:配置文件比较简单,可通过简单配置实现高可用功能

   稳定性强:keepalived是一个类似于layer3,4 & 7交换机制的软件,具备我们平时说的第3层、第4层和第7层交换机的功能,常用于前端负载均衡器的高可用服务,当主服务器出现故障时,可快速进行切换,监测机制灵活,成功率高。

   成本低廉:开源软件,可直接下载配置使用,没有额外费用。

   应用范围广:因为keepalived可应用在多个层面,所以它几乎可以对所有应用做高可用,包括LVS、数据库、http服务、nginx负载均衡等等

   支持多种类型:支持主从模式、主主模式高可用,可根据业务场景灵活选择

二、原理:

1、当用户访问前端的VIP时,到达LVS-server上,通过keepalived根据配置文件将虚拟ip VIP绑定到LVS-server-master的网卡上,首先将访问到主LVS服务器上,通过LVS分配后端realserver,当主LVS服务器出现故障后,keepalived可以将LVS-server-master的网卡上的VIP解除,重新绑定在LVS-server-backup的网卡上,用户将通过LVS-server-backup去访问后端真正的服务器。

实现一个VIP在主LVS-server和从LVS-server的漂移

2、LVS-DR工作方式

(a) 当用户请求到达DirectorServer,此时请求的数据报文会先到内核空间的PREROUTING链。此时报文的源IP为CIP,目标IP为VIP

(b)PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链

(c) IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址

(d) 由于DS和RS在同一个网络中,所以是通过二层(数据链路层)来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。

(e)RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。此时的源IP地址为VIP,目标IP为CIP

(f)响应报文最终送达至客户端

三、实验:

1、环境准备:两台centos系统做DR ,一主一从,两台实现过基于LNMP的电子商务网站

LVS-server-master:VIP:172.17.251.239    桥接模式   开启路由功能,配置keepalived

LVS-server-backup:VIP:172.17.251.239    桥接模式    开启路由功能,配置keepalived

后端服务器1:RIP:172.17.251.107      桥接模式

VIP:172.17.251.239    lo:0

后端服务器2:RIP:172.17.251.110    桥接模式

VIP:172.17.251.239    lo:0

2、在后端服务器上实现LNMP

在两个后端服务器上分别实现LNMP,实现方法如下

http://guanm.blog.51cto.com/13126952/1978354

3、安装步骤:

(1)两台LVS-server都使用yum方式安装keepalived服务

(2)iptables -F&& setenforing 0 清空防火墙策略,关闭selinux

4、配置基于DR模式的LVS负载均衡集群:

配置完成后启动服务:

centos6:service keepalived start

centos7:ststemctl start keepalived

(1)在LVS-server-master上配置keepalived并启动服务

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
  notification_email {
       [email protected]          #邮件
   }
  notification_email_from root
  smtp_server 127.0.0.1
  smtp_connect_timeout 600
  router_id  KEEPAVILD_LVS
}
 
vrrp_instance VI_1 {
   state MASTER                    Master表示主
   virtual_router_id 51
   interface eth0
   priority 101
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass centos
    }
   virtual_ipaddress {
       172.17.251.239
    }
}
 
virtual_server 172.17.251.239 80{
   delay_loop 6
   lb_algo wrr
   lb_kind DR
   nat_mask 255.255.255.255
   persistence_timeout 50
   protocol TCP
 
   real_server 172.17.251.107 80 {
       weight 1
       HTTP_GET {
           url {
              path /
           }
           connect_timeout 3
           nb_get_retry 3
           delay_before_retry 3
       }
    }
 
   real_server 172.17.251.110 80 {
       weight 1
       HTTP_GET {
           url {
              path /
           }
           connect_timeout 3
           nb_get_retry 3
           delay_before_retry 3
       }
    }
}

(1)在LVS-server-backup上配置keepalived

在LVS-server-master上将配置文件复制到从上

scp /etc/keepalived/keepalived.conf  172.17.251.108:/etc/keepalived

修改 vim /etc/keepalived/keepalived.conf

state BACKUP      #从负载均衡器

priority    100    #优先级是100

5、在两台后端服务器上

要在后端的服务器上配置回环VIP,仅仅自己响应,不然和LVS

ifconfig lo:0  172.17.251.239 broadcast 172.17.251.239 netmask 255.255.255.255 up

#配置VIP到本地回环网卡lo上,并只广播自己

routeadd -host  172.17.251.239 lo:0

#配置本地回环网卡路由

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

#1 只回答目标IP地址是来访网络接口本地地址的ARP查询请求

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

#2 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

#关闭arp应答

1: 仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应

2:必须避免将接口信息向非本网络进行通告

开启web、php-fpm、mysql服务

6、开启keepalived服务后,用ip a 查看ip是否成功添加

(1)在LVS-server-master上查看 ,用ifconfig 查看不到,用ip a 查看

 curl http://172.17.251.239/index.html 可以访问成功

(2)测试

这时关闭LVS-server-master服务 service keepalived stop

在BACKUP上ip a 查看,可以看到VIP漂移到BACKUP上了。

用curl 访问不影响访问网站不受影响。

时间: 2024-10-10 15:23:38

实现keepalived企业级高可用基于LVS-DR模式的相关文章

高可用群集lvs DR模式搭建

上一篇文章已经解释过lvs的原理已及作用,DR模式与NAT模式在部署上是有区别的:  此拓扑中调度器只作为用户访问web的入口,各个web回应时直接利用的是网络,不通过调度器回应. 部署DR模式的lvs环境需要注意几个点: 调度器以及各个节点都必须配置VIP地址 调度器中关闭icmp定向(ICMP重定向报文是ICMP控制报文中的一种.在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求重新选择路由.此类报文有可能用以攻击, 有的攻击利用icmp

LVS + Keepalived 高可用群集 【DR模式】

简介 Keepalived 起初是专门针对 LVS 设计的一款强大的辅助工具,主要用来提供故障切换和健康检查( Health Checking )功能--判断 LVS 负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后就会重新加入群集中. Keepalived 采用 VRRP (虚拟路由冗余协议)热备份协议,和HSRP一样,只不过 HSRP 是思科私有的协议,VRRP 可以跑在很多设备上!VRRP 是以软件的方式实现 Linux 服务器的多机热备功能. VRRP 工作原

通过keepalived搭建高可用的LVS负载均衡集群

一.keepalived软件简介 keepalived是基于vrrp协议实现高可用功能的一种软件,它可以解决单点故障的问题,通过keepalived搭建一个高可用的LVS负载均衡集群时,keepalived还能检测后台服务器的运行状态. 二.vrrp协议原理简介 vrrp(虚拟路由器冗余协议),是为了解决网络上静态路由出现的单点故障的问题,举个例子,如下图 主机A和B均在同一个局域网内,C和D均是该局域网的网关,即A和B想与外网通信,需指网关到C或D,那究竟指向C好还是指向D好呢?都不好!当指向

Docker笔记三:基于LVS DR模式构建WEB服务集群

安装ipvsadm 1. 先在宿主机上安装并以root来启动ipvsadm,每次要在容器中运行ipvs都需要先在宿主机上启动ipvs.如果直接进行2步操作将报出如下错误: Can't initialize ipvs: Protocol not availableAre you sure that IP Virtual Server is built in the kernel or as module? 2. 实例化一个ipvs容器: dockerfile: FROM ubuntu MAINTA

LVS+Keepalived实现高可用负载均衡

用LVS+Keepalived实现高可用负载均衡,简单来说就是由LVS提供负载均衡,keepalived通过对rs进行健康检查.对主备机(director)进行故障自动切换,实现高可用. 1. LVS NAT模式配置准备三台服务器,一台director, 两台real serverdr1: 外网ip 192.168.75.130,内网ip 10.1.1.10 两台real serverrs1: 内网ip 10.1.1.11rs2: 内网ip 10.1.1.12 两台real server的内网网

项目实战3—Keepalived 实现高可用

实现基于Keepalived高可用集群网站架构 环境:随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经通过集群LVS架构可做到随时拓展,后端节点已经通过集群技术保障了可用性,但对于前端负载均衡器来说,是个比较大的安全隐患,因为当前端负载均衡器出现故障时,整个集群就处于瘫痪状态,因此,负载均衡器的可用性也显得至关重要,那么怎么来解决负载均衡器的可用性问题呢? 总项目流程图,详见http://www.cnblogs.com/along21/

项目实战03:Keepalived 实现高可用

目录 实验一:实现keepalived主从方式高可用基于LVS-DR模式的应用实战: 1.环境准备: 2.在lvs-server-master 主上 3.在lvs-server-backup 从上 4.在real server 上 5.测试 实验二:实现keepalived双主方式高可用基于LVS-DR模式的应用实战: 1.实验环境,基本同上 2.在lvs-server1 上,基本同上,就是加了一个实例段 3.在lvs-server2 上,基本同1,就是把实例的主从调换一下 4.在real se

MySQL双主+keepalived实现高可用

mysql+keepalived实现高可用+主主复制模式 为了解决mysql的单点故障问题,衍生出很多mysql的高可用方案: keepalived+双主.MHA.PXC.MMM.Hearbeat+DRBD等,比较常用的一般是keepalived+双主,MHA和PXC 在此搭建实验环境,实现keepalived+mysql双主模式. 实验思路: 两台MySQL互为主从关系(双主),通过keepalived配置虚拟vip,实现当其中的一台MySQL数据库宕机后,应用能自动切换到另外一台MySQL数

负载均衡高可用之LVS+Keepalived(DR/主备)+apache

负载均衡高可用之LVS+Keepalived(DR/主备)+apache 介绍: LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的.高可用的虚拟服务器.整个服务器集群的结构对客户