LVS+Keepalived高可用群集

Keepalived概述及安装

Keepalived的工作原理

Keepalived主要用来提供故障切换和健康检查功能——判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。
主要应用场合为服务器群集中
官方网站:http://www.keepalived.org/

keepalived的热备份方式

以软件的方式实现Linux服务器多机热备功能。由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务。每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态。若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务。
LVS+Keepalived高可用群集_第1张图片

Keepalived的安装与服务控制

  • 安装支持软件
    在编译安装Keepalived之前,必须先安装内核开发包kernel-devel,以及openssl-devel、popt-deve等支持库。除此之外,在LVS群集环境中应用时也需要用到ipvsadm管理工具。

    yum -y install kernel-devel openssl-devel popt-devel
    yum install -y  ipvsadm
    
  • 编译安装Keepalived
    使用指定的Linux内核位置对Keepalived进行配置,并将安装路径指定为根目录,这样就无需额外创建链接文件了。只有在使用LVS时,才需要参数–with-kermel-dir.配置完成后,依次执行make、make install 进行安装。

      tar xvf keepalived-2.0.16.tar.gz -C /usr/src/
    cd /usr/src/keepalived-2.0.16/
    ./configure  --prefix=/usr/local/keepalived 
    make && make install
    cd /usr/local/keepalived/etc/keepalived
    

使用Keepalived服务

  • 主服务器的配置

    vi keepalived.conf
    global_defs {
           
        router_id HA_TEST_R1    //本服务器的名称
    }
    vrrp_instance VI_1 {
                         //定义VRRP热备实例
    state MASTER              //热备状态,MASTER表示主服务器
    interface ens37            //承载VIP地址的物理接口
    virtual_router_id 1  //虚拟路由器的ID号,每个热备组保持一致
    priority 100       //优先级,数字越大优先级越高
    advert_int 1      //通告间隔秒数
    authentication {
                //认证信息,每个热备组保持一致
        auth_type PASS    //认证类型
        auth_pass 123456    //密码字串
     }
    virtual_ipaddress {
                   //指定漂移地址(VIP)
        192.168.137.254
    	} 
    }
    
    

确认上述配置无误,然后启动keepalived服务,实际状态为MASTER的主服务器将为ens33接口自动添加VIP地址,通过ip命令可以查看(注意:不能用ifconfig)

./keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf 
ip addr show dev ens33
  • 备用服务器的配置

    yum install -y keepalived ipvsadm   //YUM安装 keepalived ipvsadm
    cd /etc/keepalived/
    cp keepalived.conf keepalived.conf.bak
    vi keepalived.conf
    global_defs {
           
        router_id HA_TEST_R2
    }
    vrrp_instance VI_1 {
           
    state BACKUP
    interface ens33
    virtual_router_id 1
    priority 99
    advert_int 1
    authentication {
           
        auth_type PASS
        auth_pass 123456
      }
    virtual_ipaddress {
           
        192.168.137.254 
         }  
    }
    
    

开启服务keepalived

systemctl start keepalived
systemctl enable keepalived
ip addr show dev ens33

测试双机热备功能

  • 测试通连性测试,在客户机中ping -t 192.168.127.251
  • 然后再停止主用服务器的keepalived服务
ps -elf| grep keep
-e 显示所有进程 -f 全格式  -l 长格式
kill 46499

LVS+Keepalived高可用群集

Keep的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备。使用Keepalived构建LVS群集更加简便易用,主要优势体现在:对LVS负载调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。

这里我用之前的DR模式的LVS群集为基础,增加一台从负载调度器,使用Keepalived来实现主、从调度器的热备。
LVS+Keepalived高可用群集_第2张图片
LVS+Keepalived高可用群集_第3张图片

配置主调度器

  • 全局配置、热备配置
    首先应为主从调度器实现热备功能,漂移地址使用LVS群集的VIP地址
cd /usr/local/keepalived/etc/keepalived
vi keepalived.conf

global_defs {
     
        router_id HA_TEST_R1          主调度器的名称(自定义)
}
vrrp_instance VI_1 {
     
    state MASTER						主调度器的热备状态MASTER:主
    interface ens33
    virtual_router_id 1
    priority 100						主调度器的优先级
    advert_int 1
    authentication {
     					主、从热备认证信息
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
     	
        192.168.137.254				指定群集VIP地址
    }
}

  • WEB服务器池配置
    在Keepalived的热备基础上,添加“virtual_server VIP端口{…}”区段来配置虚拟服务器,主要包括对负载调度算法、群集工作模式、健康检查间隔、真实服务器地址等参数的设置。
virtual_server 192.168.137.254 80 {
     		虚拟服务器地址(VIP)、端口
    delay_loop 15						健康检查间隔时间(秒)
    lb_algo rr							轮询(rr)调度算法
    lb_kind DR						直接路由(DR)群集工作模式
    protocol TCP						

    real_server 192.168.137.130 80 {
     		第一个web节点的地址、端口
        weight 1						权重
            TCP_CHECK {
     				健康检查方式
            connect_port 80			检查的目标端口	
            connect_timeout 3			连接超时(秒)
            nb_get_retry 3			重试次数
            delay_before_retry 4		重试间隔(秒)
        }
   }
    real_server 192.168.127.158 80 {
     
        weight 1
        TCP_CHECK {
     
        connect_port 80
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 4
        }
    }

}

2. 配置从调度器

从调度器的配置与主调度器基本相同,也包括全局配置、热备配置、服务器池配置,只需要调整router_id、state、priority参数即可,其余内容完全相同

global_defs {
     
        router_id HA_TEST_R2			从调度器的名称
}
vrrp_instance VI_1 {
     
    state BACKUP						从调度器的热备状态,BACKUP为备用
    interface ens33
    virtual_router_id 1
    priority 99						从调度器的优先级
    advert_int 1
    authentication {
     
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
     
        192.168.137.254
    }
}

重启Keeplived服务,查看配置生效否
LVS+Keepalived高可用群集_第4张图片
关闭主调度器,查看从调度器配置生效否。
LVS+Keepalived高可用群集_第5张图片

配置web节点服务器

根据所选的集群工作模式不同(DR或NAT),节点服务器的配置也有些差异。以DR为例,除了需要调整/proc系统的ARP响应参数以外,还需要为虚拟接口lo:0配置VIP地址,并添加一条到VIP的本地路由,步骤略过。

测试

在客户机的浏览器中,能够通过LVS+Keepalived群集的VIP地址(192.168.137.254),正常访问页面内容
LVS+Keepalived高可用群集_第6张图片
当主、从调度器任何一个失效时。Web站点仍然可以访问
LVS+Keepalived高可用群集_第7张图片
LVS+Keepalived高可用群集_第8张图片
只要服务器池有两台及以上的真实服务器可用,就可以实现访问量的负载均衡

你可能感兴趣的:(Web服务器群集,linux,运维)