第一部分:RabbitMQ 生产级安装与使用​

1. 安装 Docker 与 Docker Compose​

确保你的服务器已安装 Docker 和 Docker Compose。

# 安装 Docker
curl -fsSL https://get.docker.com | sh
sudo systemctl enable docker
sudo systemctl start docker

# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.27.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

​2. 创建部署目录与文件​

mkdir ~/rabbitmq-production && cd ~/rabbitmq-production
vim docker-compose.yml

3. 编写 Docker Compose 文件​

将以下内容粘贴到 docker-compose.yml中。这是一个​​包含管理界面、持久化数据、固定端口​​的生产基础配置。

version: '3.8'
services:
  rabbitmq:
    image: rabbitmq:3.13-management-alpine # 使用带管理插面的版本
    container_name: rabbitmq
    hostname: rabbitmq-host # 设置主机名,很重要
    restart: unless-stopped # 总是重启,除非手动停止
    ports:
      - "5672:5672"   # AMQP 协议端口,应用程序连接用
      - "15672:15672" # Web 管理界面端口
    environment:
      - RABBITMQ_DEFAULT_USER=admin # 设置默认用户名
      - RABBITMQ_DEFAULT_PASS=YourStrongPasswordHere! # 设置一个强密码!
      # - RABBITMQ_DEFAULT_VHOST=/my_vhost # 可选:设置默认虚拟主机
    volumes:
      - rabbitmq_data:/var/lib/rabbitmq # 数据持久化
      - ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro # 挂载自定义配置(可选)
    networks:
      - rabbitmq_net

volumes:
  rabbitmq_data: # 命名卷,数据不会丢失
    driver: local

networks:
  rabbitmq_net:
    driver: bridge

4. 启动 RabbitMQ 服务​

docker-compose up -d

5. 验证与基本使用​

1.​检查服务状态​​:

docker-compose logs -f # 查看日志,确认无报错

docker-compose ps # 查看容器状态

2.​访问管理后台​​:

打开浏览器,访问 http://你的服务器IP:15672

用户名:admin

密码:YourStrongPasswordHere!

你能看到完整的控制台,可以管理连接、通道、队列、交换器等。

3.生产环境关键配置(在管理界面操作)​​:

​创建虚拟主机 (Vhost)​​:在 Admin -> Virtual Hosts -> Add a new virtual host下添加,如 /prod。用于环境隔离。

创建用户并授权​​:在 Admin -> Users -> Add a user下创建应用用户,不要使用 admin。然后点击用户名,在 Permissions标签页中,授予其对应 Vhost 的 .*权限(配置、写、读)。

设置镜像队列(高可用核心)​​:进入 Admin -> Policies -> Add / update a policy

​Name​​: ha-policy

Pattern​​: ^(匹配所有队列名)

Definition​​: ha-modeall(镜像到所有节点)

​Priority​​: 0

点击 Add policy。此后创建的所有队列都会成为镜像队列,即使一个节点宕机,队列也不会丢失。

第二部分:Kafka 生产级安装与使用​

Kafka 依赖 Zookeeper,所以我们需要同时部署两者。

​1. 创建部署目录与文件​

mkdir ~/kafka-production && cd ~/kafka-production
vim docker-compose.yml

将以下内容粘贴到 docker-compose.yml中。这是一个​​包含 Kraft 模式(去Zookeeper)​​ 的集群配置,更简单。

version: '3.8'
services:
  kafka1:
    image: apache/kafka:3.7.0 # 使用最新版本
    container_name: kafka1
    restart: unless-stopped
    ports:
      - "9092:9092" # 对外暴露的监听端口
    environment:
      # 每个Broker的唯一ID
      KAFKA_NODE_ID: 1
      # 用于发现的其他Broker列表(如果是单机,就写自己)
      KAFKA_LISTENER_SECURITY_PROTOCOL: PLAINTEXT
      KAFKA_LISTENERS: PLAINTEXT://:9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://你的服务器IP:9092 # 必须修改为服务器IP或域名!
      # Kraft 相关配置
      KAFKA_PROCESS_ROLES: broker,controller
      KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka1:9093 # 节点ID@主机名:端口
      # 集群名称
      KAFKA_CLUSTER_ID: MkU3OEVBNTcwNTJENDM2Qk
      # 其他配置
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false' # 生产环境建议关闭自动创建Topic
      KAFKA_NUM_PARTITIONS: 3 # 默认分区数
      KAFKA_LOG_RETENTION_HOURS: 168 # 数据保留时间,168小时=7天
    volumes:
      - kafka_data1:/var/lib/kafka/data
    networks:
      - kafka_net

  kafka-ui: # 一个非常好用的Kafka管理界面
    image: provectuslabs/kafka-ui:latest
    container_name: kafka-ui
    restart: unless-stopped
    ports:
      - "8989:8080" # 管理界面端口
    environment:
      - KAFKA_CLUSTERS_0_NAME=local-kafka
      - KAFKA_CLUSTERS_0_BOOTSTRAP_SERVERS=kafka1:9092
      - DYNAMIC_CONFIG_ENABLED=true
    depends_on:
      - kafka1
    networks:
      - kafka_net

volumes:
  kafka_data1:
    driver: local

networks:
  kafka_net:
    driver: bridge

重要​​:将 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://你的服务器IP:9092中的 你的服务器IP替换为服务器的​​真实公网IP或内网IP​​(客户端用什么地址连接,就填什么)。

3. 启动 Kafka 服务​

docker-compose up -d

访问管理后台

打开浏览器,访问 http://你的服务器IP:8989

你可以在 UI 中看到 Brokers、Topics、Messages 等所有信息。

生产环境关键操作(在Kafka-UI中或命令行)​​:

创建Topic​​:在 Kafka-UI 的 Topics -> Add a Topic中创建。

Name​​: my-topic

Number of partitions​​: 3(根据吞吐量需求设置)

Replication factor​​: 1(单节点只能为1,集群可设为2或3)

点击 Create

生产和消费消息(测试)​​:

在 Kafka-UI 的 Topics列表中找到你创建的 Topic,点击进入。

选择 Messages标签页,你可以直接输入 Key/Value 并 ​​Produce​​ 消息。

点击 ​​Consume​​ 按钮,即可开始消费消息。

​命令行测试​​:

# 进入Kafka容器

docker exec -it kafka1 /bin/bash

# 启动一个控制台生产者(在容器内)

/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic my-topic

# 启动一个控制台消费者(新开一个终端,进入容器)

/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic --from-beginning

第三部分:应用连接​

现在你的两个消息中间件都已就绪。

连接 RabbitMQ​​:

​Host​​: 你的服务器IP

Port​​: 5672

Username​​: admin(建议创建新用户)

​Password​​: YourStrongPasswordHere!

Virtual Host​​: /(或你创建的 /prod)

连接 Kafka​​:

Bootstrap Servers​​: 你的服务器IP:9092

​其他配置​​: 根据你的客户端语言(Java/Python/Go等)进行配置。

Logo

一座年轻的奋斗人之城,一个温馨的开发者之家。在这里,代码改变人生,开发创造未来!

更多推荐