Keepalived+Nginx高可用集群

主从模式

在这里插入图片描述

集群特点及其功能

① 高可用性与可扩展性(为满足需求动态加入节点)
  高可用指的是24小时不间断使用,可扩展性指的是能满足需求动态加入节点。

② 负载均衡与错误恢复
  负载均衡主要用于分流。而错误恢复指的是当一个任务在一个节点没有完成时因为某种原因执行失败,此时另一个服务节点就会接着完成此任务,等出错的节点恢复好后重新回到这个集群。

③ 漂移IP地址
  漂移IP地址又叫做VIP,也就是虚拟IP,这个IP不是服务器固定的IP,可能一会在这个节点,也可能出现在另一个节点。例如正常情况下VIP位于主节点上,当主节点出现故障后,漂移IP地址自动切换到备用节点,因此为了保证服务的不间断,在集群系统中对外提供的服务IP一定要是这个VIP,否则如果是节点本身对外提供服务的话,当该节点失效后服务切换到另一个节点,但是服务IP仍是故障IP地址。

安装nginx

这里提供一个centos7安装nginx的传送门
链接: centos7安装nginx

安装keepalived

yum -y install keepalived

快速入门

安装成功后,两台机子都需要安装nginx和keepalived,进入目录 /etc/keepalived 下找到keepalived.conf文件
在这里插入图片描述打开后进行配置

======================================================

主机

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1 # 也可以改成本机
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   
}

vrrp_script chk_http_port {
 script "/opt/nginx_check.sh" # 自己设置脚本放置路径
 interval 2
 weight 2
}

vrrp_instance VI_1 {
    state MASTER # 主机
    interface ens33
    virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.179/24 dev ens33 label ens33:1 # 虚拟ip

    }
}

备用机

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1 # 也可以改成本机
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   
}

vrrp_script chk_http_port {
 script "/opt/nginx_check.sh" # 自己设置脚本放置路径
 interval 2
 weight 2
}

vrrp_instance VI_1 {
    state BACKUP # 备用机
    interface ens33
    virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
    priority 90 # 一定要比主机的优先级低
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.179/24 dev ens33 label ens33:1 # 虚拟ip

    }
}

脚本

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
 /usr/local/nginx/sbin/nginx
 sleep 2
 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
 killall keepalived
 fi
fi

ps -C nginx --no-header|wc -l解释:如果值为0,即代表服务未启动;如果值为非0,即代表服务已启动
killall keepalived解释:这个是以服务名称杀死进程
对于整个脚本的解释:
判断nginx 服务是否启动
如果未启动,执行启动命令
再次判断,如果启动失败,关掉keepalived,进入从节点

======================================================
均关闭防火墙和selinux(这里均为临时关闭)

 systemctl stop firewalld
setenforce 0

开启keepalived服务

systemctl start keepalived.service

开启nginx(如果是按上方安装教程,进入到下图文件夹里)
在这里插入图片描述

./nginx

或者执行命令,将nginx添加到全局变量

ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/

使用命令启动即可

nginx

======================================================
使用

ip addr

在这里插入图片描述这是主机上的,备用机如下
在这里插入图片描述现在关闭主机的keepalived服务

systemctl stop keepalived.service

主机
在这里插入图片描述备用机
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值