IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> KeepAlived+ha-proxy+rabbitmq(mirror镜像模式)集群高可用 -> 正文阅读

[系统运维]KeepAlived+ha-proxy+rabbitmq(mirror镜像模式)集群高可用

KeepAlived+ha-proxy+rabbitmq

mirror 镜像队列,是保证 rabbitMQ 数据的高可靠性解决方案,主要就是实现数据的同步,一般来讲是 2 - 3 个节点实现数据同步。对于 100% 数据可靠性解决方案,一般是采用 3 个节点。 在这里插入图片描述
用 KeepAlived 做 HA-Proxy 的高可用,然后有 3 个节点的 MQ 服务,消息发送到主节点上,主节点通过 mirror 队列把数据同步到其他的 MQ 节点,来实现其高可靠。

构建rabbitmq

docker pull rabbitmq:3.9.11-management-alpine

#/www/biny/docker-compose/rabbitmq.yaml
version: "3.6" # 确定docker-composer文件的版本
services:
  # 代表就是一组服务 - 简单来说一组容器
  # server
  rabbitmq_server_175_10:
    # 这个表示服务的名称,课自定义; 注意不是容器名称
    image: rabbitmq:3.9.11-management-alpine # 指定容器的镜像文件
    ports:
      # 配置容器与宿主机的端口
      - "15610:15672"
      - "5610:5672"
    networks:
      ## 引入外部预先定义的网段
      rabbitmq:
        ipv4_address: 175.22.1.10 #设置ip地址
    hostname: rabbitmq_server_175_10
    volumes:
      - "/www/biny/rabbitmq/10:/var/lib/rabbitmq"
    container_name: rabbitmq_server_175_10 # 这是容器的名称
    # command:
  rabbitmq_server_175_11:
    # 这个表示服务的名称,课自定义; 注意不是容器名称
    image: rabbitmq:3.9.11-management-alpine # 指定容器的镜像文件
    ports:
      # 配置容器与宿主机的端口
      - "15611:15672"
      - "5611:5672"
    networks:
      ## 引入外部预先定义的网段
      rabbitmq:
        ipv4_address: 175.22.1.11 #设置ip地址
    hostname: rabbitmq_server_175_11
    volumes:
      - "/www/biny/rabbitmq/11:/var/lib/rabbitmq"
    container_name: rabbitmq_server_175_11 # 这是容器的名称
  rabbitmq_server_175_12:
    # 这个表示服务的名称,课自定义; 注意不是容器名称
    image: rabbitmq:3.9.11-management-alpine # 指定容器的镜像文件
    ports:
      # 配置容器与宿主机的端口
      - "15612:15672"
      - "5612:5672"
    networks:
      ## 引入外部预先定义的网段
      rabbitmq:
        ipv4_address: 175.22.1.12 #设置ip地址
    hostname: rabbitmq_server_175_12
    volumes:
      - "/www/biny/rabbitmq/12:/var/lib/rabbitmq"
    container_name: rabbitmq_server_175_12 # 这是容器的名称
# 设置网络模块
networks:
  # 自定义网络
  rabbitmq:
    driver: bridge
    ipam:
      #定义网段
      config:
        - subnet: "175.22.1.0/24"

docker-compose -f rabbitmq.yaml up -d
默认账号密码:guest
在这里插入图片描述
docker exec -it rabbitmq_server_175_10 bash # 进入一台rabbitmq容器
cat /root/.erlang.cookie # 查看cookie并保存
将cookie替换到所有rabbitmq容器的.erlang.cookie文件中
如遇到权限问题,直接进入容器中编辑cookie文件,保持3个文件一致
在这里插入图片描述
执行 sh init_rabbitmq.sh
访问:http://127.0.0.1:15610/在这里插入图片描述

构建ha-proxy

docker pull haproxy:1.7-apline

