一、环境准备:满足基础依赖与版本要求
RabbitMQ基于Erlang语言开发,版本兼容性是关键(如RabbitMQ 3.12.x需搭配OTP 25+)。首先安装Erlang运行时环境:
sudo apt install erlang)或添加Erlang Solutions仓库获取最新版;rpm安装(如sudo yum install erlang)或从Erlang官网下载二进制包编译安装。sudo apt install curl gnupg build-essential libssl-dev),确保系统具备编译和网络能力。二、安装RabbitMQ:选择合适的部署方式
echo "deb https://dl.rabbitmq.com/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list),导入GPG密钥(curl -fsSL https://dl.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -),然后执行sudo apt update && sudo apt install rabbitmq-server。sudo yum install epel-release),再安装RabbitMQ(sudo yum install rabbitmq-server)。rpm -ivh命令安装,注意依赖顺序(先Erlang后RabbitMQ)。sudo systemctl start rabbitmq-server、sudo systemctl enable rabbitmq-server。三、核心配置优化:提升Broker稳定性与性能
/etc/rabbitmq/rabbitmq.conf(或rabbitmq.config),设置关键参数:
vm_memory_high_watermark.relative = 0.7(内存使用达70%时阻塞生产者,避免OOM);disk_free_limit.absolute = 50MB(磁盘剩余空间小于50MB时阻塞生产者,防止磁盘写满);listeners.tcp.default = 5672(AMQP协议端口)、management.tcp.port = 15672(管理插件端口)。guest(rabbitmqctl delete_user guest),创建新用户(rabbitmqctl add_user admin your_password);rabbitmqctl set_user_tags admin administrator);rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"),限制用户访问范围。rabbitmq-plugins enable rabbitmq_management),通过Web界面(http://IP:15672)监控队列、连接等状态;禁用无用插件(如rabbitmq_tracing),减少资源消耗。四、集群部署:实现高可用性
/var/lib/rabbitmq/.erlang.cookie文件内容一致(权限设为400,属主为rabbitmq),这是节点间通信的认证凭证。rabbitmqctl stop_app),加入主节点集群(rabbitmqctl join_cluster rabbit@主节点IP),最后启动应用(rabbitmqctl start_app)。rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'),确保队列在所有节点上有副本,提升容灾能力。五、性能调优:针对高并发场景优化
CachingConnectionFactory缓存连接);channel.confirmSelect(),批量等待消息确认(channel.waitForConfirmsOrDie(5000)),减少网络往返;channel.basicQos(prefetchCount)限制消费者预取数量(如prefetchCount=10),实现公平分发,避免消费者过载。/etc/security/limits.conf(rabbitmq soft nofile 65536、rabbitmq hard nofile 65536),避免大量连接导致句柄耗尽;rabbitmq-plugins list查看插件,禁用调试类插件(如rabbitmq_tracing),减少资源占用。六、监控与维护:保障系统稳定运行
curl -u admin:your_password http://localhost:15672/api/queues/%2F/my_queue)。/metrics接口),结合Grafana创建仪表板,实现可视化监控(如发布速率、消费延迟)。rabbitmqctl purge_queue queue_name);/etc/rabbitmq/rabbitmq.conf);