18.1 集群介绍 18.2 keepalived介绍 18.3/18.4/18.5 用keepalived配置高可用集群

18.1 集群介绍
18.2 keepalived介绍

18.3/18.4/18.5 用keepalived配置高可用集群


 集群介绍

根据功能分为二大类

1.高可用集群

高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务器服务的服务器宕机了(工作),马上切换另一台(冗余)。

实现高可用的软件有:keepalived

2.负载均衡集群

需要有一台服务器作为分开器,他负责把用户的请求分发给后端的服务器处理,除了分发起外,就是给用户提供服务的服务器。这些服务器数量至少为2。

例子:

比如一台服务器最高请求量为1000,当请求量超过1000后,服务器就会负载高,会导致服务卡死,这时我们可以用负载均衡来分发这些请求到其他服务器上,当然也可以提高服务器自身硬件配置。

实现负载均衡的开源软件有:LVS,keepalived、haproxy、nginx。商店的有F5、Netscaler


keepalived介绍

1.keepalived通过VRRP协议来实现高可用

2.在VRRP协议里,将多台功能相同的集齐组成一个小组,这个小组会又一个master角色和backup角色(N>=1)这个角色可以多个。

3.master会通过组播的形式向各个backup发现VRRP协议的数据包,当backup收不到master发来的VPPR数据包时,就会认为master宕机了,这时backup就会启动服务来替换新的master,如果有多台backup就要看优先级来决定。

4.keepalived要有三个模块:

    core :核心,负责主进程的启动、维护以及全局配置文件的加载和解析

    check:负责模块的健康检查

    vrrp:提供VPPR协议



用keepalived配置高可用集群

实验:

准备2台机器,master为128,backup为130,

  2台机器安装keepalived

        yum install -y keepalived

    2台机器安装nginx

配置master:

1.清空keepalived的目录下conf配置文件添加以下

vim /etc/keepalived/keepalived.conf 

vrrp_script chk_nginx {
    script "/usr/local/test.sh"     //检查nginx是否正常的脚本(下面需要写个脚本)
    interval 3
}
vrrp_instance VI_1 {
    state MASTER            //定义角色
    interface ens32            //针对那个网卡监听VIP
    virtual_router_id 51        //这个ID需要与backup保持一致
    priority 100                //定义权重master要比backup要大
    advert_int 1
    authentication {
        auth_type PASS            //用户认证类型
        auth_pass keep            //用户认证密码
    }
    virtual_ipaddress {                //当master宕机,VIP分配给back
        192.168.142.100    
    }   
    track_script {
        chk_nginx                //定义监控脚本,与上面保持一致
    }   

2.配置定义检查脚本

vim /usr/local/test.sh  //要与配合文件一致

添加:

#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
        /etc/init.d/nginx start
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi


3.启动keepalived服务

systemctl start keepalived 

ps aux|grep keepalived

ps aux |grep nginx

18.1 集群介绍 18.2 keepalived介绍 18.3/18.4/18.5 用keepalived配置高可用集群


配置从:

vim /etc/keepalived/keepalived.conf 

vrrp_script chk_nginx {
    script "/usr/local/test.sh"
    interval 3
}


vrrp_instance VI_1 {
    state BACKUP                        //角色
    interface ens32
    virtual_router_id 51                //主从保持一致ID
    priority 90                                //权重要比master小,多台的话就看优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com                //密码
    }
    virtual_ipaddress {
        192.168.142.100   ////当master宕机,VIP分配给back(主从保持一致)

 


    }


    track_script {
        chk_nginx
    }


}

2.配置定义检查脚本

#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
        /etc/init.d/nginx start
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

3.启动服务

systemctl  start keepalived

4.查看服务

18.1 集群介绍 18.2 keepalived介绍 18.3/18.4/18.5 用keepalived配置高可用集群

测试:

1.master机器没停掉keepalived服务前

18.1 集群介绍 18.2 keepalived介绍 18.3/18.4/18.5 用keepalived配置高可用集群

2.在master运行 systemctl stop keepalived再访问

18.1 集群介绍 18.2 keepalived介绍 18.3/18.4/18.5 用keepalived配置高可用集群


以上2张图可以看到,当master宕机的时候,启动了backup机器。

注意:

VIP:虚拟ip,这个IP是由keepalived给服务器配置上的,服务器靠这个VIP

对外提供服务,当master机器宕机,VIP被分配上backup上,这样就能保证服务运作。