【Rabbitmq】Ubuntu环境器集群搭建
环境准备
服务器
文档参考
apt source
https://packagecloud.io/rabbitmq/rabbitmq-server?filter=debs
安装手册
http://www.rabbitmq.com/install-debian.html
erlang 安装
https://packages.erlang-solutions.com/erlang/#tabs-debian
rabbitmq 各node server安装
根据官方安装说明 先安装 erlang 在安装 rabbitmq
RabbitMQ needs Erlang/OTP to run. Erlang/OTP packages in standard Debian and Ubuntu also can be quite outdated. Consider installing a newer version, such as 19.3.
安装依赖
# 添加apt 仓库 wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb sudo dpkg -i erlang-solutions_1.0_all.deb # 更新安装 sudo apt-get update sudo apt-get install erlang
安装rabbitmq
# 官方安装脚本 curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash # 添加rabbitmq 签名 (可略) wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add - # 更新并安装 sudo apt-get update(可略) sudo apt-get install rabbitmq-server
集群组织
提前准备
修改ulimit限制为51200
# 文件修改 sudo vim /etc/security/limits.conf # 结尾插入 * - nofile 51200 sudo vim /etc/sysctl.conf # 结尾插入 fs.file-max = 51200 sysctl -p # 启动脚本修改 sudo vim /lib/systemd/system/rabbitmq-server.service ## service 中插入 LimitNOFILE=51200 sudo systemctl daemon-reload
修改数据路径到新盘
/data/rabbitmq/mnesia
挂载新盘 过程略过
在/etc/rabbitmq/
创建文件 rabbitmq-env.conf
加入一行 RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia
node 之间的认证
关闭守护进程
sudo systemctl stop rabbitmq-server.service
同步cookie 文件
选取任意一台作为第一个节点,复制改节点下面的/var/lib/rabbitmq/.erlang.cookie
到其他节点,复制后修改文件权限和属主。
cd /var/lib/rabbitmq sudo chown rabbitmq.rabbitmq ./.erlang.cookie sudo chmod 400 ./.erlang.cookie
添加集群
# 开启内网端口 # 所有node执行 sudo rabbitmq-server -detached # 带加入的node上执行 sudo rabbitmqctl stop_app sudo rabbitmqctl join_cluster rabbit@ip-172-31-13-159 # 第一台node的名称 sudo rabbitmqctl start_app sudo rabbitmqctl stop sudo systemctl start rabbitmq-server.service
启用WEB UI
每一个node都需要启用 sudo rabbitmq-plugins enable rabbitmq_management
登录 https://xxx:15672 web管理页面 默认提供guest账号,但是该账号只提供localhost登录,所以需要单独创建用户,使用rabbitmqctl
。
用户相关命令如下:
$ sudo rabbitmqctl help |grep user add_user <username> <password> # 创建用户 delete_user <username> # 删除用户 change_password <username> <newpassword> # 修改密码 clear_password <username> # 清楚密码,直接登录 authenticate_user <username> <password> # 测试用户认证(我也不知道2333) set_user_tags <username> <tag> ... # 设置用户权限 [] list_users set_permissions [-p <vhost>] <user> <conf> <write> <read> clear_permissions [-p <vhost>] <username> list_user_permissions <username>
创建队列镜像
有两种方式,一种是使用rabbitmqctl
工具,另外一种是在web ui直接设置
可以参考下 https://segmentfault.com/a/1190000010702020
负载
负载本次使用的是aws elb
创建负载添加每一个节点到elb中, 对列最好建议内网使用,所以开放15672
到公网,开放5672
业务端口到内网
总结
本文只针对集群搭建,具体原理应用还请参考官方文档