CentOS7下RabbitMQ服务安装配置

本文涉及rabbitmq的基本安装,基本的集群配置。

CentOS安装、配置RabbitMQ

安装步骤(rpm包安装):rpm安装官网:

  • CentOs:

wget

–import
install rabbitmq-server-3.6.1-1.noarch.rpm
(会提示下载和安装erlang等依赖包)启动:service rabbitmq-server
start/stop/status注册为开机启动:chkconfig rabbitmq-server
on缺省的log路径:/var/log/rabbitmq查看状态:rabbitmqctlstatus可以查看到缺省监听端口:{listeners,[{clustering,25672,”::”},{amqp,5672,”::”}]},配置文件:环境变量配置:vi
/etc/rabbitmq/rabbitmq-env.confRabbitMQ配置:vi
/etc/rabbitmq/rabbitmq.config用户管理:新建用户:rabbitmqctl add_user
<user> pwd删除用户: rabbitmqctl
delete_user<user>查看用户列表:rabbitmqctl
list_users用户权限:查看所有用户的权限:rabbitmqctllist_permissions设置用户权限:rabbitmqctl
set_permissions<user>’.*”.*”.*’ (<conf> <write>
<read>,正则表达式,’.*’表示所有权限)清除用户权限:rabbitmqctl
clear_permissions<user>各类角色:

  • none
    1. 不能访问 management plugin
  • management

    1. 用户可以通过AMQP做的任何事外加:
    2. 列出自己可以通过AMQP登入的virtual hosts
    3. 查看自己的virtual hosts中的queues, exchanges 和 bindings
    4. 查看和关闭自己的channels 和 connections
    5. 查看有关自己的virtual
      hosts的“全局”的统计信息,包含其他用户在这些virtual
      hosts中的活动。
  • policymaker

    1. management可以做的任何事外加:
    2. 查看、创建和删除自己的virtual hosts所属的policies和parameters
  • monitoring
    1. management可以做的任何事外加:
    2. 列出所有virtual hosts,包括他们不能登录的virtual hosts
    3. 查看其他用户的connections和channels
    4. 查看节点级别的数据如clustering和memory使用情况
    5. 查看真正的关于所有virtual hosts的全局的统计信息
  • administrator
    1. policymaker和monitoring可以做的任何事外加:
    2. 创建和删除virtual hosts
    3. 查看、创建和删除users
    4. 查看创建和删除permissions
    5. 关闭其他用户的connections

设置用户角色:rabbitmqctl set_user_tags<user>[administrator |
monitoring|policymaker|management]
权限和角色参考:
enable
rabbitmq_management访问:
–reload另外:不支持rpm包的linux系统,可以直接解压rabbitmq-server-generic-unix-xxx.tar.xz文件:下载:
-d rabbitmq-server-generic-unix-3.6.1.tar.xztar -xvf
rabbitmq-server-generic-unix-3.6.1.tar创建一个软连接:ln -s
rabbitmq_server-3.6.1 rabbitmq启动:cd
rabbitmq_server-3.6.1(或使用软连接:cd rabbitmq)sbin/rabbitmq-server
-detached或:service rabbitmq-server
start/stop/start/status修改开机启动脚本:vi/etc/init.d/boot.local/opt/app/rabbitmq_server-3.6.1/sbin/rabbitmq-server
-detached或:注册为开机启动:chkconfig rabbitmq-server
on可能需要先安装下面的依赖包:安装Erlang:官网:

-zxvfotp_src_18.3.tar.gzcdotp_src_18.3export
ERL_TOP=`pwd`./configure(注:如果提示找不到curses
library错误,需要先安装ncurses)makemake install缺省安装路径:
/usr/local/bin/erl执行命令:erl安装ncurses:tar zxvfncurses-5.9.tar.gzcd
ncurses-5.9./configure –with-shared –prefix=/usrmakemake install

安装步骤(rpm包安装):rpm安装官网:
CentOs: wget …

集群概述

通过 Erlang 的分布式特性(magic cookie 认证节点)进行 RabbitMQ 集群,各
RabbitMQ
服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收。
  这些节点通过 RabbitMQ HA
队列(镜像队列)进行消息队列结构复制。本文中搭建
3
个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ
集群对外就能提供服务。

CentOS7下RabbitMQ服务安装配置

 RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing
