1.1 keepalived高可用软件介绍

参考:
haproxy:

https://blog.csdn.net/l835311324/article/details/83031084 https://blog.csdn.net/qq_41772936/article/details/80718014
https://blog.51cto.com/3381847248/1977073
keepalive: 
https://blog.csdn.net/celeste7777/article/details/49096167
https://v3u.cn/a_id_117

  1、keepalived--监控检查

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

      1. keepalive的作用是检测web服务器的状态,如果一台web服务器宕机,会将故障机器从集群中剔除

      2. keepalieve会从以下三层来检查集群中的服务是否正常:

        1)layer3:通过ICMP协议ping测试

        2)layer4:比如web服务,keepalived检查80端口是否启动

        3)layer7:根据用户的设定检查服务器程序运行是否正常

  2、keepalived--VRRP冗余协议原理

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

      1. Keepalived高可用是通过vrrp协议通信的,vrrp是通过竞选机制决定主备

       2. Keepalived 主的服务器会一直发送 VRRP广播包,告诉备它还活着

      3. 当备机监听不到主发送的广播包时,就人为主机不可用,所有备机通过配置文件中的优先级选举新的主机

      4. 新的主机就会启动相关服务接管资源,保证业务的连续性

 1.2 keepalive+haproxy高可用集群

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

    1)haproxy中的配置

        1. haproxy的 frontend模块配置负责给用户请求一个接口,backend定义可以定义后端一组服务器(其实就是keepalive主机组)

        2. 一个frontend可以拥有多个backend,一个backend也可以让多个不同的frontend调用(后端api接口可以被多个前端调用)

        3. 具体流程就是当frontend接受到用户请求,根据我们的配置交给指定的backend处理请求。

        4. backend再将请求分发到真正的后端服务器

    2)keepalive中的配置

        1. 两台keepalive服务器同时监听一个虚拟IP,同一时间只有keepalive-master集群能够进行服务代理

        2. 当keepalive-master宕机,keepalive-slave会立刻顶替master执行集群代理服务

      06:keepalive高可用集群(新)

 1.3 使用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项目代码

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: 
      - NET_ADMIN
  nginx_slave:
    build:
      context: ./
      dockerfile: ./Dockerfile
    volumes:
      - ./index-slave.html:/usr/share/nginx/html/index.html
      - ./favicon.ico:/usr/share/nginx/html/favicon.ico
      - ./keepalived-slave.conf:/etc/keepalived/keepalived.conf
    networks:
      static-network:
        ipv4_address: 172.20.128.3
    cap_add: 
        - NET_ADMIN
  proxy:
    image: haproxy:1.7-alpine
    ports:
      - 8000:6301
    volumes:
      - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
    networks:
      - static-network

networks:
  static-network:
    ipam:
      config:
        - subnet: 172.20.0.0/16
docker-compose.yml

相关文章: