keepalived+nginx 高可用集群

目录:

一、什么是高可用?

  • nginx做负载均衡,能达到分发请求的目的,但是不能很好的避免单点故障。

1、nginx集群单点问题
分发器宕机怎么处理?

  • 假如nginx服务器挂掉了,那么所有的服务也会跟着瘫痪 。

  • 一种方法是人为监控,发现主分发器宕机后,立马登录备分发器,并给它分配虚ip。

  • 另一种办法是用软件来替代人来监控,自动登录备分发器,分配虚ip。

    数据服务器宕机怎么处理?

    • 分发器可以自动判断数据服务器的存活状态,不对宕机服务器要数据。

2、Keepalived介绍

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使 其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

总结来说:Keepalived软件是一个监控+自愈的软件。
运行协议是VRRP,主分发器的keepalived会向网络中发组播,宣告自己还活着,组播地址:224.0.0.18。

$ tcpdump -nn -vvv -i ens33 vrrp #查看组播的包
192.168.31.40 > 224.0.0.18: vrrp 192.168.31.40 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length
20, addrs: 192.168.31.213 auth “1111^¥##”
输出解析:192.168.31.40是master,目标地址是224.0.0.18,使用的协议是VRRPv2版本,虚拟id是51,优先级是100,简单验证类型,一秒发一次,长度20字节,虚Ip是192.168.31.213,
验证的密码是111#$Z%#

二、keepalived软件介绍

1、keepalived–监控检查

注:keepalive软件有两种功能:监控检查、VRRP冗余协议

  • keepalive的作用是检测web服务器的状态,如果一台web服务器宕机,会将故障机器从集群中剔除
  • keepalieve会从以下三层来检查集群中的服务是否正常:
    • 1)layer3:通过ICMP协议ping测试
    • 2)layer4:比如web服务,keepalived检查80端口是否启动
    • 3)layer7:根据用户的设定检查服务器程序运行是否正常

2、keepalived–VRRP冗余协议原理

注:vrrp是虚拟路由冗余协议,就是当出现单点故障问题通过竞选方式决定vip走向的一种机制

  • Keepalived高可用是通过vrrp协议通信的,vrrp是通过竞选机制决定主备
  • Keepalived 主的服务器会一直发送 VRRP广播包,告诉备它还活着
  • 当备机监听不到主发送的广播包时,就人为主机不可用,所有备机通过配置文件中的优先级选举新的主机
  • 新的主机就会启动相关服务接管资源,保证业务的连续性

三. keepalive+haproxy高可用集群

1、真实keepalive集群部署架构图

1)haproxy中的配置

  • haproxy的
    frontend模块配置负责给用户请求一个接口,backend定义可以定义后端一组服务器(其实就是keepalive主机组)
  • 一个frontend可以拥有多个backend,一个backend也可以让多个不同的frontend调用(后端api接口可以被多个前端调用)
  • 具体流程就是当frontend接受到用户请求,根据我们的配置交给指定的backend处理请求。
  • backend再将请求分发到真正的后端服务器

2)keepalive中的配置

  • 两台keepalive服务器同时监听一个虚拟IP,同一时间只有keepalive-master集群能够进行服务代理
  • 当keepalive-master宕机,keepalive-slave会立刻顶替master执行集群代理服务
    在这里插入图片描述

四. 使用docker-compose配置keepalive

1、环境说明(这里借用compose测试)

‘’‘环境中只需要一台虚拟机,然后使用docker-compose来启动三个docker容器模拟
haproxy、keepalive-master、keepalive-slave ‘’’
haproxy: 0.0.0.0:8000 (在docker-compose网络中映射宿主机的8000端口到haproxy)
keepalive-master: 172.20.128.2(VIP:172.20.128.4:80)
keepalive-slave: 172.20.128.3 (VIP:172.20.128.4:80)

2、部署keepalive项目代码

docker-compose.yml:

version: "3"
services:
  nginx_master:
    build:
      context: ./
      dockerfile: ./Dockerfile
    volumes:
      - ./index-master.html:/usr/share/nginx/html/index.html
      - ./favicon.ico:/usr/share/nginx/html/favicon.ico
      - ./keepalived-master.conf:/etc/keepalived/keepalived.conf
    networks:
      static-network:
        ipv4_address: 172.20.128.2
    cap_add: 
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值