1. erlang和rabbitmq版本兼容性
在安装rabbitmq之前需要先安装erlang,需要注意两者之间的对应关系,可参考官网: www.rabbitmq.com/which-erlan…
2. 安装erlang
2.1 下载erlang源码
这里erlang版本选择21.3,可相应修改版本。
wget http://erlang.org/download/otp_src_21.3.tar.gz
2.2 安装必要环境
不确定源码安装是否需要这一步
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
yum install unixODBC unixODBC-devel
2.3 编译及安装
cd otp_src_21.3
./configure --prefix=/home/jw/install/erlang --with-ssl=/home/jw/.jumbo/etc/ssl/
make && make install
其中第二步编译时需要注意指定openssl(不确定是否需要),否则可能会导致erlang找不到openssl,报如下错误:
ssl目录如下:
2.4 配置环境变量
(1)vim /etc/profile
(2)文件末尾追加以下内容:
# erlang
export ERLANG_HOME=/home/jw/install/erlang
export PATH=$PATH:$ERLANG_HOME/bin
(3)source /etc/profile
2.5 验证erlang和openssl
执行erl
,并输入ssl:versions().
验证erlang是否正确安装。
3. 安装rabbitmq
3.1 下载rabbitmq源码
选择3、8.3
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.3/rabbitmq-server-generic-unix-3.8.3.tar.xz
官网下载页面:
https://www.rabbitmq.com/install-generic-unix.html
3.2 安装必要环境
不确定源码安装是否需要这一步
yum install python -y
yum install xmlto -y
yum install python-simplejson -y
3.3 配置环境变量
(1)vim /etc/profile
(2)文件末尾追加以下内容:
# rabbitmq
export RABBITMQ_HOME=/home/jw/install/rabbitmq_server-3.8.3
export PATH=$PATH:$RABBITMQ_HOME/sbin
(3)source /etc/profile
3.4 配置文件准备和修改
3.4.1 设置配置文件路径
(1)cd /home/jw/install/rabbitmq_server-3.8.3/etc/rabbitmq
(2)vim rabbitmq-env.conf
(3)输入以下内容来设置配置文件路径
CONFIG_FILE=/home/jw/install/rabbitmq_server-3.8.3/etc/rabbitmq/rabbitmq
需要注意的是,该行省略了最后的.conf
,所表示的配置文件路径应该是:
/home/jw/install/rabbitmq_server-3.8.3/etc/rabbitmq/rabbitmq.conf
3.4.2 配置文件
在github上下载一份实例配置文件,放到所配置的目录下,并命名为rabbitmq.conf。
github地址:github.com/rabbitmq/ra…
3.4.3 修改端口号
可以在配置文件中修改端口号。
例如,修改WEB管理插件的端口号(默认为15672):
management.tcp.port = 8801
3.4.4 启用WEB管理插件
cd /home/jw/install/rabbitmq_server-3.8.3/sbin
# 查看支持的插件
./rabbitmq-plugins list
#启动WEB管理插件
./rabbitmq-plugins enable rabbitmq_management
3.4.5 修改访问WEB管理页面控制
如果在其它机器上访问rabbitmq WEB管理页面,则需要访问权限。
注:rabbitmq默认账号和密码均为guest。
(1)vim /home/jw/install/rabbitmq_server-3.8.3/ebin/rabbit.app
(2)将{loopback_users, [<<"guest">>]}
修改为{loopback_users, []}
3.5 启动RabbitMQ、查看状态及停止RabbitMQ
cd /home/jw/install/rabbitmq_server-3.8.3/sbin
# 后台运行RabbitMQ
./rabbitmq-server -detached
#查看RabbitMQ运行状态
ps -ef | grep rabbitmq
# 默认端口5672 15672 25672
netstat -tnlp|grep 5672
./rabbitmqctl status
#停止RabbitMQ
./rabbitmqctl stop
3.6 登录WEB管理页面
输入 http://ip:port/ 输入账号密码,默认账号和密码均为guest 进入管理页面
3.7 创建用户,并允许通过web页面登录
rabbitmqctl add_user userName password
// 如果要从web页面登录,还需要添加管理员的权限
rabbitmqctl set_user_tags userName administrator
rabbitmqctl set_permissions --vhost '/' userName '.*' '.*' '.*'
4. RabbitMQ集群安装
4.1 单机器多节点集群安装
单机器多节点集群,一般用于没有足够机器、开发测试使用。
(1)启动多节点server
需要在不同端口上启动多个server,可以通过启动时设置环境变量方式(端口、node名)来在多个端口上启动mq server,如下:
RABBITMQ_NODE_PORT=8800 RABBITMQ_NODENAME=rabbit1 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,8810}]" ./rabbitmq-server -detached
RABBITMQ_NODE_PORT=8801 RABBITMQ_NODENAME=rabbit2 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,8811}]" ./rabbitmq-server -detached
RABBITMQ_NODE_PORT=8802 RABBITMQ_NODENAME=rabbit3 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,8812}]" ./rabbitmq-server -detached
(2)节点添加到集群
以某个节点为基准,将其它节点依次添加到集群,依次执行stop_app、reset、join_cluster、start_app、cluster_status。
# 停止 rabbit2 的 Erlang 虚拟机
rabbitmqctl -n rabbit2@host stop_app
rabbitmqctl -n rabbit2@host reset
rabbitmqctl -n rabbit2@host join_cluster rabbit1@host
rabbitmqctl -n rabbit2@host start_app
4.2 多机器多节点集群安装
需要注意的是,每台机器在源码安装了rabbitmq之后最好先不要启动mq server,先进行机器间cookie同步。
(1)cookie文件同步
以一台机器为准,将所有其它机器的cookie文件内容以该机器为准。
cookie文件路径一般是/var/lib/rabbitmq/.erlang.cookie
或者$HOME/.erlang.cookie
。
假如cookie文件只读,那么需要修改文件权限:
// 增加可写权限
chmod +w $HOME/.erlang.cookie
// 修改文件内容
// 下一步在运行mq提示不能访问cookie时可使用
chmod 600 /home/work/.erlang.cookie
(2)启动mq server
多台机器依次启动mq server:
./rabbitmq-server -detached
(3)修改host文件
为每个mq node名和ip在host文件中增加映射,例如:
192.168.0.2 node1
192.168.0.3 node2
192.168.0.4 node3
(4)节点加入集群
选择一台机器作为基准,其它机器依次执行stop_app、reset、join_cluster、start_app、cluster_status。
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app
rabbitmqctl cluster_status
参考网址
https://blog.csdn.net/weixin_41004350/article/details/83046842
https://blog.csdn.net/qq_39007083/article/details/104977840
https://blog.51cto.com/8355320/2445237