Ubuntu24 安装 RabbitMQ

Ubuntu24 安装 RabbitMQ

  1. 添加官方仓库和密钥:将官方仓库添加到你的软件源列表,并导入签名密钥

    bash
    # 安装依赖
    sudo apt-get update -y
    sudo apt-get install curl gnupg apt-transport-https -y
    
    # 导入 RabbitMQ 签名密钥
    curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
    
    # 配置 Ubuntu 24.04 (Noble) 的 APT 仓库
    sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
    ## 现代 Erlang/OTP 版本
    deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/ubuntu/noble noble main
    deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/ubuntu/noble noble main
    ## 最新 RabbitMQ 版本
    deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/noble noble main
    deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/ubuntu/noble noble main
    EOF
  2. 安装 Erlang 和 RabbitMQ

    bash
    sudo apt-get update -y
    sudo apt-get install -y erlang-base \
            erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
            erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
            erlang-runtime-tools erlang-snmp erlang-ssl \
            erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
    sudo apt-get install rabbitmq-server -y --fix-missing
  3. 启用管理插件并创建管理员账户

    bash
    # 启用 Web 管理界面
    sudo rabbitmq-plugins enable rabbitmq_management
    
    # 创建管理员账户(替换 your_admin 和 strong_password)
    sudo rabbitmqctl add_user your_admin strong_password
    sudo rabbitmqctl set_user_tags your_admin administrator
    sudo rabbitmqctl set_permissions -p / your_admin ".*" ".*" ".*"

性能优化:操作系统层面

在生产环境中,调整操作系统参数对性能至关重要。

  • 提升文件描述符限制:RabbitMQ 需要处理大量连接和文件,默认的 1024 限制过低。建议通过修改 Systemd 服务配置,将限制提升至 64000 或更高

    bash
    # 创建服务配置目录
    sudo mkdir -p /etc/systemd/system/rabbitmq-server.service.d
    # 写入限制配置
    sudo tee /etc/systemd/system/rabbitmq-server.service.d/limits.conf <<EOF
    [Service]
    LimitNOFILE=64000
    EOF
    
    # 重新加载并重启服务
    sudo systemctl daemon-reload
    sudo systemctl restart rabbitmq-server

  • 优化网络和内存参数:这些调整可以提升网络吞吐量并减少内存交换,从而提高性能

    bash
    # 临时调整,可将以下命令加入 /etc/sysctl.conf 以永久生效
    # 增大 TCP 缓冲区
    sudo sysctl -w net.core.rmem_max=16777216
    sudo sysctl -w net.core.wmem_max=16777216
    sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
    sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"
    # 降低 Swappiness 值,优先使用物理内存
    sudo sysctl -w vm.swappiness=10

性能优化:RabbitMQ 自身配置

/etc/rabbitmq/rabbitmq.conf 文件中调整以下核心参数,可以更好地控制资源使用

  • 内存和磁盘水位线:设置内存和磁盘的告警阈值,防止 RabbitMQ 因资源耗尽而崩溃。

    text
    # 设置内存上限为物理内存的 70%
    vm_memory_high_watermark.relative = 0.7
    # 设置磁盘可用空间下限为 1GB
    disk_free_limit.absolute = 1GB

  • 其他建议

    • 队列设计:避免队列消息堆积过多,可设置队列最大长度。对于高吞吐场景,考虑使用 lazy 队列将消息尽可能存在磁盘上

    • 连接管理:生产者和消费者使用不同的连接,并复用连接和通道,避免频繁创建销毁带来的开销

配置 Nginx 实现域名反向代理

配置 Nginx 作为反向代理,可以使用域名(如 rabbitmq.yourdomain.com)安全地访问管理界面,并且可以方便地启用 HTTPS

  1. 安装 Nginx

    bash
    sudo apt install nginx -y
    sudo systemctl enable nginx
    sudo systemctl start nginx

  2. 创建 Nginx 虚拟主机配置:创建一个新的配置文件 /etc/nginx/sites-available/rabbitmq.conf,并写入以下内容(将 rabbitmq.yourdomain.com 替换为你的真实域名)

    nginx
    server {
        listen 80;
        server_name rabbitmq.yourdomain.com; # 替换为你的域名
    
        location / {
            proxy_pass http://127.0.0.1:15672;  # 代理到本地的管理界面端口
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_redirect off;
            proxy_http_version 1.1;
        }
    }

  3. 启用配置并重启 Nginx

    bash
    sudo ln -s /etc/nginx/sites-available/rabbitmq.conf /etc/nginx/sites-enabled/
    sudo nginx -t  # 测试配置语法
    sudo systemctl restart nginx

  4. 使用 Certbot 自动获取并配置 SSL 证书(强烈推荐)

    bash
    sudo apt install certbot python3-certbot-nginx -y
    sudo certbot --nginx -d rabbitmq.yourdomain.com # 替换为你的域名

    按照提示操作,Certbot 会自动修改 Nginx 配置,启用 HTTPS 并实现自动续期。

生产环境补充建议

  • 安全加固:务必删除默认的 guest 用户。如果仅在本地访问管理界面,可让它只监听 127.0.0.1,通过 Nginx 暴露出去会更安全。

  • 高可用架构:对于核心业务,建议搭建至少 3 个节点的 RabbitMQ 集群,并使用仲裁队列(Quorum Queues)以获得更强的数据一致性。在前端可以使用 HAProxy 对 AMQP 端口(5672)和管理端口(15672)进行负载均衡

  • 监控与告警:启用 rabbitmq_prometheus 插件,将监控指标接入 Prometheus + Grafana 进行可视化展示和告警

上一篇