集群介绍、keepalived介绍、keepalived配置高可用集群

集群介绍

    将多台服务器搭建成一个集群来运行应用程序,能够避免单点故障,还能提高服务器的承载能力linux

    linux集群按功能能够划分为两大类:高可用和负载均衡。nginx

    高可用集群:一般是两条服务器,一台工做,另一台做为冗余,当一台服务器宕机不能提供服务了,就会有其余服务器顶替。经常使用的软件有heartbeat和keepalived,但heartbeat已经好久没有跟新了。vim

    负载均衡集群:把用户的请求分摊到多台服务器上面。实现负载均衡的开源软件有LVS、keepalived、haproxy、Nginx等,商业的负载均衡设备 F五、NetScaler。bash

 

keepalived介绍

    VRRP协议是实现路由高可用的一种通讯协议,在这个协议里会把多台功能相同的路由器组成一个组,这个组会有一个主角色(masteer)和多个备用角色(backup)。工做的时候主角色会经过组播的形式向各个备用角色发送VRRP协议的数据包,当备用角色收不到主角色发来的VRRP数据包的时候,就会认为主已经宕机了,这个时候就会须要根据优先级来让一个备用角色成为新的主。服务器

    keepalived就是采用VRRP协议来实现高可用集群,keepalived有三个模块:core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件加载和解析。check模块负责健康检查。vrrp模块用来实现VRRP协议。负载均衡

用keepalived配置高可用集群

 1.   准备两台linux机器,在两台机器上都下载keepalived,一台作主角色,另外一台作备用角    [root@xinylinux-1 ~]# yum install -y keepalived                                                                     [root@xinylinux-2 ~]# yum install -y keepalived测试

2.    两台机器上都要安装Nginx                                                                                                             [root@xinylinux-1 ~]# yum install -y nginxspa

另外一台之前已经安装了源码包日志

  3.  编辑主角色(master)的keepalived配置文件router

[root@xinylinux-2 ~]# vim /etc/keepalived/keepalived.conf 

文件内容:

global_defs {
   notification_email {
     aming@aminglinux.com
   }
   notification_email_from root@aminglinux.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"   //自定义脚本监控Nginx服务
    interval 3    //每隔3秒执行一次这个脚本
}

vrrp_instance VI_1 {
    state MASTER   //角色为主
    interface ens33   //针对哪一个网卡监听VIP
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com    //自定义密码
    }
    virtual_ipaddress {
        192.168.188.100     //定义VIP,即虚拟IP
    }

    track_script {
        chk_nginx   //定义监控脚本
    }

}
 

   4. 定义一个监控Nginx服务的脚本

[root@xinylinux-2 ~]# vim /usr/local/sbin/check_ng.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

  5. 脚本更改权限

[root@xinylinux-2 ~]# chmod 755 /usr/local/sbin/check_ng.sh

  6.  启动主上的keepalived,

[root@xinylinux-2 ~]# systemctl start keepalived
[root@xinylinux-2 ~]# ps aux |grep keepalived
root      1731  0.0  0.1 118652  1400 ?        Ss   22:00   0:00 /usr/sbin/keepalived -D
root      1732  0.0  0.3 127516  3304 ?        S    22:00   0:00 /usr/sbin/keepalived -D
root      1733  0.1  0.2 127456  2848 ?        S    22:00   0:00 /usr/sbin/keepalived -D
root      1830  0.0  0.0 112720   976 pts/0    R+   22:00   0:00 grep --color=auto keepalived
 

   7.配置备用角色keepalived配置文件

和主的内容差很少,只要把state 改成BACKUP,priority的数值要比主上的小,VIP改一下。就能够了

   8.编辑监控脚本

内容:

#!/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
        systemctl start nginx
        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

 

    9.启动keepalived服务

而后测试

相关文章
相关标签/搜索