CentOS下RabbitMQ 部署记录

erlang与rabbitmq版本对应关系:
https://www.rabbitmq.com/which-erlang.html

1、 全源码安装RabbitMQ

安装erlang

下载地址:
http://www.erlang.org/downloads

安装依赖
 yum install -y gcc gcc-c++ ncurses ncurses-base ncurses-devel ncurses-libs ncurses-static ncurses-term ocaml-curses ocaml-curses-devel zlib-devel openssl-devel perl xz xmlto kernel-devel m4 glibc-devel  socat make  
 
下载
 cd /usr/local/src/
 wget -c http://erlang.org/download/otp_src_20.2.tar.gz
 
 .解压
 tar -zxvf otp_src_20.2.tar.gz

.编译
cd /usr/local/src/otp_src_20.2/
./configure --prefix=/usr/local/erlang

.安装
cd /usr/local/src/otp_src_20.2/
make && make install

.测试安装是否成功
cd /usr/local/erlang/bin/
./erl
输入 halt().  退出控制台

.配置环境变量
vim /etc/profile
#erlang
export PATH=$PATH:/usr/local/erlang/bin
#生效环境变量
source /etc/profile
任意地方输入erl能进入命令行, 那么就说明配置成功了。

安装rabbitmq

下载地址:
http://www.rabbitmq.com/releases/rabbitmq-server

.下载
 cd /usr/local/src/
 wget -c http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-generic-unix-3.6.15.tar.xz
 
 .解压
 cd /usr/local/src/
 xz -d rabbitmq-server-generic-unix-3.6.15.tar.xz 
 tar -xvf rabbitmq-server-generic-unix-3.6.15.tar
 mv /usr/local/src/rabbitmq_server-3.6.15  /usr/local/

.配置环境变量
vim /etc/profile
#rabbitmq
export PATH=$PATH:/usr/local/rabbitmq_server-3.6.15/sbin
source /etc/profile

.启动后台管理
rabbitmq-plugins enable rabbitmq_management

.启动
rabbitmq-server -detached

.查看状态
rabbitmqctl status

.创建一个用户,账号admin 密码admin
rabbitmqctl add_user admin admin

2.将admin用户赋管理员权限
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

.访问管理页面,默认为端口15672
#默认来宾用户:guest, 来宾用户密码:guest
http://192.168.10.33:15672 

rabbitmq操作命令

1、#启动后台管理
 rabbitmq-plugins enable rabbitmq_management
 
 2、#启动
 rabbitmq-server -detached
 
  3、#关闭
 rabbitmqctl stop
 
4、#查看状态
rabbitmqctl status

5、#设置端口号或者关闭防火墙,以便外部访问
iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
或
service iptables stop

6、#查看有哪些用户
rabbitmqctl list_users

7、#创建一个用户,账号admin 密码admin
rabbitmqctl add_user admin admin

8、#将admin用户赋管理员权限
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

9、#删除用户
rabbitmqctl delete_user username

10、#改密码
rabbimqctl change_password username newpassword 

11、#检查本地节点是否正在运行
sudo rabbitmq-diagnostics ping

12、#节点摘除
rabbitmqctl forget_cluster_node rabbit@rabbit3 

13、#重置
rabbitmqctl reset application 

14、#打印已启用的组件
sudo rabbitmq-diagnostics status

15、#打印有效的节点配置
sudo rabbitmq-diagnostics环境

16、#对本地节点执行更广泛的运行状况检查
sudo rabbitmq-diagnostics node_health_check

17 、#开启/关闭某个插件,需重启生效
rabbitmq-plugins enable/disable xxx 

18、#查看所有队列信息
rabbitmqctl list_queues

19、#关闭应用
rabbitmqctl stop_app

19、#启动应用
rabbitmqctl start_app

20、#清除所有队列
rabbitmqctl reset

#访问管理页面,默认为端口15672
http://IP:15672

端口用途

4369
empd(Erlang Port Mapper Daemon),是 Erlang 的端口/结点名称映射程序,用来跟踪节点名称监听地址,在集群中起到一个类似 DNS 的作用;

5672、5671
由 AMQP 0-9-1 和 1.0 客户端使用;

15672
HTTP_API 端口,管理员用户才能访问,用于管理 RbbitMQ,需要启用 management 插件, rabbitmq-plugins enable rabbitmq_management ,访问 http://server-name:15672/;

25672
Erlang distribution,和4369配合;

61613、61614
当STOMP插件启用的时候打开,作为STOMP客户端端口(根据是否使用TLS选择);

1883、8883
当MQTT插件启用的时候打开,作为MQTT客户端端口(根据是否使用TLS选择);

15674
基于WebSocket的STOMP客户端端口(当插件Web STOMP启用的时候打开);

15675
基于WebSocket的MQTT客户端端口(当插件Web MQTT启用的时候打开);

2、rpm安装RabbitMQ

1. 更新基本系统
安装任何软件包之前,建议使用以下命令更新软件包和存储库