Protocol高级消息队列协议)的标准实现,用erlang语言开发。RabbitMQ据说具有良好的性能和时效性,同时还能够非常好的支持集群和负载部署,非常适合在较大规模的分布式系统中使用,具体特性还在验证中,待检验。由于项目需要,安装并配置了RabbitMQ,服务器操作系统是CentOS7。具体步骤如下:

  安装依赖文件:

  yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto

  1.Erlang安装配置

  下载安装包,地址

  然后解压文件:

[[email protected]
rabbitmq]# tar -xzvf otp_src_18.3.tar.gz
[[email protected]
rabbitmq]# cd otp_src_18.3/

  配置安装路径编译代码:

[[email protected]
otp_src_18.3]# ./configure –prefix=/opt/erlang

  执行编译结果:

[[email protected]
otp_src_18.3]# make && make install

  完成后进入/opt/erlang查看执行结果

[[email protected]
rabbitmq]# cd /opt/erlang/
[[email protected]
erlang]# erl
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:8:8]
[async-threads:10] [hipe] [kernel-poll:false]

Eshell V7.3  (abort with ^G)
1>

  当出现以上信息时表示安装完成。然后输入’halt().’退出即可。

  然后在配置Erlang环境变量,vi /etc/profile文件,增加下面的环境变量:

#set erlang environment
export PATH=$PATH:/opt/erlang/bin

  source  /etc/profile使得文件生效

  在安装Erlang过程中,可能会遇到以下问题,一般都是因为系统中缺少相应的包引起的,缺少什么包直接yum安装即可。

  2.下载安装RabbitMq

[[email protected]
rabbitmq]# weget

  解压文件

[[email protected]
rabbitmq]# xz -d rabbitmq-server-generic-unix-3.6.1.tar.xz
[[email protected]
rabbitmq]# tar -xvf rabbitmq-server-generic-unix-3.6.1.tar  -C /opt

  解压后进入文件夹/opt发现多了个文件夹rabbitmq-server-generic-unix-3.6.1
,重命名为rabbitmq以便记忆。

  然后在配置rabbitmq环境变量,vi /etc/profile文件,增加下面的环境变量:

#set rabbitmq environment
export PATH=$PATH:/opt/rabbitmq/sbin

  source  /etc/profile使得文件生效

  3.RabbitMQ服务启动关闭

  以上就已经完成了RabbitMq的安装,怎么启动服务呢?

  启动服务:

[[email protected]
rabbitmq]# cd sbin/
[[email protected]
sbin]# ./rabbitmq-server -detached

  查看服务状态:

[[email protected]
sbin]# ./rabbitmqctl status
Status of node
[email protected]

[{pid,11849},
 {running_applications,
    [{rabbitmq_management,”RabbitMQ Management Console”,”3.6.1″},
      {rabbitmq_management_agent,”RabbitMQ Management
Agent”,”3.6.1″},
      {rabbitmq_web_dispatch,”RabbitMQ Web Dispatcher”,”3.6.1″},
      {webmachine,”webmachine”,”1.10.3″},
      {amqp_client,”RabbitMQ AMQP Client”,”3.6.1″},
      {mochiweb,”MochiMedia Web Server”,”2.13.0″},
      {syntax_tools,”Syntax tools”,”1.7″},
      {ssl,”Erlang/OTP SSL application”,”7.3″},
      {public_key,”Public key infrastructure”,”1.1.1″},
      {asn1,”The Erlang ASN1 compiler version 4.0.2″,”4.0.2″},
      {crypto,”CRYPTO”,”3.6.3″},
      {compiler,”ERTS  CXC 138 10″,”6.0.3″},
      {inets,”INETS  CXC 138 49″,”6.2″},
      {rabbit,”RabbitMQ”,”3.6.1″},
      {mnesia,”MNESIA  CXC 138 12″,”4.13.3″},
      {rabbit_common,[],”3.6.1″},
      {xmerl,”XML parser”,”1.3.10″},
      {os_mon,”CPO  CXC 138 46″,”2.4″},
      {ranch,”Socket acceptor pool for TCP protocols.”,”1.2.1″},
      {sasl,”SASL  CXC 138 11″,”2.7″},
      {stdlib,”ERTS  CXC 138 10″,”2.8″},
      {kernel,”ERTS  CXC 138 10″,”4.2″}]},
 {os,{unix,linux}},
 {erlang_version,
    “Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:8:8]
[async-threads:64] [hipe] [kernel-poll:true]\n”},
 {memory,
    [{total,64111264},
      {connection_readers,0},
      {connection_writers,0},
      {connection_channels,0},
      {connection_other,2808},
      {queue_procs,2808},
      {queue_slave_procs,0},
      {plugins,367288},
      {other_proc,19041296},
      {mnesia,61720},
      {mgmt_db,158696},
      {msg_index,47120},
      {other_ets,1372440},
      {binary,128216},
      {code,27368230},
      {atom,992409},
      {other_system,14568233}]},
 {alarms,[]},
 {listeners,[{clustering,25672,”::”},{amqp,5672,”::”}]},
 {vm_memory_high_watermark,0.4},
 {vm_memory_limit,6556241100},
 {disk_free_limit,50000000},
 {disk_free,37431123968},
 {file_descriptors,
    [{total_limit,65435},
      {total_used,2},
      {sockets_limit,58889},
      {sockets_used,0}]},
 {processes,[{limit,1048576},{used,204}]},
 {run_queue,0},
 {uptime,412681},
 {kernel,{net_ticktime,60}}]

  关闭服务:

