一、RabbitMQ简单介绍
在日常工作环境中,你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题。消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用,即适用于云计算集群的远程调用(RPC)。毫无疑问,RabbitMQ就是当前最主流的消息中间件之一。

AMQP(Advanced Message Queuing Protocol)即高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

二、CentOS7下部署RabbitMQ记录

由于RabbitMQ是通过Erlang来开发的,需要需要安装Erlang,然而在安装Erlang的时候又有一大波依赖需要安装,但是郁闷的是这些依赖不在CentOS默认的yum库中。

1)添加Erlang Solutions key 支持
[root@sh-op-mq01 ~]# rpm --import http://binaries.erlang-solutions.com/debian/erlang_solutions.asc
[root@sh-op-mq01 ~]# wget http://binaries.erlang-solutions.com/rpm/centos/erlang_solutions.repo 2)安装Erlang
[root@sh-op-mq01 ~]# yum install epel-release
[root@sh-op-mq01 ~]# yum install erlang 3)安装RabbitMQ
[root@sh-op-mq01 ~]# rpm -ivh http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm
[root@sh-op-mq01 ~]# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm
[root@sh-op-mq01 ~]# rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm 4)优化配置
[root@sh-op-mq01 ~]# cat /etc/security/limits.conf
.......
* soft nofile 65535
* hard nofile 65535
[root@sh-op-mq01 ~]# ulimit -n
65535 [root@sh-op-mq01 ~]# vim /etc/sysctl.conf //添加下面一行
fs.file-max = 100000
[root@sh-op-mq01 ~]# sysctl -p 5)启动RabbitMQ
[root@sh-op-mq01 ~]# systemctl enable rabbitmq-server.service
[root@sh-op-mq01 ~]# systemctl start/restart/stop/status rabbitmq-server.service RabbitMQ默认监听端口是15672
[root@sh-op-mq01 rabbitmq]# lsof -i:15672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 12776 rabbitmq 50u IPv4 582895 0t0 TCP *:15672 (LISTEN) 默认RabbitMQ的安装目录路径是/var/lib/rabbitmq、默认log路径是/var/log/rabbitmq/
[root@sh-op-mq01 ~]# rabbitmqctl --help
[root@sh-op-mq01 ~]# rabbitmqctl status
[root@sh-op-mq01 ~]# rabbitmqctl environment 6) 可以自定义RabbitMQ配置
[root@sh-op-mq01 ~]# cd /etc/rabbitmq/
[root@sh-op-mq01 rabbitmq]# cat rabbitmq-env.conf
LOG_BASE=/data/log/rabbitmq //定义RabbitMQ的日志路径 [root@sh-op-mq01 rabbitmq]# mkdir /data/log/rabbitmq
[root@sh-op-mq01 rabbitmq]# chown -R rabbitmq.rabbitmq /data/log/rabbitmq 重启RabbitMQ
[root@sh-op-mq01 rabbitmq]# systemctl restart rabbitmq-server.service rabbit-server当前状态
[root@sh-op-mq01 rabbitmq]# rabbitmqctl status
Status of node 'rabbit@sh-op-mq01' ...
[{pid,12776},
{running_applications,
[{rabbitmq_management,"RabbitMQ Management Console","3.6.5"},
{rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.6.5"},
{webmachine,"webmachine","1.10.3"},
{mochiweb,"MochiMedia Web Server","2.13.1"},
{rabbitmq_management_agent,"RabbitMQ Management Agent","3.6.5"},
{rabbit,"RabbitMQ","3.6.5"},
{os_mon,"CPO CXC 138 46","2.2.14"},
{ssl,"Erlang/OTP SSL application","5.3.3"},
{public_key,"Public key infrastructure","0.21"},
{crypto,"CRYPTO version 2","3.2"},
{amqp_client,"RabbitMQ AMQP Client","3.6.5"},
{rabbit_common,[],"3.6.5"},
{inets,"INETS CXC 138 49","5.9.8"},
{mnesia,"MNESIA CXC 138 12","4.11"},
{compiler,"ERTS CXC 138 10","4.9.4"},
{xmerl,"XML parser","1.3.6"},
{syntax_tools,"Syntax tools","1.6.13"},
{asn1,"The Erlang ASN1 compiler version 2.0.4","2.0.4"},
{ranch,"Socket acceptor pool for TCP protocols.","1.2.1"},
{sasl,"SASL CXC 138 11","2.3.4"},
{stdlib,"ERTS CXC 138 10","1.19.4"},
{kernel,"ERTS CXC 138 10","2.16.4"}]},
{os,{unix,linux}},
{erlang_version,
"Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:8:8] [async-threads:128] [hipe] [kernel-poll:true]\n"},
{memory,
[{total,61117832},
{connection_readers,0},
{connection_writers,0},
{connection_channels,0},
{connection_other,2800},
{queue_procs,2800},
{queue_slave_procs,0},
{plugins,669584},
{other_proc,19656864},
{mnesia,67096},
{mgmt_db,521824},
{msg_index,39960},
{other_ets,1445264},
{binary,29648},
{code,27158116},
{atom,992409},
{other_system,10531467}]},
{alarms,[]},
...........
........... ------------------------------------------------------------------------
可以用下面命令安装更新维护插件:
[root@sh-op-mq01 rabbitmq]# rabbitmq-plugins enable rabbitmq_management
[root@sh-op-mq01 rabbitmq]# systemctl restart rabbitmq-server.service

在浏览器里输入http://localhost:15672访问RabbitMQ,默认用户名和密码都是guest,若能正常访问和登陆,即说明正常连接RabbitMQ

如果使用默认的guest/guest账号密码登陆不上,解决办法如下:

[root@sh-op-mq01 rabbitmq]# vim /etc/rabbitmq/rabbitmq.config
[{rabbit, [{loopback_users, []}]}]. [root@sh-op-mq01 rabbitmq]# systemctl restart rabbitmq-server.service 然后使用guest/guest登陆即可! --------------------------------------------------------------------------------
如果还是使用guest/guest登陆不上RabbitMQ,可以自己创建了一个账户,赋予管理员权限
[root@sh-op-mq01 rabbitmq]# rabbitmqctl add_user username password
[root@sh-op-mq01 rabbitmq]# rabbitmqctl set_user_tags username administrator 创建完后用以下命令查看创建完的账号
[root@sh-op-mq01 rabbitmq]# rabbitmqctl list_users

===================Web插件的用户配置管理===================

1)用户管理
用户管理包括增加用户,删除用户,查看用户列表,修改用户密码,设置用户角色,权限等等。 新增一个用
# rabbitmqctl add_user Username Password 删除一个用户
# rabbitmqctl delete_user Username 修改用户的密码
# rabbitmqctl oldPassword Username newPassword 查看当前用户列表
# rabbitmqctl list_users 2)用户角色
按照个人理解,用户角色可分为五类,超级管理员, 监控者, 策略制定者, 普通管理者以及其他。 超级管理员(administrator)
可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。 监控者(monitoring)
可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等) 策略制定者(policymaker)
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。 普通管理者(management)
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。 其他
无法登陆管理控制台,通常就是普通的生产者和消费者。 了解了这些后,就可以根据需要给不同的用户设置不同的角色,以便按需管理。
设置用户角色的命令为: # rabbitmqctl set_user_tags User Tag
User为用户名, Tag为角色名(对应于上面的administrator,monitoring,policymaker,management,或其他自定义名称)。 也可以给同一用户设置多个角色,例如
# rabbitmqctl set_user_tags hncscwc monitoring policymaker 3)用户权限
用户权限指的是用户对exchange,queue的操作权限,包括配置权限,读写权限。配置权限会影响到exchange,queue的声明和删除。读写权限影响到从queue里取消息,
向exchange发送消息以及queue和exchange的绑定(bind)操作。 例如:将queue绑定到某exchange上,需要具有queue的可写权限,以及exchange的可读权限;向exchange发送消息需要具有exchange的可写权限;从queue里取数据
需要具有queue的可读权限。详细请参考官方文档中"Howpermissions work"部分。 相关命令为:
设置用户权限
# rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP 查看(指定hostpath)所有用户的权限信息
# rabbitmqctl list_permissions [-p VHostPath] 查看指定用户的权限信息
# rabbitmqctl list_user_permissions User 清除用户的权限信息
# rabbitmqctl clear_permissions [-pVHostPath] User 4)实际应用配置
根据以上讲解,进行用户的简单创建:
# rabbitmqctl add_user admin admin
# rabbitmqctl set_user_tags admin administrator
# rabbitmqctl list_users

