搭建高可用集群

安装keepalived

VRRP协议有1个master角色和至少1个backup角色,所以至少需要两台机器

在来两台机器上执行如下操作

# yum install -y keepalived

Keepalived+Nginx实现Web高可用

master: 192.168.200.161 安装keepalived+Nginx
backup:192.168.200.162安装keepalived+Nginx
VIP:192.168.200.100
VIP的英文名字是“Virtual IP”,即“虚拟IP”,也有人把它叫作“浮动IP”。因为这个IP是由keepalived给服务器配置上的,服务器靠这个VIP对外提供服务,当master机器宕机,VIP被分配到backup上,这样用户看来是无感知的。

编辑master的keepalived配置文件

# vi /etc/keepalived/keepalived.conf      //内容如下
global_defs {         #全局配置标识,表明这个区域{}是全局配置
   notification_email {    
        131917381@qq.com   #表示发送通知邮件时邮件源地址是谁
   }
   notification_email_from root@aaaaa.com    #表示keepalived在发生诸如切换操作时需要发送email通知,以及email发送给哪些邮件地址,邮件地址可以多个,每行一个
   smtp_server 127.0.0.1      #表示发送email时使用的smtp服务器地址,这里可以用本地的sendmail来实现
   smtp_connect_timeout 30    #连接smtp连接超时时间
   router_id LVS_DEVEL      #机器标识
}

vrrp_script chk_nginx {    
    script "/usr/local/sbin/check_ng.sh"    #检查服务是否正常,通过写脚本实现,脚本检查服务健康状态
    interval 3    #检查时间间断是3}

vrrp_instance VI_1 {        #VRRP配置标识 VI_1是实例名称
    state MASTER        #定义master相关
    interface ens33    #通过vrrp协议去通信、去发广播。此为网卡名
    virtual_router_id 51   #定义路由器ID ,配置的时候和从机器一致	
    priority 100   #权重,主角色和从角色的权重是不同的,一般主比从大
    advert_int 1  #设定MASTER与BACKUP主机质检同步检查的时间间隔,单位为秒
    authentication {        #认证相关信息
        auth_type PASS      #认证类型
        auth_pass 5201314>g     #密码的形式是一个字符串
    }
    virtual_ipaddress {     #设置虚拟IP地址 (VIP),又叫做漂移IP地址
        192.168.200.100
    }
    track_script {       #加载脚本
        chk_nginx
    }
}

在master上定义一个监控nginx服务的脚本

# vi /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进程数量    
  if [ $n -eq "0" ]; then      
         /etc/init.d/nginx start
          n2=`ps -C nginx --no-heading|wc -l`   
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
          if [ $n2 -eq "0"  ]; then
                  echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                  systemctl stop keepalived
          fi
 fi

编辑完监控Nginx服务的脚本,还需要给它x权限,否则无法被keepalived调用

# chmod a+x /usr/local/sbin/check_ng.sh

完成以上操作,就可以启动master上的keepalived了,如果没有启动Nginx服务,它会帮我们自动拉动起来,并监听VIP:

# systemctl start keepalived
# ip add

可以看到master上已经自动配置了192.168.200.100这个IP。再来看看Nginx服务是否已经启动

# ps aux |grep nginx

编辑backup配置文件

# vi /etc/keepalived/keepalived.conf    //内容如下
global_defs {
   notification_email {
        131917381@qq.com
   }
   notification_email_from root@aaaaa.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"
    interval 3
    }

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 5201314>g
    }
    virtual_ipaddress {
        192.168.200.100
    }
    track_script {
        chk_nginx
    }
}

编辑监控脚本

# vi /usr/local/sbin/check_ng.sh    //内容如下
d=`date --date today +%Y%m%d_%H:%M:%S`
n=`ps -C nginx --no-heading|wc -l`
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

编辑完监控Nginx服务的脚本,还需要给它x权限,否则无法被keepalived调用

# chmod a+x /usr/local/sbin/check_ng.sh    //添加权限

由于backup(192.168.200.162)上还未安装Nginx,暂时还不能启动keepalived服务,还需要做如下操作

# yum install -y epel-release     
# yum install -y nginx

在CentOS7上yum安装的Nginx启动命令为systemctl start nginx,所以在前面的check_ng.sh脚本中,启动命令有所更改。然后,把keepalived服务启动

# systemctl start keepalived

验证keepalived高可用

# curl -I 192.168.200.161
# systemctl start nginx           //在backup上先启动Nginx
# curl -I 192.168.200.162
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值