RabbitMQ安装

部署安装RabbitMQ前,先了解下基本概念:(RabbitMQ+Python入门经典] 兔子和兔子窝

RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。

MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。说的笼统点是queue+socket实现

安装Erlang

在安装RabbitMQ之前,我们需要安装Erlang,官方建议使用打包版本,有三个建议的来源:
  1、使用官方生成的一个软件包(https://github.com/rabbitmq/erlang-rpm),它只提供运行RabbitMQ所需要的组件,它可能会也可能不适合运行其他基于Erlang的软件或第三方RabbitMQ插件
  2、使用Erlang官方下载一个rpm包(https://www.erlang-solutions.com/resources/download.html),这个包通常是最新的
  3、使用EPEL源来安装,这种方式安装的包并不总是最新的

这里我选择第1种方式:

vim /etc/yum.repos.d/rabbitmq-erlang.repo
    [rabbitmq-erlang]
    name=rabbitmq-erlang
    baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7
    gpgcheck=1
    gpgkey=https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
    repo_gpgcheck=0
    enabled=1

yum install erlang

 

安装RabbitMQ服务器

wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.0/rabbitmq-server-3.7.0-1.el7.noarch.rpm
rpm --import https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
yum install rabbitmq-server-3.7.0-1.el7.noarch.rpm

 

启动服务器

systemctl enable rabbitmq-server
systemctl start rabbitmq-server

 

配置RabbitMQ

在大多数系统上,一个节点应该能够启动并运行所有的默认值
生产环境配置后面再详解
注意:服务器设置为以系统用户rabbitmq运行 。如果更改节点数据库或日志的位置,则必须确保文件由该用户所有(并且还要更新环境变量)

 

端口访问

SELinux和类似的机制可能会阻止RabbitMQ绑定到一个端口。发生这种情况时,RabbitMQ将无法启动
防火墙可以防止节点和CLI工具相互通信。确保可以打开以下端口:
4369:epmd, RabbitMQ节点和CLI工具使用的对等发现服务
5672,5671:  由AMQP 0-9-1和1.0客户端使用
25672:     由Erlang分配用于节点间和CLI工具通信,并且从动态范围分配(AMQP端口+20000)
15672:     HTTP API客户端和rabbitmqadmin(仅当管理插件启用时)
61613,61614:STOMP客户端没有和使用TLS(只有STOMP插件已启用)
1883年,8883:(MQTT客户端没有和TLS,如果MQTT插件已启用)
15674:STOMP-over-WebSockets客户端(仅在启用了Web STOMP插件的情况下)
15675:MQTT-over-WebSockets客户端(仅在启用了Web MQTT插件的情况下)

 

默认的用户访问

默认将创建一个用户guest,密码guest。默认情况下,只有在以localhost身份连接到代理时才能使用这些凭证

 

调整系统限制

运行生产工作负载的RabbitMQ安装可能需要系统限制和内核参数调整,以便处理体面的并发连接和队列。需要调整的主要设置是打开文件的最大数量,也称为ulimit -n
许多操作系统上的默认值对于消息传递代理来说太低(例如,在几个Linux发行版上为1024)。我们建议在生产环境中为用户rabbitmq至少允许65536个文件描述符。4096对于大多数开发工作量来说应该是足够的
有两个限制操作系统内核允许的最大打开文件数(fs.file-max)和每用户限制(ulimit -n)。前者必须高于后者

fs.file-max设置

# vim /etc/sysctl.conf,添加:
    fs.file-max = 65535
# sysctl -p

每用户限制(ulimit -n)

# vim /etc/security/limits.conf
    在最后一行添加如下命令
    root soft nofile 65535
    root hard nofile 65535
    * soft nofile 65535
    * hard nofile 65535
     
# vim /etc/rc.local
    ulimit -SHn 65535 

修改rabbitmq配置

修改rabbitmq配置
    修改/etc/systemd/system/multi-user.target.wants/rabbitmq-server.service
    在[Service]中,增加LimitNOFILE=30000(具体数值根据需要)
执行systemctl daemon-reload
重启rabbitmq服务
rabbitmqctl status

 

修改日志和数据存放路径

原来的默认位置是/var下, 以下数据在log里面可以查到,一般log 在/var/log.rabbitmq/rabbitmq@usrename.log 中

 

home dir : /var/lib/rabbitmq
config file(s) : (none)      #默认没有 rabbitmq.conf,可以在/etc/rabbitmq.conf
cookie hash : QuwI6ycYrkUgnpRXQvBoAg==
log(s) : /var/log/rabbitmq/rabbit@c1.log
           : /var/log/rabbitmq/rabbit@c1_upgrade.log
database dir : /var/lib/rabbitmq/mnesia/rabbit@c1

 创建数据文件和日志文件存放位置的目录

mkdir /data/rabbitmq/mnesia -p
mkdir /data/rabbitmq/log -p
chown -R rabbitmq.rabbitmq /data/rabbitmq

创建或新增参数配置文件

[root@c1 ~]# cat /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia
RABBITMQ_LOG_BASE=/data/rabbitmq/log

重启rabbitmq服务

 

配置文件

 Rabbitmq的配置文件有三个,位于/etc/rabbitmq/

  • enabled_plugins  (设置允许的插件列表)
  • rabbitmq.conf  (设置rabbitmq的运行参数)
  • rabbitmq-env.conf  (rabbitmq的环境参数配置)
该配置文档的格式为erlang的列表格式如

[rabbitmq_management,rabbitmq_visualiser].
enabled_plugins
tcp_listerners :设置rabbimq的监听端口,默认为[5672]。
disk_free_limit :磁盘低水位线,若磁盘容量低于指定值则停止接收数据,默认值为
{mem_relative, 1.0},即与内存相关联1:1,也可定制为多少byte.
vm_memory_high_watermark:设置内存低水位线,若低于该水位线,则开启流控机制,默认值是0.4,即内存总量的40%。
hipe_compile :将部分rabbimq代码用HighPerformance Erlang compiler编译,可提升性能,该参数是实验性,若出现erlang vm segfaults,应关掉。
force_fine_statistics, 该参数属于rabbimq_management,若为true则进行精细化的统计,但会影响性能。
rabbitmq.conf
RABBITMQ_NODE_PORT  端口设置,默认为5672
RABBITMQ_NODENAME   节点名称,默认为rabbit
MNESIA_BASE 后端存储目录,默认为/var/lib/rabbitmq/mnesia
LOG_BASE 日志目录,默认为/var/log/rabbitmq/
rabbitmq-env.conf

 

rabbitmq自带管理后台,安装后需要配置开启

 查看插件

rabbitmq-plugins list

开启网页监控插件, 开启15672端口

rabbitmq-plugins enable rabbitmq_management

网页管理后台默认只允许本地访问(guest/guest),因此目前我们访问http://ip:15672是无法登录的,现在需要添加远程登录用户

# rabbitmqctl add_user <username> <password>
rabbitmqctl add_user heboan  heboanpwd

设置远程登录(配置权限、写权限、读权限)

rabbitmqctl set_permissions -p "/" heboan ".*" ".*" ".*"

设置用户为管理员

rabbitmqctl set_user_tags heboan administrator

登录http://<your server ip>:15672  用户 heboan 密码 heboanpwd, 然后把guest用户删除

 

posted @ 2017-12-14 11:47  sellsa  阅读(2135)  评论(0编辑  收藏  举报