Rabbitmq安装文档

来源:互联网 发布:原帅数据 编辑:程序博客网 时间:2024/06/06 01:15

Window 安装

本篇经验将和大家介绍 RabbitMQ安装与配置步骤,希望对大家的工作和学习有所帮助!

安装

  1. 1 Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装RabbitMQ之前要先安装Erlang。

    erlang:http://www.erlang.org/download.html

    rabbitmq:http://www.rabbitmq.com/download.html

    注意:Window程序安装,按默认选项下一步下一步,执行完毕即可

    1.用的最新版本的3.6.6

    2.默认安装的Rabbit MQ 监听端口是:5672

    END

配置

  1. 1 安装完以后erlang需要手动设置ERLANG_HOME 的系统变量。

    输入:set ERLANG_HOME=C:\Program Files\erl8.0 (设置环境变量最新版本的会自动在环境变量中添加,如果没有添加的话用最,手动添加,不建议用set 方式设置环境变量)

  2. 2 激活Rabbit MQ's Management Plugin

    使用Rabbit MQ 管理插件,可以更好的可视化方式查看Rabbit MQ 服务器实例的状态,你可以在命令行中使用下面的命令激活。

    输入:rabbitmq-plugins.bat enable rabbitmq_management

    如下图所示:

    同时,我们也使用rabbitmqctl控制台命令(位于 rabbitmq_server-3.6.6\sbin>)来创建用户,密码,绑定权限等。

  3. 3 创建管理用户

    输入:rabbitmqctl.bat add_user admin admin

    如下图所示:

  4. 4 设置管理员

    输入:rabbitmqctl.bat set_user_tags admin administrator

    如下图所示:

  5. 5 设置权限

    输入:rabbitmqctl.bat set_permissions -p / admin ".*" ".*" ".*"

    如下图所示:

  6. 6 其他命令

    查询用户: rabbitmqctl.bat list_users

    查询vhosts: rabbitmqctl.bat list_vhosts

    启动RabbitMQ服务: net stop RabbitMQ && net start RabbitMQ

    以上这些,账号、vhost、权限、作用域等基本就设置完了。

    END

Rabbit MQ管理后台

  1. 1 使用浏览器打开http://localhost:15672 访问Rabbit Mq的管理控制台,使用刚才创建的账号登陆系统即可。

    Rabbit MQ 管理后台,可以更好的可视化方式查看RabbitMQ服务器实例的状态,如下图所示:

    END

创建vhosts

  1. 1 创建vhosts, 在admin页面,点击右侧Virtual Hosts ,如下图所示:

  2. 2 将刚创建的OrderQueue分配给相关用户。

  3. 3 其他创建exchange ,queue 大家自己在后台创建吧,这里不再赘述。


Linux 安装

实验环境

RabbitMQ 集群

server1.example.com IP: 10.10.10.11 Node: disk

server2.example.com IP: 10.10.10.12 Node: disk

server3.example.com IP: 10.10.10.13 Node: disk

RabbitMQ相关端口

4369 (epmd), RabbitMQ和CLI工具使用的对等发现服务25672 (Erlang distribution) 用于Erlang分布式节点和CLI工具通信的端口,并从动态范围分配(默认情况下为单个)5672, 5671 (AMQP 0-9-1 without and with TLS)15672 rabbitmqadmin 的 HTTP API客户端(只有管理插件开启的时候可以访问和使用)61613, 61614 (if STOMP is enabled)1883, 8883 (if MQTT is enabled)

YUM方式

添加EPEL源

# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

添加Erlang源

# yum install wget# rpm -Uvh http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm

安装RabbitMQ

# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/rabbitmq-server-3.6.1-1.noarch.rpm# rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc# yum install rabbitmq-server-3.6.1-1.noarch.rpm

手动RPM方式

安装RabbitMQ

# wget http://www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/rabbitmq-server-3.6.1-1.noarch.rpm# wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc# rpm --import rabbitmq-signing-key-public.asc# rpm -Uvh erlang-18.3-1.el7.centos.x86_64.rpm rabbitmq-server-3.6.1-1.noarch.rpm

注: 如果是RedHat6,erlang下载地址为 http://www.rabbitmq.com/releases/erlang/erlang-18.3-1.el6.x86\_64.rpm

RabbitMQ单机配置

  • 调整可打开文件/文件描述符数目(高并发支持)

调整系统限制

# vi /etc/sysctl.conf

fs.file-max = 100000

使设置生效

# sysctl -p

查看系统限制

# sysctl fs.file-max

调整用户限制

# vi /etc/security/limits.conf

*              soft     nofile      65536*              hard     nofile      65536

重启系统使之生效,检查用户限制是否生效

# ulimit -n
  • 添加/etc/hosts条目

# echo "192.168.136.201   server1">> /etc/hosts
  • 开通防火墙上Web UI访问端口(默认:15672/tcp)

# firewall-cmd --permanent --add-port=15672/tcp# firewall-cmd --reload
  • 设置RabbitMQ服务自启动,并启动RabbbitMQ服务

# chkconfig rabbitmq-server on# service rabbitmq-server start
  • 启用RabbitMQ监控插件

# rabbitmq-plugins enable rabbitmq_management

  • RabbitMQ用户管理

添加用户(用户名root,密码admin)

# rabbitmqctl add_user admin admin

设置用户角色(设置admin用户为管理员角色)

# rabbitmqctl set_user_tags admin administrator

设置用户权限(设置admin用户配置、写、读的权限)

# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

删除用户(删除guest用户)

# rabbitmqctl delete_user guest

注意:rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问。