yum -y update

2. 安装Erlang
由于RabbitMQ是基于Erlang(面向高并发的语言)语言开发,所以在安装RabbitMQ之前,需要先安装Erlang。在本教程中我们将安装最新版本的Erlang到服务器中。Erlang在默认的YUM存储库中不可用,因此您将需要安装EPEL存储库。运行以下命令相同。

yum -y install epel-release

安装Erlang

yum -y install erlang socat

您现在可以使用以下命令检查Erlang版本。

[root@liptan-pc ~]# erl -version
Erlang (ASYNC_THREADS,HIPE) (BEAM) emulator version 5.10.4

2. 安装RabbitMQ
RabbitMQ为预编译并可以直接安装的企业Linux系统提供RPM软件包。唯一需要的依赖是将Erlang安装到系统中。我们已经安装了Erlang,我们可以进一步下载RabbitMQ。通过运行下载Erlang RPM软件包。
2.1 下载RabbitMQ
下载RabbitMQ

wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm

如果你没有安装wget ,可以运行yum -y install wget 。您可以随时找到最新版本的RabbitMQ下载页面的链接。
2.2 安装RabbitMQ
通过运行导入GPG密钥:

rpm –import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

在这里插入图片描述
运行RPM安装RPM包:

rpm -Uvh rabbitmq-server-3.6.10-1.el7.noarch.rpm

CentOS下RabbitMQ 部署记录_第1张图片
RabbitMQ现已经安装在系统上。
3. 使用RabbitMQ
运行

systemctl start rabbitmq-server

开机自启

systemctl enable rabbitmq-server

检查状态

systemctl status rabbitmq-server

4. 访问Web控制台4.1 启动web控制台
启动RabbitMQ Web管理控制台,方法是运行:

rabbitmq-plugins enable rabbitmq_management

通过运行以下命令,将RabbitMQ文件的所有权提供给RabbitMQ用户:

chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/

4.2 创建用户
现在,您将需要为RabbitMQ Web管理控制台创建管理用户。运行以下命令相同。

rabbitmqctl add_user admin StrongPassword
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin “.*” “.*” “.*

将管理员更改为管理员用户的首选用户名。确保将StrongPassword更改为非常强大的密码。
要访问RabbitMQ的管理面板,请使用您最喜爱的Web浏览器并打开以下URL。

http://Your_Server_IP:15672/

5.管理界面介绍
第一次访问需要登录,默认的账号密码为:guest/guest
5.1.主页
CentOS下RabbitMQ 部署记录_第2张图片
connections:无论生产者还是消费者,都需要与RabbitMQ建立连接后才可以完成消息的生产和消费,在这里可以查看连接情况channels:通道,建立连接后,会形成通道,消息的投递获取依赖通道。Exchanges:交换机,用来实现消息的路由Queues:队列,即消息队列,消息存放在队列中,等待消费,消费后被移除队列。
端口:
CentOS下RabbitMQ 部署记录_第3张图片
5.2.添加用户
CentOS下RabbitMQ 部署记录_第4张图片
上面的Tags选项,其实是指定用户的角色,可选的有以下几个:
超级管理员(administrator)
可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。

监控者(monitoring)

可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
策略制定者(policymaker)
可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
普通管理者(management)
仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
其他
无法登陆管理控制台,通常就是普通的生产者和消费者。
5.3.创建虚拟主机(Virtual Hosts)
为了让各个用户可以互不干扰的工作,RabbitMQ添加了虚拟主机(Virtual Hosts)的概念。其实就是一个独立的访问路径,不同用户使用不同路径,各自有自己的队列、交换机,互相不会影响。
CentOS下RabbitMQ 部署记录_第5张图片
创建好虚拟主机,我们还要给用户添加访问权限:
点击添加好的虚拟主机:
CentOS下RabbitMQ 部署记录_第6张图片
进入虚拟主机设置界面:
CentOS下RabbitMQ 部署记录_第7张图片

3、

1、下载安装包,建立activemq用户,安装#

cd /opt/
wget  http://apache.dataguru.cn/activemq/apache-activemq/5.7.0/apache-activemq-5.7.0-bin.tar.gz
wget  http://apache.dataguru.cn/activemq/apache-activemq/5.9.0/apache-activemq-5.9.0-bin.tar.gz
adduser activemq
tar xvzf apache-activemq-5.7.0.tar.gz

ln -s apache-activemq-5.7.0 activemq

chown -R activemq.activemq apache-activemq-5.7.0

ln -sf /opt/activemq/bin/activemq /etc/init.d/

update-rc.d activemq defaults
  1. 生成并编辑配置文件 #
/etc/init.d/activemq setup /etc/default/activemq
chmod 600 /etc/default/activemq 
chown activemq. /etc/default/activemq
mkdir /var/xxxx
vim /etc/default/activemq  
add  ACTIVEMQ_DATA="/var/xxxx"  #the 7 line
add  ACTIVEMQ_USER="activemq"  #the 51 line
修改/etc/security/limits.conf文件,添加如下内容。
activemq - nofile 32768
activemq soft nproc 32000
activemq hard nproc 32000

