LVS(DR模式)+Keepalived(高可用)

本文介绍了Keepalived的基本概念,它是一个用于实现高可用和负载均衡的服务软件,基于VRRP协议。核心部分包括core、check和vrrp模块。在配置基于DR模式的高可用过程中,详细阐述了每一步操作,包括添加VIP、配置服务、安装和编译Keepalived,以及健康检查和故障转移的实现。通过实验步骤展示了在LVS DR模式下,如何设置和测试Keepalived的高可用性,确保在服务器宕机时能自动进行VIP漂移。

一.Keepalived的基本概念

keepalived是什么?

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived是自动完成,不需人工干涉。

keepalived工作原理:

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

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

keepalived的知识点?

keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生

主要提供 loadbalancing(负载均衡)和 high-availability(高可用)功能

负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs)

高可用是通过VRRP协议实现多台机器之间的故障转移服务

采用多进程的设计模式,每个进程负责不同的功能

高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选 可不选)

Keepalived的作用:

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

作用主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover(故障转移)的实现。

Keepalived要注意的点:

1.如果服务器和用户直接连接的话,会出现很多问题,例如网络,存储,访问
2.如果服务器压力很大:解决方法是先访问缓存,再访问负载均衡
3.搜索服务器:专门用来接受搜索的请求的,一般来说存储都比较高效
4.对于用户来说,等待的时间都是查询的时间
5.节耦的用处:为了避免某一个节点坏了,所有都坏
6.redhat 6.5和6的启动方式都使用了IPVS的架构
7.SNMP是简单网络管理协议
8.在高可用的目录下bin脚本,etc是配置文件,sbin下是一个编译好的二进制文件
9.在做项目的时候注意网卡接口的名称
10.优先级 也即权重

二:配置基于DR模式下的高可用

LVS的DR模式配置请点击

LVS的DR模式的健康检查请点击

实验环境:

主机ip服务
nodel1172.25.15.1master
nodel2172.25.15.2Real-server
nodel3172.25.15.3Real-server
nodel4172.25.15.4Backup
物理机172.25.15.250测试

在这里插入图片描述

实验步骤如下所示:

第一步:

我们需要将之前写过的LVS的策略清除,修改为DR模式策略(如果是DR模式的就不用清除,如何配置DR模式,请看我前面博客)

[root@meng1 ~]# ipvsadm -A -t 172.25.15.100:80 -s rr
[root@meng1 ~]# ipvsadm -a -t 172.25.15.100:80 -r 172.25.15.2:80 -g
[root@meng1 ~]#  ipvsadm -a -t 172.25.15.100:80 -r 172.25.15.3:80 -g
[root@meng1 ~]# systemctl restart ipvsadm.service 
[root@meng1 ~]# cat /etc/sysconfig/ipvsadm

在这里插入图片描述
在这里插入图片描述

给nodel1(可加可不加,加了最后要删除的)和nodel2和nodel3都加上vip

[root@meng1 ~]# ip addr add 172.25.15.100/24 dev eth0

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

第二步:

开启nodel2和nodel3的httpd,并且编辑默认发布目录

在这里插入图片描述
在这里插入图片描述

第三步:

物理机将最新版本的keepalived包发给master主机nodel1和backup主机nodel4,并解压安装,编译。

因为这一步两台虚拟机的操作是相同的,所以我们只展示master主机nodel1的解压安装与编译。

物理机:

scp keepalived-2.0.17.tar.gz  root@172.25.15.1:/mnt

在这里插入图片描述
master主机nodel1:

[root@nodel1 ~]# cd /mnt
[root@nodel1 mnt]# ls
keepalived-2.0.17.tar.gz
[root@nodel1 mnt]# tar zxf keepalived-2.0.17.tar.gz
[root@nodel1 mnt]# ls
keepalived-2.0.17  keepalived-2.0.17.tar.gz
[root@nodel1 mnt]# cd keepalived-2.0.17/
[root@nodel1 keepalived-2.0.17]# yum install openssl-devel  gcc -y
[root@nodel1 keepalived-2.0.17]# ./configure  --prefix=/usr/local/keepalived --with-init=systemd
[root@nodel1 keepalived-2.0.17]# make && make install

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

制作软连接:

[root@nodel1 keepalived-2.0.17]# cd /usr/local/keepalived/etc/keepalived/
[root@nodel1 keepalived]# ls
keepalived.conf  samples
[root@nodel1 keepalived]# ln -s /usr/local/keepalived/etc/keepalived/  /etc/

在这里插入图片描述

nodel4的大概过程图(操作与nodel1相同):

在这里插入图片描述
编译完成显示图:

在这里插入图片描述

制作软连接:

在这里插入图片描述
第四步:

关闭nodel1的健康检查服务,并设置开机不启动(虽然我们是7.3版本的虚拟机,但这个健康检查服务是红帽6.5的管理方式)

[root@nodel1 keepalived]# /etc/init.d/ldirectord stop
Stopping ldirectord (via systemctl):                       [  OK  ]
[root@nodel1 keepalived]# chkconfig ldirectord off

在这里插入图片描述

第五步(重点):

编辑master的高可用的配置文件:

[root@nodel1 keepalived]# vim /etc/keepalived/keepalived.conf 
里面的内容如下所示:
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost      #接收警报的email地址,可以添加多个
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1             #设置smtp swrver地址
   smtp_connect_timeout 30        #设置连接smtp服务器超时时间
   router_id LVS_DEVEL                 #load balancer的标识ID,用于email警报
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER        #证明这台主机是master服务器,而备机要改成BACKUP,此状态是由priority的值来决定的,当前priority的值小于备机的值,那么将会失去MASTER状态
    interface eth0           #监测网络接口 #
    virtual_router_id 11     #主,备机的virtual_router_id 必须相同,取值0-255
    priority 100                   #主机的优先级,备份机改为50,主机优先级一定要大于备机
    advert_int 1                   #主备之间的通告间隔秒数
    authentication {                 #主备切换时的验证
        auth_type PASS         #设置验证类型,主要有PASS和HA两种
        auth_pass 1111          #设置验证密码,在一个vrrp_instance下,MASTER与BACPUP必须使用相同的密码才能正常通信
    }
    virtual_ipaddress {       #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
        172.25.11.100
    }
}   
virtual_server 172.25.11.100 80 {        #定义虚拟服务器
    delay_loop 3              #每隔3秒查询realserver状态
    lb_algo rr                  #lvs调度算法,这里使用轮循
    lb_kind DR             #lvs是用DR模式
    #persistence_timeout 50        会话保持时间,单位是秒,这个选项对于动态网页是非常有
#用的,为集群系统中 session 共享提供了一个很好的解决方案。有了这个会话保持功能,用户的 
#请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保 
#持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在 50 秒内没有执行任 
#何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受 50 秒 #的时间限制。
    
    protocol TCP          #指定转发协议类型,有tcp和udp两种

    real_server 172.25.11.2 80 {                #配置服务节点
        TCP_CHECK {             #realserve的状态检测设置部分,单位是秒
        weight 1                  #配置服务节点的权值,权值大小用数字表示,数字越大,权
#值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以对性能高的服务器设
#置较高的权值,而对性能较低的服务器设置相对较低的权值,这样就合理的利用和分配了系统资源
            connect_timeout 3      #3s无响应超时
            retry 3          #重试次数
            delay_before_retry 3     #重试间隔
     }
} 
    real_server 172.25.11.3 80 {
        TCP_CHECK {
        weight 1
            connect_timeout 3
            retry 3
            delay_before_retry 3
     } 
   }
}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

第六步:

删除nodel1的vip,因为当高可用服务开启的时候,会自动根据优先级在虚拟机上添加vip

[root@meng1 keepalived]# ip addr del 172.25.15.100/24 dev eth0

在这里插入图片描述

第七步:

配置BACKUP的配置文件,大体上与MASTER相同,只需要修改类型与优先级,所以不想一步一步设置可以直接从MASTER主机上面拷过来配置文件再做修改

vim /etc/keepalived/keepalived.conf
主要修改内容为:
vrrp_instance VI_1 {
    state BACKUP       #修改类型为BACKUP
    interface eth0   
    virtual_router_id 11
    priority 50       #优先级为50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.15.100
    }
}

在这里插入图片描述
在这里插入图片描述

第八步:

启动主/备虚拟机的高可用服务:

在这里插入图片描述
在这里插入图片描述

在物理机测试:

测试vip是否发生了漂移(要等差不多10s)

<1>开启服务后,会发现给MASTER虚拟机自动分配vip地址(172.25.15.100)

在这里插入图片描述
会发现此时BACKUP虚拟机没有vip地址

在这里插入图片描述
将nodel1(主机)的keepalived服务关闭,则vip地址会漂移到nodel4(备机)
在这里插入图片描述
在这里插入图片描述
再次在nodel1中将服务开启,会发现vip地址又会漂移回去。

在这里插入图片描述

测试健康检查

测试当没有服务宕机时,在物理机中测试的结果,发现测试页轮循输出

在这里插入图片描述

<2>当将nodel2的apache关闭后,再次测试,发现只正常输出nodel3的测试页

在这里插入图片描述

在这里插入图片描述

当再将nodel3的apache关闭后,再次测试,发现无法正常输出

在这里插入图片描述

因为我们关闭ldirectord了,因为此处的检查与ldirectord健康检查没有关系,所以显示的页面也不是“页面走丢了”
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值