如果想使用guest/guest通过远程机器访问,需要在rabbitmq配置文件中(/etc/rabbitmq/rabbitmq.config)中设置loopback_users为[]。

[{rabbit, [{loopback_users, []}]}].
  • 登陆Web UI

在浏览器中打开http://10.10.10.11:15672

输入用户名、密码,登陆成功后的界面

  • 检查RabbitMQ状态

查看进程:

# ps aux | grep -v grep | grep rabbitmq-server

查看端口:

# netstat -tnlp | grep 5672

如果提示netstat命令没找到,请先安装net-tools

# yum install net-tools

查看RabbitMQ状态:

# rabbitmqctl status
  • RabbitMQ默认配置

# cat /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.1/sbin/rabbitmq-defaults

;)

### next line potentially updated in package install stepsSYS_PREFIX=### next line will be updated when generating a standalone releaseERL_DIR=CLEAN_BOOT_FILE=start_cleanSASL_BOOT_FILE=start_sasl## Set default valuesBOOT_MODULE="rabbit"CONFIG_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmqLOG_BASE=${SYS_PREFIX}/var/log/rabbitmqMNESIA_BASE=${SYS_PREFIX}/var/lib/rabbitmq/mnesiaENABLED_PLUGINS_FILE=${SYS_PREFIX}/etc/rabbitmq/enabled_pluginsPLUGINS_DIR="${RABBITMQ_HOME}/plugins"IO_THREAD_POOL_SIZE=64CONF_ENV_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq-env.conf

;)

从上面看出:

  • 系统prefix是空
  • 配置文件路径是 /etc/rabbitmq/rabbitmq.config (erlang会自动加上.config后缀)
  • 环境配置文件是 /etc/rabbitmq/rabbitmq-env.conf
  • 日志文件目录是 /var/log/rabbitmq
  • 插件文件目录是 安装目录下的plugins,这里RPM安装方式下是 /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.1/plugins

RabbitMQ集群配置

集群配置在单机配置完成的基础上进行

  • 添加/etc/hosts条目

在server1、server2、server3里的/etc/hosts文件中分别添加:

10.10.10.11   server110.10.10.12   server210.10.10.13   server3
  • 设置每个节点Cookie

Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信

# chmod 700 /var/lib/rabbitmq/.erlang.cookie# echo -n "AZVOCZYZZBVFLBPTBXU" > /var/lib/rabbitmq/.erlang.cookie# chmod 400 /var/lib/rabbitmq/.erlang.cookie

建议在RabbitMQ服务启动前修改过cookie,如果RabbitMQ服务已经启动,修改cookie值后,必须重启RabbitMQ服务,这步很关键

# ps -ef | grep ^rabbitmq | awk '{print $2}' | xargs kill -9# service rabbitmq-server start
  • 开通防火墙上集群通信端口
# firewall-cmd --permanent --add-port={4369/tcp,25672/tcp}# firewall-cmd --reload
  • 加入集群

将 server1、server2 、server3组成集群:

默认是磁盘节点,如果是内存节点的话,需要加--ram参数

在server2、server3上分别运行:

# rabbitmqctl stop_app# rabbitmqctl join_cluster rabbit@server1# rabbitmqctl start_app
  • 设置镜像策略
# rabbitmqctl set_policy ha-all "^"'{"ha-mode":"all","ha-sync-mode":"automatic"}'

相关知识

rabbitmqctl (rabbitmq管理工具) rabbitmq-plugins (rabbitmq插件管理工具) rabbitmq-server (rabbitmq服务)

主要配置文件

  1. enabled_plugins:设置允许的插件列表。

  2. rabbitmq.config:设置rabbitmq运行参数,结构为hash数组格式。

  3. rabbitmq-env.conf:rabbitmq环境参数配置

rabbitmq-env.conf中的每项都以RABBITMQ_为前缀,常用参数如下:

RABBITMQ_NODENAME=FZTEC-240088//节点名称RABBITMQ_NODE_IP_ADDRESS=127.0.0.1//IP地址,空串bind所有地址,指定地址bind指定网络接口RABBITMQ_NODE_PORT=5672//TCP端口号,默认是5672RABBITMQ_LOG_BASE=/data/rabbitmq/log //日志所在路径RABBITMQ_PLUGINS_DIR=/data/rabbitmq/plugins //插件所在路径RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia //mnesia所在路径

rabbitmq-env.conf和rabbitmq.config默认是不存在的。

rabbitmq-env.conf需要在缺省位置手动创建一个。

rabbitmq.config需要在RABBITMQ_CONFIG_FILE指定位置手动创建一个。

安装中遇到的问题及解决办法

Centos 7 安装

erlang-19.0-1.el7.centos.x86_64.rpm

rabbitmq-server-3.6.6-1.el7.noarch.rpm

一直报主机名不正确(最后设置以下三个地方解决)

  1. 配置主机名称 hostnamectl 查看主机名称,用hostnamectl set-hostname 设置主机名称
  2. 配置/etc/hosts 设置需要的本次配置的内容如下 1. 130.10.8.207 server1 2. 130.10.8.208 server2 3. 130.10.8.209 server3

  3. 设置Rabbitmq的RABBITMQ_NODENAME 值为hosts中的映射 /etc/rabbitmq/rabbitmq_env.conf

断电后rabbitmq无法启动?

正常情况下,集群关闭时,那个节点最后关闭,一定要哪个节点最先启动,但是如果碰见例外情况(同时关闭),例如断电这种时候所有节点都会认为自己不是最后一个关闭的,那么这种时候,只要在任意一个节点上,使用force_boot命令使其再次引导后,然后在本节点上启动即可




原创粉丝点击