# ha-proxy.yaml
version: "3.6" # 确定docker-composer文件的版本
services: # 代表就是一组服务 - 简单来说一组容器
  # server
  haproxy_server_176_10: # 这个表示服务的名称,课自定义; 注意不是容器名称
    image: haproxy:1.7-alpine # 指定容器的镜像文件
    ports: # 配置容器与宿主机的端口
      - "8110:8100" # web监听端口
      - "5710:5600" # 反向代理 mq 的端口
    networks: ## 引入外部预先定义的网段
       haproxy:
         ipv4_address: 176.22.1.10   #设置ip地址
    privileged: true # 让程序在root下运行
    volumes:
      - "/www/biny/haproxy:/haproxy"
      - "/www/biny/haproxy/keepalived/10:/keepalived"
    container_name: haproxy_server_176_10 # 这是容器的名称
    command: haproxy -f /haproxy/haproxy.cfg
  haproxy_server_176_11: # 这个表示服务的名称,课自定义; 注意不是容器名称
    image: haproxy:1.7-alpine # 指定容器的镜像文件
    ports: # 配置容器与宿主机的端口
      - "8111:8100"
      - "5711:5600"
    networks: ## 引入外部预先定义的网段
       haproxy:
         ipv4_address: 176.22.1.11   #设置ip地址
    privileged: true
    volumes:
      - "/www/biny/haproxy:/haproxy"
      - "/www/biny/haproxy/keepalived/11:/keepalived"
    container_name: haproxy_server_176_11 # 这是容器的名称
    command: haproxy -f /haproxy/haproxy.cfg
# 设置网络模块
networks:
  # 自定义网络
  haproxy:
    driver: bridge
    ipam: #定义网段
      config:
        - subnet: "176.22.1.0/24"

docker-compose -f ha-proxy.yaml up -d
在这里插入图片描述

ha-proxy容器中安装keepalived

ha-proxy-Dockerfile重新构建安装好keepalived的haproxy容器
docker build -t haproxy .

FROM haproxy:2.3-dev3-alpine
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
  && apk add keepalived

docker-compose -f ha-proxy.yaml down
修改ha-proxy.yaml文件,启用新容器
docker-compose -f ha-proxy.yaml up -d
添加虚拟ip
docker exec -it haproxy_server_176_10 sh
keepalived -f /keepalived/keepalived.conf
ip a
在这里插入图片描述
docker exec -it haproxy_server_176_11 sh
keepalived -f /keepalived/keepalived.conf
ip a
ifconfig eth0:0 176.22.1.100 netmask 255.255.255.0 up

nginx反向代理

增加nginx反向代理指向keepalived虚拟ip—haproxy—rabbitmq

# ha-proxy.yaml
version: "3.6" # 确定docker-composer文件的版本
services: # 代表就是一组服务 - 简单来说一组容器
  # server
  haproxy_server_176_10: # 这个表示服务的名称,课自定义; 注意不是容器名称
    image: haproxy # 指定容器的镜像文件
    ports: # 配置容器与宿主机的端口
      - "8110:8100" # web监听端口
      - "5710:5600" # 反向代理 mq 的端口
    networks: ## 引入外部预先定义的网段
       haproxy:
         ipv4_address: 176.22.1.10   #设置ip地址
    privileged: true # 让程序在root下运行
    volumes:
      - "/www/biny/haproxy:/haproxy"
      - "/www/biny/haproxy/keepalived/10:/keepalived"
    container_name: haproxy_server_176_10 # 这是容器的名称
    command: haproxy -f /haproxy/haproxy.cfg
  haproxy_server_176_11: # 这个表示服务的名称,课自定义; 注意不是容器名称
    image: haproxy # 指定容器的镜像文件
    ports: # 配置容器与宿主机的端口
      - "8111:8100"
      - "5711:5600"
    networks: ## 引入外部预先定义的网段
       haproxy:
         ipv4_address: 176.22.1.11   #设置ip地址
    privileged: true
    volumes:
      - "/www/biny/haproxy:/haproxy"
      - "/www/biny/haproxy/keepalived/11:/keepalived"
    container_name: haproxy_server_176_11 # 这是容器的名称
    command: haproxy -f /haproxy/haproxy.cfg
  nginx_haproxy:
    image: nginx:1.21 # 指定容器的镜像文件.
    ports: # 配置容器与宿主机的端口
      - "5600:5600"
    networks: ## 引入外部预先定义的网段
       haproxy:
         ipv4_address: 176.22.1.12   #设置ip地址
    volumes:
      - "/www/biny/hanginx/conf:/etc/nginx"
    container_name: nginx_haproxy_176_12 # 这是容器的
    #command: nginx -c /nginx/conf/nginx.conf
# 设置网络模块
networks:
  # 自定义网络
  haproxy:
    driver: bridge
    ipam: #定义网段
      config:
        - subnet: "176.22.1.0/24"

docker-compose -f ha-proxy.yaml up -d
在这里插入图片描述

宿主机执行访问测试
这里是引用
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-11 16:07:48  更:2021-12-11 16:10:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:54:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码