----------------------CentOS6安装rabbitmq----------------------------

1)安装erlang
安装依赖包
# yum install xmlto gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel wxBase wxGTK wxGTK-gl perl -y 安装elang
下载地址:https://pan.baidu.com/s/1nuGy64h 提取密码:fv9r
# yum install -y erlang-19.0.4-1.el6.x86_64.rpm
# erl -v 安装rabbitmq
下载地址:https://pan.baidu.com/s/1slJU2iL 提取密码:zxwb
# wget --no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo
# yum install -y socat
# rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
# yum install -y rabbitmq-server-3.6.8-1.el6.noarch.rpm 启动RabbitMQ
启动web管理界面(启动后,15672端口就起来了)(这个要先启动rabbitmq-server服务后才能启动这个)
# rabbitmq-plugins enable rabbitmq_management
# lsof -i:15672 启动服务
# service rabbitmq-server start 添加用户admin
# rabbitmqctl add_user admin 123456 设置admin角色为管理员
# rabbitmqctl set_user_tags admin administrator 设置admin默认vhost("/")访问权限
# rabbitmqctl set_permissions -p "/" admin "." "." ".*" 删除guest用户
# rabbitmqctl delete_user guest 修改guest用户的密码
命令:rabbitmqctl change_password Username Newpassword
# rabbitmqctl change_password guest guest 查看当前用户列表
# rabbitmqctl list_users 浏览器访问:http://IP:15672
用户名admin,密码123456进行登录 注意几点:
rabbitmq的默认监听端口5672;web管理端口是15672 ----------------------------------------------------------------------
或者采用下面方式安装 # wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
# rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
# yum -y install erlang
# erl -v # wget –no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo
# yum install socat
# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el6.noarch.rpm
# yum -y install rabbitmq-server-3.6.6-1.el6.noarch.rpm 启动rabbitmq服务:
前台运行:
# rabbitmq-server start (用户关闭连接后,自动结束进程) 后台运行:
# rabbitmq-server -detached
----------------------------------------------------------------------

