Linux企业级运维进阶教程4——(6)LVS负载均衡+HA高可用集群

一.HA(keepalived)高可用性集群简介

  • Keepalived是Linux下的一个轻量级别的高可用解决方案。高可用(High Avalilability,HA),其实俩种不同的含义:广义上来讲,是指整个系统的高可用性,狭义上来讲就是主机的冗余和接管
  • keepalived起初是为LVS设计的,专门用来监控集群系统中的各个服务的节点的状态,它根据TCP/IP参考模型的第三,第四,第五层交换机制检测每个服务器的节点状态,如果某个服务器出现异常,或者工作出现故障,keepalived将检测到,并将出现故障的服务器节点从集群系统中剔除,这些工作都只自动完成的,不需要人为干预,需要人工完成的只是修复出现故障的服务节点.
  • 后来keepalived又加入了VRRP的功能,VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)出现的目的是解决静态路由出现单点故障的问题,通过VRRP可以实现网络不间断稳定运行,因此keepalived一方面具有服务器状态检测和故障隔离的功能,另外一方面也具有HA cluster功能。

二.keepalived对服务器运行状态和故障隔离的工作原理

Keepalived工作在TCP/IP参考模型的三层,四层,五层,也就是分别为:网络层,传输层,应用层,根据TCP,IP参数模型隔层所能实现的功能,Keepalived运行机制如下:

在网络层:

在网络层的四个协议(互联网络IP协议,互联网络可控制报文协议ICMP,地址转换协议ARP,反向地址转换协议RARP)Keepalived在网络层采用最常见的工作方式是通过ICMP协议向服务器集群中的每一个节点发送一个ICMP的数据包,类似于ping的功能,如果某个节点没有返回响应数据包,那么认为该节点发生了故障,Keepalived将报告这个节点失效,并从服务器集群中的节点剔除。

在传输层:

提供了俩个主要的协议:传输控制协议TCP和用户数据协议UDP,传输控制协议TCP可以提供可靠的数据输出服务,IP地址和端口,代表TCP的一个连接端,要获得TCP服务,需要在发送机的一个端口和接收机的一个端口上建立连接,而Keepalived在传输层利用了TCP协议的端口连接和扫描技术来判断集群节点是否正常,比如对web服务器常见的80端口,keepalived一旦在传输层探测到这些端口信号没有数据响应和数据返回,就认为这些端口发生异常,然后强制这些端口所对应的节点从服务器集群中剔除掉。

在应用层:

可以运行FTP,TELNEL,SMTP,DNS等各种不同类型的高层协议,Keepalived的运行方式也更加全面化和复杂化,用户可以通过自定义Keepalived工作方式,例如可以通过编写程序或者编写脚本来运行Keepalived,而Keepalived将根据用户设定的参数来检测各种程序或者服务是否运行正常,当Keepalived的检测结果和用户设定的不一致时,Keepalived将把对应的服务器从服务器集群中剔除。

三.环境搭建

本次实验我们需要四台虚拟机,server1和server4主机作为高可用集群,一主一备,server2和server3作为后端真实服务器

在server1和server4上
  • 配置yum源:高可用需要更高级的yum源

      [HighAvailability]
      name=HighAvailability
      baseurl=http://172.25.69.250/file/HighAvailability
      gpgcheck=0
    

在这里插入图片描述

  • 对keepalived编译源码
    1)获得keepalived-2.0.6.tar.gz并解压

      tar zxf keepalived-2.0.6.tar.gz 
    

2)进入到解压好的目录下,安装解决服务倚赖性需要的软件

	yum install openssl-devel   libnl  libnl-devel   -y

3)得到libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm资源包,进行安装

yum install libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm -y

4)进入解压好的keepalived-2.0.6目录下,进行源码编译

./configure --with-init=SYSV --prefix=/usr/local/keepalived
make && make install

注意:因为源码是C,需要安装gcc;出现Use IPVS Framework : Yes成功
在这里插入图片描述
在这里插入图片描述

