keepalived实现lvs调度器的高可用

1. Keepalived高可用软件

Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,keepalived除了能够管理LVS软件外,还可以作为其他服务的高可用解决方案软件。
keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由的单点故障问题的,它能保证当个别节点宕机时,整个网络可以不间断地运行。所以,keepalived一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可以实现系统网络服务的高可用功能。

2. Keepalived的部署(解决DS的单点故障)

<1> 所需环境如下:
主DS:server1 DIP: 172.25.33.1 VIP:172.25.33.100
备DS:server4 DIP: 172.25.33.4 VIP:172.25.33.100
RS:server2(172.25.33.2)和server3(172.25.33.3)

<2> server1和servr4同样所作操作如下:

[root@server1 ~]tar zxf keepalived-2.0.17.tar.gz    #解压keepalived软件
[root@server1 ~]cd keepalived-2.0.17/
[root@server1 keepalived-2.0.17]yum install -y gcc openssl-devel    
[root@server1 keepalived-2.0.17]./configure --prefix=/usr/local/keepalived --with-init=systemd    #编译
[root@server1 keepalived-2.0.17]make && make install          #安装软件
[root@server1 keepalived-2.0.17]cd /usr/local/keepalived/
[root@server1 keepalived]ln -s /usr/local/keepalived/etc/keepalived/ /etc    #创建软连接

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述<3> server1所作操作如下:
ldirectord和keepalived存在冲突,关闭ldirectord,编辑keepalived配置文件

[root@server1 keepalived]/etc/init.d/ldirectord stop
[root@server1 keepalived]chkconfig ldirectord off
[root@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
 }
 
 vrrp_instance VI_1 {
     state MASTER  ##主节点
    interface eth0
    virtual_router_id 33
     priority 100  ##权重
     advert_int 1  ##检查间隔时间为1s
    authentication {
         auth_type PASS  ##认证方式
         auth_pass 1111  ##认证密码
     }
    virtual_ipaddress {
         172.25.33.100  ##虚拟ip
     }
 }
 
 virtual_server 172.25.33.100 80 {
  delay_loop 3  ##连接失败3次以后发送邮件
    lb_algo rr  ##lvs的调度算法为rr
    lb_kind DR  ##lvs的调度方法为DR轮询
 #    persistence_timeout 50
    protocol TCP  ##端口
 
    real_server 172.25.33.2 80 {
         TCP_CHECK {
      weight 1
         connect_port 80
        connect_timeout 3
       }
     }
  
    real_server 172.25.33.3 80 {
          TCP_CHECK {
          weight 1
         connect_port 80
         connect_timeout 3
         }
    }
 }
 [root@server1 keepalived]# systemctl start keepalived

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述<4> server4所作操作如下:

vim /etc/keepalived/keepalived.conf
 18     state BACKUP
 21     priority 50
systemctl start keepalived.service

在这里插入图片描述<5> 真机测试如下:
当主DS停掉以后,转到备DS,用户无感知
在这里插入图片描述RS停掉一台,可以踢除,访问转移到另外一台RS上
在这里插入图片描述在这里插入图片描述
备注:

Keepalived起初是为LVS设计的,由于Keepalived可以实现对集群节点的状态检测,而IPVS可以实现负载均衡功能
因此,Keepalived借助于第三方模块IPVS就可以很方便的搭建一套负载均衡系统(实现调度器的高可用以及web服务器的故障转移)

在这里有个误区就是由于Keepalived可以和IPVS一起工作,所以普遍就认为Keepalived是一个负载均衡软件,这种理解是错误的

我们之前都是一个调度器来调度多台web后端服务器
但是调度器也有不能工作的时候,万一坏了所有的web服务器都不能访问,这就要求调度器也要备份
因此就引出了高可用的集群KeepAlived
也就是有多个调度器(有主有备),利用keepalived保证web服务通过正常的调度器工作
所有调度器同时宕机的可能性是很小的

发布了168 篇原创文章 · 获赞 1 · 访问量 2978

猜你喜欢

转载自blog.csdn.net/yrx420909/article/details/104425123
今日推荐