Centos7 Keepalived

Centos7 Keepalived

前置配置

两台Centos7虚拟机

主机规划

IP主机名节点
192.168.237.151master主节点
192.168.237.152backup从节点

1.基础配置

1.1 修改主机名

master节点

[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# bash

backup节点

[root@localhost ~]# hostnamectl set-hostname backup
[root@localhost ~]# bash

1.2 关闭防火墙与selinux

[root@master ~]# systemctl stop firewalld
[root@master ~]# setenforce 0
[root@backup ~]# systemctl stop firewalld
[root@backup ~]# setenforce 0

1.3 安装Keepalived

[root@master ~]# yum -y install keepalived
[root@backup ~]# yum -y install keepalived

1.4 安装nginx

[root@master ~]# yum clean all
[root@master ~]# yum install -y epel-release
[root@master ~]# yum -y install nginx
[root@backup ~]# yum clean all
[root@backup ~]# yum install -y epel-release
[root@backup ~]# yum -y install nginx

1.5 配置Keepalived

[root@master keepalived]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email { # 设置报警邮件地址可以设置多个
     test@qq.com
   }
   notification_email_from root@qq.com  #发送邮件通知的地址
   smtp_server 127.0.0.1  # smtpserver 地址
   smtp_connect_timeout 30  # 连接smtpserver的超时时间
   router_id LVS_DEVEL  # 主机标识用于邮件通知
}

vrrp_script check_nginx {
   script "/usr/local/sbin/check_ng.sh"  # 脚本地址
   interval 3  # 检查时间间隔3}

vrrp_instance VI_1 {
    state MASTER  # 指定keepalived节点的初始状态
    interface ens33  # vrrp实例绑定的接口
    virtual_router_id 51  # 指定VRRP实例ID,范围是0-255.
    priority 100  # 权重,主角色和从角色的权重是不同的,一般主比从大
    advert_int 1  # MASTER与BACKUP主机同步检查的时间间隔,单位为秒
    authentication {  # 认证相关信息
        auth_type PASS  # 认证类型 PASS简单密码认证(推荐),AH:IPSEC认证(不推荐)
        auth_pass 123456789  # 指定认证所使用的密码。最多8位。
    }

    virtual_ipaddress {  # 设置虚拟IP地址
        192.168.237.100
    }

   track_script {  # 加载脚本
      check_nginx
   }
}

添加监控脚本

[root@master keepalived]# vim /usr/local/sbin/check_ng.sh
#!/bin/bash
d=`date --date today +%Y%m%d_%H:%M:%S`
n=`ps -C nginx --no-heading|wc -l`
if [ $n -eq "0" ]; then
  systemctl restart 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

给此脚本文件授权

 [root@master keepalived]# chmod a+x /usr/local/sbin/check_ng.sh

1.6 验证是否配置成功

[root@master keepalived]# systemctl start keepalived
[root@master keepalived]# netstat -tunpl | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      11530/nginx: master
tcp6       0      0 :::80                   :::*                    LISTEN      11530/nginx: master
#如果nginx自动启动就表示配置成功

1.7 配置backup 节点上的Keepalived

[root@backup ~]# cd /etc/keepalived/
[root@backup keepalived]# vim keepalived.conf
global_defs {
   notification_email { # 设置报警邮件地址可以设置多个
     test@qq.com
   }
   notification_email_from root@qq.com  #发送邮件通知的地址
   smtp_server 127.0.0.1  # smtpserver 地址
   smtp_connect_timeout 30  # 连接smtpserver的超时时间
   router_id LVS_DEVEL  # 主机标识用于邮件通知
}

vrrp_script check_nginx {
   script "/usr/local/sbin/check_ng.sh"  # 脚本地址
   interval 3  # 检查时间间隔3}

vrrp_instance VI_1 {
    state BACKUP  # 指定keepalived节点的初始状态
    interface ens33  # vrrp实例绑定的接口
    virtual_router_id 51  # 指定VRRP实例ID,范围是0-255.
    priority 90  # 权重,主角色和从角色的权重是不同的,一般主比从大
    advert_int 1  # MASTER与BACKUP主机同步检查的时间间隔,
    authentication {  # 认证相关信息
        auth_type PASS  # 认证类型 PASS简单密码认证(推荐),AH:IPSEC认证(不推荐)
        auth_pass 123456789  # 指定认证所使用的密码。最多8位。
    }

    virtual_ipaddress {  # 设置虚拟IP地址
        192.168.237.100
    }

   track_script {  # 加载脚本
      check_nginx
   }
}
[root@backup keepalived]# vim /usr/local/sbin/check_ng.sh
#!/bin/bash
d=`date --date today +%Y%m%d_%H:%M:%S`
n=`ps -C nginx --no-heading|wc -l`
if [ $n -eq "0" ]; then
  systemctl restart 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

给脚本文件授权并开启服务

 [root@backup keepalived]# chmod a+x /usr/local/sbin/check_ng.sh
 [root@backup keepalived]# systemctl start keepalived

2. 验证Keepalived

2.1 验证

[root@master keepalived]# vim /usr/share/nginx/html/index.html
This is master
[root@master keepalived]# curl 192.168.237.151
this is master
[root@master keepalived]# curl 192.168.237.100
this is master
[root@backup keepalived]# vim /usr/share/nginx/html/index.html
This is backup
[root@backup keepalived]# curl 192.168.237.152
This is backup
[root@backup keepalived]# curl 192.168.237.100
this is master

2.2 测试如果主节点宕机,是否会有虚拟IP正常访问地址备用节点

[root@master keepalived]# systemctl stop keepalived
[root@master keepalived]# curl 192.168.237.100
This is backup

这边显示可以访问。

也可以在浏览器访问验证

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值