[[email protected]
sbin]# ./rabbitmqctl stop
Stopping and halting node
[email protected]

  4. 配置网页插件

  首先创建目录,否则可能报错:

mkdir /etc/rabbitmq

  然后启用插件:

./rabbitmq-plugins enable rabbitmq_management

  配置linux 端口 15672 网页管理  5672 AMQP端口
  然后访问 

  默认用户guest 密码guest

图片 1

  5. 远程访问配置

  默认网页是不允许访问的,需要增加一个用户修改一下权限,代码如下:

  添加用户:rabbitmqctl add_user hxb hxb

  添加权限:rabbitmqctl set_permissions -p “/” hxb “.*” “.*” “.*”

      修改用户角色rabbitmqctl set_user_tags hxb administrator

  然后就可以远程访问了,然后可直接配置用户权限等信息。

  

  6. rabbitmq常用命令

  add_user        <UserName> <Password>

  delete_user    <UserName>

  change_password <UserName> <NewPassword>

  list_users

  add_vhost    <VHostPath>

  delete_vhost <VHostPath>

  list_vhostsset_permissions  [-p <VHostPath>]
<UserName> <Regexp> <Regexp> <Regexp>

  clear_permissions [-p <VHostPath>] <UserName>

  list_permissions  [-p <VHostPath>]

  list_user_permissions <UserName>

  list_queues    [-p <VHostPath>] [<QueueInfoItem>
…]

  list_exchanges [-p <VHostPath>] [<ExchangeInfoItem>
…]

  list_bindings  [-p <VHostPath>]

  list_connections [<ConnectionInfoItem> …]

CentOS 5.6 安装RabbitMQ

RabbitMQ客户端C++安装详细记录

用Python尝试RabbitMQ

RabbitMQ集群环境生产实例部署

Ubuntu下PHP + RabbitMQ使用

在CentOS上安装RabbitMQ流程

RabbitMQ概念及环境搭建 

RabbitMQ入门教程 

RabbitMQ 的详细介绍:请点这里
RabbitMQ 的下载地址:请点这里

RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing
Protocol高级消息队列协议)的标准实现,用erlan…

一.环境

环境

  • CentOS 7,64位
  • RabbitMQ 3.6.3
  • HAProxy 1.6.0
      RabbitMQ 集群安装在 3
    个节点上:192.168.1.1、192.168.1.2、192.168.1.3;HAProxy 安装在
    192.168.1.4 上,用于对外提供 RabbitMQ 负载均衡服务。

1. 操作系统

CentOS-7-x86_64-Everything-1511

配置步骤

1. 修改 /etc/hosts,并配置ssh相互免密登录

[root@node1 ~]# vi /etc/hosts
192.168.1.1 node1
192.168.1.2 node2
192.168.1.3 node3

2. 安装 erlang、rabbitmq
  在 192.168.1.1、192.168.1.2、192.168.1.3 三个节点上安装,然后开启
RabbitMQ 监控插件。

[root@node1 ~]# wget http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm
[root@node1 ~]# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.3/rabbitmq-server-3.6.3-1.noarch.rpm
[root@node1 ~]# rpm -ivh erlang-18.1-1.el7.centos.x86_64.rpm
[root@node1 ~]# rpm -ivh rabbitmq-server-3.6.3-1.noarch.rpm
[root@node1 ~]# rabbitmq-plugins enable rabbitmq_management

