LVS(三)lvs+keeplive

场景引入1

        我们知道LVS仅仅是做根据调度算法和策略来做负载均衡的,LVS本身只是调度后端服务器,并不管后端服务器的死活,想想这样一个场景:如果由于由于某种原因,后端服务器挂掉,而调度服务器却不知道,还一个劲头的给其发送请求,后端服务器此时不响应数据,而客户端会处于等待的状态(直到超时),客户体验不好!

        说明:后续有时间了再模拟这个场景(后端某个服务关闭,观察实验现象)!

        引出了我们今天要讲解的心跳检查(heartbeat),通俗点就是前端服务器检查后端服务器的存活,进而采取某种策略!

        说明:由于DR模式最常见,所以我们以此种模式进行讲解!

  lvs+directord

(1)directord的简单理解

           directord 对lvs策略的动态维护:ldirectord是监视集群节点(真实服务器),并从集群中自动移除节点,我们需要使用ldirectord程序,这个程序在启动时自动建立IPVS表(不用手动建立了),然后监视集群节点的健康情况,在发现失效节点时将其自动从IPVS表中移除

(1)第一次安装出现的问题

yum install -y ldirectord-3.9.5-3.1.x86_64.rpm
Error: Package: ldirectord-3.9.5-3.1.x86_64 (/ldirectord-3.9.5-3.1.x86_64)
           Requires: resource-agents

说明安装包从官网下载即可

原因没有使用系统自带的高可用套件缺乏依赖,yum源进行配置(所需安装软件在光盘上就可以,不需要额外配置yum源!

# 自带附加高可用源
[HighAvailability]
name="HighAvailability"
baseurl=http://172.25.2.250/rhel7.3/addons/HighAvailability
gpgcheck=0

(2)正式安装

yum install -y ldirectord-3.9.5-3.1.x86_64.rpm
rpm -ql ldirectord-3.9.5-3.1.x86_64 # 查询
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/

(3)编写配置文件

# 虚拟VIP-->核心配置文件!
virtual=172.25.2.100:80
        real=172.25.2.201:80 gate
        real=172.25.2.202:80 gate
        fallback=127.0.0.1:80 gate
        service=http
        scheduler=rr
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80
        request="index.html"
        # 注意:一定要将其注释!
        #receive="Test Page"
        #virtualhost=www.x.y.z

检测:开启ldirectord服务,然后通过ipvsadm -l 来看是否有IPVS表的规则!

注意:还是手动写VIP,只是通过配置文件的形式帮助我们生成ipvs规则表!

补充:还得手动开启服务

理解:并不管理资源

 ip addr add 172.25.2.100/24 dev eth0 #配置VIP(由于是DR模式,所以三个都需要配置)

(4)后端服务器的配置

VIP(手动配置)和ARP策略

arptables -A INPUT -d 172.25.2.100 -j DROP
arptables -A OUTPUT -s 172.25.2.100 -j mangle --mangle-ip-s 172.25.2.201

# 两个后端服务器一样

注意:服务必须自己开启!

(5)测试

测试1:两个后端服务器均开启Apach服务,然后客户端测试看是否轮询!

测试2:其中一个后端服务器关闭服务,观察此服务器是否被IPVS表移出,以及客户端测试的内容!

测试3:其中一个后端服务器有开启服务,观察此服务器是否被IPVS表添加,以及客户端测试的内容!

测试4:前端服务器也安装httpd软件,并开启服务,看后端服务器挂掉的时候,前端服务器会不会顶上去

说明:在其它后端服务器都挂了的情况下,前端调度器也可以作为临时服务器,但是一般时间很短!

配置文件的详细解释

原理

二:场景引入

     假如:lvs调度服务器挂掉了呢,是不是整个就瘫痪了,怎么办?总得防患于未然,添加lvs的备用机,如何监控呢?

     引入:我们今天要讲解的keepalived

     注意:做实验之前一定要事先关闭selinux和firewalld !

     keepalived百度百科

  (1)源码编译安装

#(1)说明:第三方的包-->源码安装
# 最好进入一个目录!
tar -zxf keepalived-2.0.6.tar.gz 
cd keepalived-2.0.6
#(2)安装依赖的软件
yum install gcc openssl-devel -y
#(3)编译-->6|7的区别
./configure --prefix=/usr/local/keepalived --with-init=systemd
#核心:Use IPVS Framework是否是Yes
#(4)安装
make && make install
#(5)进入对应的目录-->设置软链接
cd /usr/local/keepalived/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
#(6)安装邮件软件
yum install -y mail #看是否发生报错信息!

# 说明:用的也是高可用的包!

    说明:备用的安装方式一致

(2)  对配置文件进行配置

安装之前做一些清理工作

      1)IPVS规则的清理(-C)

      2)VIP的手动删除--->会自动生成此VIP

配置文件参数的说明!

# 全局配置
global_defs {
   notification_email {
     #(1)节点宕机了给谁发送邮件!-->本机的root用户(安装mail软件,看是否发送邮件)
     root@localhost
   }
     #(2)发送人的名称
   notification_email_from keeplived@loclhost
     #(3)发送的服务器-->本机
   smtp_server 172.0.0.1
     #(4)指定smtp连接超时时间
   smtp_connect_timeout 30
   router_id LVS_DEVEL
     #(5)运行keepalived机器的一个标识!
   vrrp_skip_check_adv_addr
     #(6)必须注释
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
     #(1)主节点的标识
    state MASTER  #BACKUP(备用的标识)
    interface eth0
     #(2)说明:主和备用的必须一致
    virtual_router_id 51
     #(3)优先级,越大越优先启动
    priority 100  #说明:备用的必须小于100
    advert_int 1 # 检查间隔
    authentication {
        auth_type PASS #认证方式(密码认证)
        auth_pass 1111 #认证的密码
    }
     #(4)虚拟VIP-->不用手动创建(可以创建多个,对应不同的服务)
    virtual_ipaddress {
        172.25.2.100
    }
}
# 虚拟服务的相关配置-->理解成IPVS表规则
virtual_server 172.25.2.100 80 {
    delay_loop 6 # 当rs报错时候,尝试多少次之后才会发送邮件告知!
    lb_algo rr   # 负载均衡的算法(10种)
    lb_kind DR   # 默认时NAT模式(这里选择DR)
    #persistence_timeout 50  #注释(保持连接的时间)
    protocol TCP

    real_server 172.25.2.201 80 {
        TCP_CHECK {
	    connect_port 80
	    weight 1
            connect_timeout 3
        }
    }
    real_server 172.25.2.202 80 {
        TCP_CHECK {
	    connect_port 80
	    weight 1
            connect_timeout 3
        }
    }
}

说明:备用只修改state和proprity

后端服务器的配置

ip addr add 172.25.2.100/24 dev eth0
arptables -A INPUT -d 172.25.2.100 -j DROP
arptables -A OUTPUT -s 172.25.2.100 -j mangle --mangle-ip-s 172.25.2.201

注意:要配置VIP,因为后端服务器和前端控制器是想对独立的

重启之后的现象-->

备用

测试1:后端服务器关闭和开启,IPVS表的变化

说明这里省略

测试2:主LB关闭keepalived服务,看IPVS表和VIP的走向

测试3:主LB开启keeplalived服务

说明:keepalived备机在主机宕机的情况会自动接管了资源,但待keepalived主机恢复正常的时候,主机会重新接管资源!

小知识:IP/32表示是一个集群!

补充测试:看mail是否有邮件发送

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值