5)查看是否编译成功
keepalived的配置文件执行脚本等都在编译好的源码包里
在这里插入图片描述

  • 将lvs4上编译好的keepalived发送给server4,检查是否一致
    在这里插入图片描述

  • 给服务启动执行脚本赋予执行权限,并给服务添加软链接方便直接调用

       chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived 
       ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
       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/
    
  • 打开LVS调度器ipvsadm并关闭ldirectord,该功能与HA功能有重复,HA会自动分配virtualserver

在这里插入图片描述

  • 编辑keepalived配置文件,将server1设置为MASTER,server4为backup

      ! Configuration File for keepalived
    
      global_defs {  #全局定义块
       notification_email {   #邮件通知
      root@localhost  ##指的是邮件发给本地用户
      }
      #设置邮件发送地址
        notification_email_from keepalived@localhost
    smtp_server 127.0.0.1 #设置smtp server地址,为回环接口
    smtp_connect_timeout 30 #设置smtp server服务的超时时间
    router_id LVS_DEVEL #load balance的标识ID,用于email报警
     vrrp_skip_check_adv_addr
    #vrrp_strict
     vrrp_garp_interval 0
     vrrp_gna_interval 0
      }
      ##VRRPD的配置
      vrrp_instance VI_1 {
    state MASTER #主机,备机为BACKUP,此状态是由priority的数值来决定的,当前priority的数值小于备	机的数值,那么将会失去master状态
      interface eth0 #HA检测网络接口
    virtual_router_id 51 #主,备机的virtual_router_id必须相同取值0-255
    priority 100 #主机的优先级,必须大于备机
     advert_int 1 #主备之间的通告间隔秒数
     authentication {
        auth_type PASS  #设置验证类型,主要由PASS和AH俩种
        auth_pass 1111
    }
     #指定漂移地址(VIP)即切换到master时,这些IP会被添加,切换到BACKUP时,这些IP会被删除(传给ip addr命令),所以每台服务器可以不用绑定任何的虚拟地址。
     virtual_ipaddress {
      172.25.69.100
     }
      }
      #虚拟服务配置
      virtual_server 172.25.69.100 80 { #定义虚拟服务器
     delay_loop 
       lb_algo rr #lvs调度算法里面的论叫
    lb_kind DR #lvs的DR模式
    #persistence_timeout 50 #注释掉
     	 protocol TCP #指定转发协议类型
    
    real_server 172.25.69.2 80 { #配置服务节点
          TCP_CHECK {
      weight 1 #默认为1,0为失效
          connect_timeout 3 #10秒无响应超时
          retry 3 #重复次数
          delay_before_retry 3 #重复间隔
      }
    }
      real_server 172.25.69.3 80 {
       TCP_CHECK {
       weight 1
          connect_timeout 3
          retry 3
          delay_before_retry 3
      }
     }
    

    }

在这里插入图片描述

	/etc/init.d/keepalived  start

scp /etc/keepalived/keepalived.conf server4:/etc/keepalived/

在这里插入图片描述

/etc/init.d/keepalived  start

四.测试

  • 在server1上我们发现出现了虚拟IP和调度策略
    在这里插入图片描述
    在这里插入图片描述
    但是server4上是没有虚拟IP的,此时我们在客户端上访问真实服务器出现轮循
    在这里插入图片描述

关掉server1上的keepalived服务,模拟主服务器故障
在这里插入图片描述
发现server4中出现了虚拟IP,在客户端访问服务器,依然出现轮循
在这里插入图片描述[
同时keepalived也具备健康检查的功能

  • 测试2:将后端apache关闭,模拟故障
    在这里插入图片描述
    同时keepalived也具备健康检查的功能
    在这里插入图片描述

  • 当有错误时自动发邮件给本机的检测
    先安装邮件服务
    然后关掉server2的apache服务即可在server1上看到报错的邮件
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值