CentOS下RabbitMQ 部署记录_第8张图片
3.JMX配置#

vim  /etc/default/activemq

cancel note as follows
ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=11099 "

ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_CONF}/jmx.password"

ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_CONF}/jmx.access"

ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.ssl=false"

ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote"

ACTIVEMQ_SUNJMX_CONTROL="--jmxurl service:jmx:rmi:///jndi/rmi://127.0.0.1:11099/jmxrmi --jmxuser admin --jmxpassword activemq"
add note as follows
#ACTIVEMQ_SUNJMX_CONTROL=""
Remarks modify jmxuser and jmxpassword,ensure /opt/activemq/conf/jmx.access file and /opt/activemq/conf/jmx.password file site the same.
Give jmx.* file  permission as follows
chmod 600 /opt/activemq/conf/jmx.*

4.启动和停止activemq#

/etc/init.d/activemq start
/etc/init.d/activemq stop

5.访问activemq管理界面#

http://x.x.x.x:8161/
user:admin
pwd:admin

常见问题

1、

820 14:17:30 localhost.localdomain rabbitmq-server[141651]:    /var/log/rabbitmq/rabbit@localhost.log
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:    /var/log/rabbitmq/rabbit@localhost-sasl.log
820 14:17:30 localhost.localdomain rabbitmq-server[141651]: Stack trace:
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:    [{gen,do_for_proc,2,[{file,"gen.erl"},{line,228}]},
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:     {gen_event,rpc,2,[{file,"gen_event.erl"},{line,239}]},
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:     {rabbit,ensure_working_log_handlers,0,
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:             [{file,"src/rabbit.erl"},{line,842}]},
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:     {rabbit,'-boot/0-fun-0-',0,[{file,"src/rabbit.erl"},{line,281}]},
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:     {rabbit,start_it,1,[{file,"src/rabbit.erl"},{line,417}]},
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:     {init,start_em,1,[]},
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:     {init,do_boot,3,[]}]
820 14:17:30 localhost.localdomain rabbitmq-server[141651]: =INFO REPORT==== 20-Aug-2020::14:17:30.319492 ===
820 14:17:30 localhost.localdomain rabbitmq-server[141651]: Error description:
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:    noproc
820 14:17:30 localhost.localdomain rabbitmq-server[141651]: Log files (may contain more information):
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:    /var/log/rabbitmq/rabbit@localhost.log
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:    /var/log/rabbitmq/rabbit@localhost-sasl.log
820 14:17:30 localhost.localdomain rabbitmq-server[141651]: Stack trace:
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:    [{gen,do_for_proc,2,[{file,"gen.erl"},{line,228}]},
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:     {gen_event,rpc,2,[{file,"gen_event.erl"},{line,239}]},
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:     {rabbit,ensure_working_log_handlers,0,
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:             [{file,"src/rabbit.erl"},{line,842}]},
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:     {rabbit,'-boot/0-fun-0-',0,[{file,"src/rabbit.erl"},{line,281}]},
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:     {rabbit,start_it,1,[{file,"src/rabbit.erl"},{line,417}]},
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:     {init,start_em,1,[]},
820 14:17:30 localhost.localdomain rabbitmq-server[141651]:     {init,do_boot,3,[]}]
820 14:17:31 localhost.localdomain rabbitmq-server[141651]: {"init terminating in do_boot",noproc}
820 14:17:31 localhost.localdomain rabbitmq-server[141651]: init terminating in do_boot (noproc)
820 14:17:31 localhost.localdomain rabbitmq-server[141651]: [1B blob data]
820 14:17:31 localhost.localdomain rabbitmq-server[141651]: Crash dump is being written to: erl_crash.dump...done
820 14:17:31 localhost.localdomain systemd[1]: rabbitmq-server.service: Main process exited, code=exited, status=1/FAILURE
820 14:17:31 localhost.localdomain systemd[1]: rabbitmq-server.service: Failed with result 'exit-code'.
820 14:17:31 localhost.localdomain systemd[1]: Failed to start RabbitMQ broker.

CentOS下RabbitMQ 部署记录_第9张图片
CentOS下RabbitMQ 部署记录_第10张图片

参考链接 :
RabbitMQ 部署记录 : https://mp.weixin.qq.com/s/YlsbisNSbKKf3-sUWfnDvw
RabbitMQ简介以及应用 :https://mp.weixin.qq.com/s/xX85bYETptp_zzL3en_SGQ

高可用RocketMQ集群搭建 : https://mp.weixin.qq.com/s/qWDrBnrAZ4G72DFBFEaFBQ

Linux中如何安装RabbitMQ? https://mp.weixin.qq.com/s/ciS_I2C_TBTrtUzchMrezQ

你可能感兴趣的:(centos)