3. 设置 Erlang Cookie
  Erlang Cookie 文件:/var/lib/rabbitmq/.erlang.cookie。这里将 node1
的该文件复制到 node2、node3,由于这个文件权限是 400,所以需要先修改
node2、node3 中的该文件权限为 777,然后将 node1 中的该文件拷贝到
node2、node3,最后将权限和所属用户/组修改回来。

[root@node1 ~]# chmod 777 /var/lib/rabbitmq/.erlang.cookie
[root@node1 ~]# scp -r /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/.erlang.cookie
[root@node1 ~]# scp -r /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/.erlang.cookie
[root@node1 ~]# chmod 400 /var/lib/rabbitmq/.erlang.cookie
[root@node1 ~]# chown rabbitmq /var/lib/rabbitmq/.erlang.cookie
[root@node1 ~]# chgrp rabbitmq /var/lib/rabbitmq/.erlang.cookie

4. 使用 -detached 参数运行各节点

[root@node1 ~]# rabbitmqctl stop
[root@node1 ~]#  rabbitmq-server -detached

5. 组成集群
将 node2、node3 与 node1 组成集群

[root@node2 ~]# rabbitmqctl stop_app
[root@node2 ~]# rabbitmqctl join_cluster rabbit@node1
[root@node2 ~]# rabbitmqctl start_app
#---------------------------------------------------------------------------------#
[root@node3 ~]# rabbitmqctl stop_app
[root@node3 ~]# rabbitmqctl join_cluster rabbit@node1
[root@node3 ~]# rabbitmqctl start_app

此时 node2 与 node3
也会自动建立连接;如果要使用内存节点,则可以使用下面的命令加入集群。

[root@node2 ~]# rabbitmqctl join_cluster *--ram* rabbit@node1 

集群配置好后,可以在 RabbitMQ
任意节点上执行下面的命令来查看是否集群配置成功。

rabbitmqctl cluster_status 

6. 设置镜像队列策略
  在任意一个节点上执行下面的命令

[root@node1 ~]# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一直。完成这
6 个步骤后,RabbitMQ
高可用集群就已经搭建好了,最后一个步骤就是搭建均衡器。

提示:
  RabbitMQ的配置文件为:/etc/rabbitmq/rabbitmq.config
  RabbitMQ的环境配置文件为:/etc/rabbitmq/rabbitmq-env.conf

7. 安装并配置 HAProxy
  在 192.168.1.4 上安装 HAProxy,然后修改 /etc/haproxy/haproxy.cfg。

[root@snails ~]# haproxy -vv
[root@snails ~]# vi /etc/haproxy/haproxy.cfg
listen rabbitmq_cluster 0.0.0.0:5672

mode tcp
balance roundrobin

server   node1 192.168.1.1:5672 check inter 2000 rise 2 fall 3  
server   node2 192.168.1.2:5672 check inter 2000 rise 2 fall 3
server   node2 192.168.1.3:5672 check inter 2000 rise 2 fall 3

listen private_monitoring :8100
       mode    http
       option  httplog
       stats   enable
       #设置haproxy监控地址为http://localhost:8100/rabbitmq-stats 
       stats   uri  /rabbitmq-stats
       stats   refresh 5s
[root@snails ~]# /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid

2. 版本

haproxu版本:1.7.7

erlang版本:20.0

rabbitmq版本:rabbitmq-server-3.6.10

https://bintray.com/rabbitmq/rabbitmq-server-rpm/download\_file?file\_path=rabbitmq-server-3.6.10-1.el7.noarch.rpm

3. 拓扑

图片 2

  1. 采用VMware
    ESXi虚拟出的4台服务器1台haproxy,3台rabbitmq-server,地址172.16.3.230/231/232/233;

  2. haproxy的预安装配置请参考:http://www.linuxidc.com/Linux/2017-10/147553.htm

二.RabbitMQ安装配置(单机)

以节点rmq-node1为例,rmq-node2/3适当调整。

1. 安装erlang

RabbbitMQ基与erlang开发,首先安装erlang,这里采用yum方式。

1)更新EPEL源

#yum官方源无erlang;
#安装EPEL:http://fedoraproject.org/wiki/EPEL/FAQ#howtouse
[root@rmq-node1 ~]# rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
[root@rmq-node1 ~]# yum install foo

2)添加erlang解决方案库

 

