RabbitMQ生产环境部署
Contents
安装
安装好
erlang
环境sudo apt-get install erlang erlang-dev
下载
rabbitmq
解压到你想要存放的目录,例如~/rabbitmq/
rabbitmq 的管理
配置好环境变量
RABBITMQ_HOME="/ihome/rabbitmq/rabbitmq_server-3.6.1"
配置文件位置
默认情况下,以下两个文件是不存在的。有需要的话,可以自行创建一个.
环境变量的配置文件
在$RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf
属性的配置文件在
在$RABBITMQ_HOME/etc/rabbitmq/rabbitmq.config
当然,如果想要改为像apt-get install
时的目录构架,也可以在$RABBITMQ_HOME/sbin/rabbitmq-defaults
文件里,修改以下的内容:
SYS_PREFIX=${RABBITMQ_HOME}
修改为
SYS_PREFIX=
即去掉这个前缀即可.
通过这个文件$RABBITMQ_HOME/sbin/rabbitmq-defaults
也可以了解到MQ的加载文件的位置。
注意,这样子修改完之后,MQ查找的配置文件位置就是/etc/rabbitmq/
目录下了,而不是原来的$RABBITMQ_HOME/etc/rabbitmq/
了,因为删除了这个前缀.
rabbitmq-env.conf 文件配置
这个文件的特点是:在外部环境变量的,并且是以RABBITMQ_
开头的环境变量名,在这个文件里就对应为去掉这个前缀的环境变量名。例如,在命令行里,如果有个外部环境变量,名为
RABBITMQ_NODENAME=xxx
,就对应这个文件的变量名NODENAME=xxx
,即等同于这个文件的内容为:
NODENAME=xxx
例如,如果想修改监听的指定IP,则可以添加以下内容到这个env文件里:
NODE_IP_ADDRESS=192.168.1.10
如果想监听2个或以个的IP,则需要在rabbitmq.config
文件的tcp_listeners
键里修改.内容类似如下:
{tcp_listeners, [{"127.0.0.1",5672},{"192.168.20.18",5672}]},
修改监听的端口
在rabbitmq-env.conf
文件里添加:
NODE_PORT=5672
修改节点名字
在rabbitmq-env.conf
文件里添加
NODENAME=hello
rabbitmq 获取变量的顺序
如果SHELL环境有一个名为
RABBITMQ_var_name
的变量名,那就使用这个.否则如果在
rabbitmq-env.conf
里有一个名为var_name
的变量名,那就使用这个.最后则在系统级获取这默认值.
rabbitmq.config 文件配置
RabbitMQ rabbitmq.config配置文件示例
比如,修改监听端口:
[
{rabbit, [{tcp_listeners, [5673]}]}
].
注意,最后还有一个英文句号.
全系列安装方式的配置文件位置列表
- Generic UNIX - $RABBITMQ_HOME/etc/rabbitmq/
- Debian - /etc/rabbitmq/
- RPM - /etc/rabbitmq/
- Mac OS X (Homebrew) - ${install_prefix}/etc/rabbitmq/, the Homebrew prefix is usually /usr/local
- Windows - %APPDATA%\RabbitMQ
默认的MQ使用端口情况
- 4369 (epmd), 25672 (Erlang distribution)
- 5672, 5671 (AMQP 0-9-1 without and with TLS)
- n15672 (if management plugin is enabled)
- 61613, 61614 (if STOMP is enabled)
- 1883, 8883 (if MQTT is enabled)
默认的用户名和密码
默认的用户名为:guest
默认的密码为:guest
rabbitmq
从3.3.0
开始禁止使用guest/guest
权限通过除localhost
外的访问
启动
非守护进程启动
$RABBITMQ_HOME/sbin/rabbitmq-server
以守护进程启动
$RABBITMQ_HOME/sbin/rabbitmq-server -detached
如果成功的话,它会显示类似以下的信息:
completed with [n] plugins
停止
$RABBITMQ_HOME/sbin/rabbitmqctl stop
查看状态
$RABBITMQ_HOME/sbin/rabbitmqctl status
与项目结合配置
- 添加一个vhost:
rabbitmqctl add_vhost /project_name
- 添加一个用户:
rabbitmqctl add_user project_user_name project_user_passwd
- 添加权限:
rabbitmqctl set_user_tags project_user_name management
- 开启web控制台:
rabbitmq-plugins enable rabbitmq_management
- 设置用户访问vhost权限:
rabbitmqctl set_permissions -p /project_name project_user_name ".*" ".*" ".*"
多实例管理
实例node1的配置文件node1.config
内容为:
[
{rabbit, [ {tcp_listeners, [5674]},
{collect_statistics_interval, 10000} ] },
{rabbitmq_management, [{listener, [{port, 12345}]}] }
].
实例node2的配置文件node2.config
内容为:
[
{rabbit, [ {tcp_listeners, [5674]},
{collect_statistics_interval, 10000} ] },
{rabbitmq_management, [{listener, [{port, 12345}]}] }
].
启动多实例
启动实例1:
RABBITMQ_CONFIG_FILE=/ihome/rabbitmq/rabbitmq_server-3.6.1/etc/rabbitmq/node1 RABBITMQ_NODE_PORT=5674 RABBITMQ_NODENAME=node1 /ihome/rabbitmq/rabbitmq_server-3.6.1/sbin/rabbitmq-server -detached
启动实例2: RABBITMQ_CONFIG_FILE=/ihome/rabbitmq/rabbitmq_server-3.6.1/etc/rabbitmq/node2 RABBITMQ_NODE_PORT=5675 RABBITMQ_NODENAME=node2 /ihome/rabbitmq/rabbitmq_server-3.6.1/sbin/rabbitmq-server -detached
启动完毕,就可以看到以下端口都在监听了
╭─sky@sky-linux /ihome/rabbitmq/rabbitmq_server-3.6.1/etc/rabbitmq
╰─➤ lsof -i:12346
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 22069 sky 46u IPv4 14451143 0t0 TCP *:12346 (LISTEN)
╭─sky@sky-linux /ihome/rabbitmq/rabbitmq_server-3.6.1/etc/rabbitmq
╰─➤ lsof -i:12345
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 21828 sky 46u IPv4 14447989 0t0 TCP *:12345 (LISTEN)
╭─sky@sky-linux /ihome/rabbitmq/rabbitmq_server-3.6.1/etc/rabbitmq
╰─➤ lsof -i:5674
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 21828 sky 45u IPv6 14445397 0t0 TCP *:mrtd (LISTEN)
╭─sky@sky-linux /ihome/rabbitmq/rabbitmq_server-3.6.1/etc/rabbitmq
╰─➤ lsof -i:5675
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 22069 sky 45u IPv6 14451141 0t0 TCP *:bgpsim (LISTEN)
它们web界面管理地址如下:
node1 http://localhost:12345/#/
node 2http://localhost:12346/#/
因为默认情况下,guest只能通过localhost访问,要想远程访问,最好添加一个远程访问用户,以减小权限的导致的问题.
查看节点状态
╭─sky@sky-linux /ihome/rabbitmq/rabbitmq_server-3.6.1
╰─➤ ./sbin/rabbitmqctl -n node1 status
Status of node 'node1@sky-linux' ...
[{pid,21828},
{running_applications,
...
即在rabbitmqctl -n 节点名 status
即可.
其他的操作,跟单节点时没什么区别,多节点时,只需要记得加上-n 节点名
即可.
停止某节点
╭─sky@sky-linux /ihome/rabbitmq/rabbitmq_server-3.6.1
╰─➤ ./sbin/rabbitmqctl -n node1 stop
Stopping and halting node 'node1@sky-linux' ...
关于RabbitMQ的集群,目前还没有这种需求,所以也就没有继续深入了.有需要时,再补充下资料.
注意事项
RABBITMQ_CONFIG_FILE
这个参数的配置,注意路径中,是不需要 .config
后缀的(The path to the configuration file, without the .config extension. )。