CentOS7下单机部署RabbltMQ环境的操作记录的更多相关文章

  1. CentOS 7下单机部署RabbltMQ环境的操作记录

    一. RabbitMQ简单介绍 在日常工作环境中,你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息 ...

  2. Centos7下单机部署Solr7.3

    本章重点介绍CentOS7 下部署Solr7 ,添加核心Core配置,Dataimport导入,中文分词的相关操作. 一.准备工作     演示环境是在虚拟机下安装的CentOS7.java JDK8 ...

  3. Linux下部署Samba服务环境的操作记录

    关于Linux和Windows系统之间的文件传输,很多人选择使用FTP,相对较安全,但是有时还是会出现一些问题,比如上传文件时,文件名莫名出现乱码,文件大小改变等问题.相比较来说,使用Samba作为文 ...

  4. centos7 下zookeeper 部署 单机多实例模式

    centos7 下zookeeper 部署 本文参考https://www.linuxidc.com/Linux/2016-09/135052.htm 1.创建/usr/local/zookeeper ...

  5. Hadoop生态圈-CentOs7.5单机部署ClickHouse

    Hadoop生态圈-CentOs7.5单机部署ClickHouse 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 到了新的公司,认识了新的同事,生产环境也得你去适应新的集群环境,我 ...

  6. centos7 下 安装部署nginx

    centos7 下 安装部署nginx 1.nginx安装依赖于三个包,注意安装顺序 a.SSL功能需要openssl库,直接通过yum安装: #yum install openssl b.gzip模 ...

  7. 记录centos7下tomcat部署war包过程

    记录centos7下tomcat部署war包过程 1.官网下载tomcat安装包.gz结尾的 2.上传到/usr/local/ ,并解压到tomcat目录下 3.进入tomcat/bin目录,运行./ ...

  8. centos7下Maven Java selenium3环境搭建

    centos7下Maven Java selenium3环境搭建 一.Jdk安装 我这里用的是open-jdk. [adawang@localhost src]$ sudo yum search op ...

  9. CentOS7下Hadoop伪分布式环境搭建

    CentOS7下Hadoop伪分布式环境搭建 前期准备 1.配置hostname(可选,了解) 在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(p ...

随机推荐

  1. django模板语言之Template

    当前端的一些数据需要后端传送过来并展示时,用到了django的模板语言,模板语言的作用就是,在后端把一些处理好的数据,通过模板语言所规定的格式,通过render渲染,放到前端页面固定的位置展示.这之间 ...

  2. MySQL5.7中的sql_mode默认值

    简介 在正常项目开发过程中,如果MySQL版本从5.6升级到5.7版本.作为DBA在考虑数据库版本升级带来的影响时,一般会有几个注意点: sql_mode 默认值的改变 optimizer_switc ...

  3. asp.net mvc项目使用spring.net发布到IIS后,在访问提示错误 Could not load type from string value 'DALMsSql.DBSessionFactory,DALMsSql'.

    asp.net mvc项目使用spring.net发布到IIS后,在访问提示错误 Could not load type from string value 'DALMsSql.DBSessionFa ...

  4. January 23rd, 2018 Week 04th Tuesday

    Remembrance is a form of meeting, forgetfulness is a form of freedom. 记忆是一种相遇,遗忘是一种自由. Cherish those ...

  5. 2018-2019-2 网络对抗技术 20165318 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165318 Exp3 免杀原理与实践 免杀原理及基础问题回答 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil- ...

  6. php递归无限级

    function getTree($data, $pId) { $tree = ''; foreach($data as $k => $v) { if($v['cate_ParentId'] = ...

  7. for-in和for-of,forEach和Map

    for-in和for-of 1. for-in循环实际是为循环”enumerable“对象而设计的,是用来循环带有字符串key的对象的. 使用for in会遍历数组所有的可枚举属性,包括原型.所以fo ...

  8. 移动App测试实战—专项测试

       我们在进行了手工的功能测试之后,也开发了一些自动化测试用例,并且做了性能测试之后,测试工作看似比较完整了.但是当我们的App在大量的用户那里被安装和使用的时候,还是会有很多我们之前没有预料的问题 ...

  9. <数据结构与算法分析>读书笔记--运行时间计算

    有几种方法估计一个程序的运行时间.前面的表是凭经验得到的(可以参考:<数据结构与算法分析>读书笔记--要分析的问题) 如果认为两个程序花费大致相同的时间,要确定哪个程序更快的最好方法很可能 ...

  10. spring+springmvc+hibernate整合实例

    最近要弄一个自动化生成表及其实体对应的增删改查的框架,于是我想到了hibernate,hibernate就有根据实体自动建表,而且增删改查,都不需要想mybatis那样在xml文件中配置. 不过怎样让 ...