#如果不添加erlang解决方案,yum安装的erlang版本会比较老;
#解决方案添加及安装请见(根据OS选择):https://www.erlang-solutions.com/resources/download.html
[root@rmq-node1 ~]# wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
[root@rmq-node1 ~]# rpm -Uvh erlang-solutions-1.0-1.noarch.rpm

#需要安装验证签名的公钥;
[root@rmq-node1 ~]# rpm --import https://packages.erlang-solutions.com/rpm/erlang_solutions.asc

 

3)安装erlang

#下载速度会比较慢
[root@rmq-node1 ~]# yum install erlang -y

2. 安装RabbitMQ

1)下载RabbitMQ

[root@rmq-node1 ~]# wget https://bintray.com/rabbitmq/rabbitmq-server-rpm/download_file?file_path=rabbitmq-server-3.6.10-1.el7.noarch.rpm
[root@rmq-node1 ~]# mv download_file\?file_path\=rabbitmq-server-3.6.10-1.el7.noarch.rpm rabbitmq-server-3.6.10-1.el7.noarch.rpm

2)导入认证签名

[root@rmq-node1 ~]# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

3)安装

#yum安装使用已下载的rpm包本地安装,但可能会涉及到取依赖包,同样需要导入认证签名;
#下载安装请见:http://www.rabbitmq.com/install-rpm.html
[root@rmq-node1 ~]# yum install rabbitmq-server-3.6.10-1.el7.noarch.rpm -y

3. 启动

1)设置开机启动

[root@rmq-node1 ~]# systemctl enable rabbitmq-server

2)启动

[root@rmq-node1 ~]# systemctl start rabbitmq-server

4. 验证

1)查看状态

[root@rmq-node1 ~]# systemctl status rabbitmq-server

图片 3

2)查看日志

#日志中给出了rabbitmq启动的重要信息,如node名,$home目录,cookie hash值,日志文件,数据存储目录等;
#给出的信息会指出无配置文件(如下图),默认安装没有此文件
[root@rmq-node1 ~]# cat /var/log/rabbitmq/rabbit@rmq-node1.log

图片 4

5. rabbitmq.conf

#手工建目录,将配置样例文件拷贝到配置目录并改名
[root@rmq-node1 ~]# mkdir -p /etc/rabbitmq
[root@rmq-node1 ~]# cp /usr/share/doc/rabbitmq-server-3.6.10/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

#配置重启生效
[root@rmq-node1 ~]# systemctl restart rabbitmq-server

#另外还可以建环境配置文件:/etc/rabbitmq/rabbitmq-env.conf

6. 安装web管理插件

#management plugin默认就在RabbitMQ的发布版本中,enable即可
#服务重启,配置生效
[root@rmq-node1 ~]# rabbitmq-plugins enable rabbitmq_management

图片 5

7. 设置iptables

#tcp4369端口用于集群邻居发现;
#tcp5671,5672端口用于AMQP 0.9.1 and 1.0 clients使用;
#tcp15672端口用于http api与rabbitadmin访问,后者仅限在management plugin开启时;
#tcp25672端口用于erlang分布式节点/工具通信
[root@rmq-node1 ~]# vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5671 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT

[root@rmq-node1 ~]# service iptables restart

8. Management plugin登录账

1)guest账号

#rabbit默认只有guest账号,但为了安全,guest账号只能从localhost登录,如果需要guest账号可以远程登录,可以设置rabbitmq.conf文件:
#根据说明,取消第64行参数的注释与句末的符号;建议不开启guest账号的远程登录;
#服务重启,配置生效。
[root@rmq-node1 ~]# vim /etc/rabbitmq/rabbitmq.config

图片 6

2)CLI创建登录账号

#“rabbitmqctl add_user”添加账号,并设置密码
[root@rmq-node1 ~]# rabbitmqctl add_user admin admin@123

#”rabbitmqctl set_user_tags”设置账号的状态
[root@rmq-node1 ~]# rabbitmqctl set_user_tags admin administrator

#“rabbitmqctl set_permissions”设置账号的权限
[root@rmq-node1 ~]# rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

#“rabbitmqctl list_users”列出账号
[root@rmq-node1 ~]# rabbitmqctl list_users

图片 7

9. Management plugin登录验证

浏览器访问:

1)guest账号登录

图片 8

2)CLI创建的账号登录

图片 9

更多详情见请继续阅读下一页的精彩内容
http://www.linuxidc.com/Linux/2017-10/147707p2.htm

图片 10

相关文章