DR模式下的高可用的LVS(LVS+keepalived)

时间:2023-01-10 16:35:55

一、keepalived

在DR模式下,使用Keepalived实现LVS的高可用。Keepalived的作用是检测服务器的状态,如果有一台web服务器 宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后 Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。keepalived也可以实现数据的缓存和负载均衡。keepalived实现的基础为VRRP协议,下面我们对VRRP协议做相关的了解。

二、VRRP(Virtual  Router  Redundancy  Protocal)虚拟路由冗余协议

虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准。VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以及及时在实际第一跳路由器 使用失败的情形下仍能够维护路由器间的连通性。Keepalived就是利用vrrp协议来实现高可用(HA)的。

  【1】用于实现路由器冗余的协议

  【2】解决静态网关出现单点失效问题

  【3】通过竞选协议,来实现虚拟路由器的功能

三、Keepalived + LVS(DR)负载均衡的配置(keepalived不可以和ldirectord同时使用)

1)安装虚拟服务器2.0.6版本的keepalived包,并解压。(可在官网里面下载)

   ---> tar zxf keepalived- 2.0.6.tar.gz

   ---> cd keepalived-2.0.6

   ---> yum  install  openssl-devel.x86_64       # 安装keepalived的依赖包:openssl-devel

   2)编译keepalived的源码包

   --->  yum  install  gcc  -y       # 由于源码包是c写的,所有需要gcc编译器

   --->  make  &&  make  install

   3)制作keepalived的软链接,方便管理与配置,并给它执行权限

   ---> ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

   ---> ln -s /usr/local/keepalived/sbin/keepalived  /sbin/
   ---> ln -s /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/
   ---> ln -s /usr/local/keepalived/etc/keepalived/ /etc/
   ---> chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
   ---> scp  -r /usr/local/keepalived/  server4:/usr/local/     # 复制keepalived到server4中

   ---> yum  install  mailx -y

   4)在server1中配置keepalived的配置文件

   ---> vim  /etc/keepalived/keepalived.conf

 ! Configuration File for keepalived       # !和#表示注释
 # 全局配置
 global_defs {
    notification_email {
      root@localhost       # 健康检查报告通知邮箱
    }
    notification_email_from keepalived@localhost         # 发送邮件的地址

    smtp_server 127.0.0.1   # 邮件服务器
    smtp_connect_timeout 30
    router_id LVS_DEVEL     # 运行机器的标示
    vrrp_skip_check_adv_addr
    #vrrp_strict
    vrrp_garp_interval 0
    vrrp_gna_interval 0
 }
 # vrrpd的配置
 vrrp_instance VI_1 {
     state MASTER         # 指定instance的初始化状态,在两台都启动后,会发生竞选
     interface eth0       # 绑定虚拟ip的指定节点
     virtual_router_id 1  # 设置验证信息,两节点需要一致
     priority 100         # 优先级,主节点比从节点高。范围(1-254)
     advert_int 1         # 组播信息发送间隔,两节点要一致
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         172.25.2.100      # 设定虚拟ip(启动服务后,ip会自动添加在eth0中)
     }
 }

 #Apache服务的负载均衡
 virtual_server 172.25.2.100 80 {
     delay_loop 1          # 当RS服务器出问题后的反映时间
     lb_algo rr            # 指定LVS的算法
     lb_kind DR            # 指定LVS的模式
     #persistence_timeout 50     # 保持会话时间(持续连接一台RS服务器的时间)
     protocol TCP          # 转发协议   
     # RS的健康检查机制
     real_server 172.25.2.2 80 {
         weight 1
         TCP_CHECK {
             connect_timeout 3
             retry 3
             delay_before_retry 3
         }
     }
     real_server 172.25.2.3 80 {
         weight 1
         TCP_CHECK {
             connect_timeout 3
             retry 3
             delay_before_retry 3
         }
     }
 }
 #ftp服务的负载均衡
 virtual_server 172.25.2.100 21 {
     delay_loop 1
     lb_algo rr
     lb_kind DR
     persistence_timeout 50      # ftp服务需要保持连接时间,防止传输的数据流中端
     protocol TCP
     real_server 172.25.2.2 21 {
         weight 1
         TCP_CHECK {
             connect_timeout 3
             retry 3
             delay_before_retry 3
         }
     }
     real_server 172.25.2.3 21 {
         weight 1
         TCP_CHECK {
             connect_timeout 3
             retry 3
             delay_before_retry 3
         }
     }
 }

   5)在后端server2中添加vsftpd服务,并在默认发布目录下添加目录(server3中也是同样的操作,不过目录为server3)

   ---> mkdir  /var/ftp/server2    

   ---> /etc/init.d/vsftpd  start

   6)在server1中进行keepalived服务的启动

   --->  /etc/init.d/ipvsadm  stop       # 关闭之后,可以用ipvasdm -L查看策略,空表示关闭了

   --->  /etc/init.d/ldirectord  stop

   --->  /ect/init.d/keepalived  start

   7)在测试机中进行http和ftp的测试:(在lftp时,当后端一个服务器出现问题时,会自动切换到另一个服务器上。)

DR模式下的高可用的LVS(LVS+keepalived)

DR模式下的高可用的LVS(LVS+keepalived)

DR模式下的高可用的LVS(LVS+keepalived)

四、keepalived+lvs(DR)实现高可用

   keepalived可以实现负载均衡,但是只有一台keepalived主机时,如果它宕掉了,则数据不能转发,更不可能有负载均衡了,所以需要配置另一台keepalived实现高可用。即主备keepalived,一台主机上的keepalived怀掉了,可以由备份keepalived接管负载均衡调度该实验,我们在三的基础上进行。

   8)在server4中进行链接设置(keepalived是从server1中复制过来的)

   ---> ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
   ---> ln -s /usr/local/keepalived/sbin/keepalived  /sbin/
   ---> ln -s /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/

   ---> ln -s /usr/local/keepalived/etc/keepalived/ /etc/

   ---> yum install mailx -y          # 安装mail,方便对主配服务进行查看

   ---> /etc/init.d/keepalived  start

   9)修改server4中的/etc/keepalived/keepalived.conf。只由该状态为BACKUP和优先级为50即可

DR模式下的高可用的LVS(LVS+keepalived)

   9)查看server1和server4中的日志信息

   # server4中信息如下  (cat  /var/log/messages)

DR模式下的高可用的LVS(LVS+keepalived)

   # server1中信息如下:

DR模式下的高可用的LVS(LVS+keepalived)

   10)当server1坏掉的时候,此时,server4为主状态,server1为从状态。测试机获取的MAC为server4的

   ---> /etc/init.d/keepalived  stop       # 在server1中关闭keepalived服务。server4的状态为主状态

DR模式下的高可用的LVS(LVS+keepalived)

  注释:当keepalived的主设备又可以工作时,由于优先级问题,server1会把主权拿过来,server4又变为后备状态。