Rabbitmq 运维

一、安装:

  1. 安装ncurses
wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.1.tar.gz
tar zxf ncurses-6.1.tar.gz
cd ncurses-6.1
./configure
make
make install
  1. 安装openssl
wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2p.tar.gz
mkdir /usr/local/openssl
tar zxf openssl-1.0.2p.tar.gz
cd openssl-1.0.2p/
./config --prefix=/usr/local/openssl
#新版本openssl默认编译出来的libcrypto.a是没有加-fPIC参数的,当重定位被引用的代码段数据对象时出错。
#修改openssl源码的Makefile
#参考:https://blog.csdn.net/erlib/article/details/20995947
#在CFLAG= 添加 -fPIC
make
sudo make install
  1. 安装erlang环境
#下载erlang:http://www.erlang.org/downloads/19.3
#安装指南:http://erlang.org/doc/installation_guide/INSTALL.html wget http://erlang.org/download/otp_src_19.3.tar.gz
tar zxf otp_src_19.3.tar.gz
cd otp_src_19.3/
sudo mkdir /usr/local/erlang
./configure --prefix=/usr/local/erlang/ --with-ssl=/usr/local/openssl
make
sudo make install
  1. 安装rabbitmq
# rabbitmq下载地址:http://www.rabbitmq.com/releases/rabbitmq-server/
# 下载需要安装的版本:
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.12/rabbitmq-server-generic-unix-3.6.12.tar.xz
tar xJf rabbitmq-server-generic-unix-3.6.12.tar.xz
sudo mv rabbitmq_server-3.6.12 /usr/local/
sudo ln -s /usr/local/rabbitmq_server-3.6.12 /usr/local/rabbitmq

配置环境变量:

$ cat /etc/profile
export ERLANG_HOME=/usr/local/erlang
export PATH=$ERLANG_HOME/bin:$PATH
export RABBITMQ_HOME=/usr/local/rabbitmq
export PATH=$RABBITMQ_HOME/sbin:$PATH

二、管理

1. 虚拟主机管理

  1. 查看现有的虚拟主机
    # 查看现有的虚拟主机
$ rabbitmqctl list_vhosts
# 查看是否使用了trace功能
$ rabbitmqctl list_vhosts name tracing
  1. 添加一个虚拟主机
    $ rabbitmqctl add_vhost myvhost
  1. 删除一个虚拟主机
    $ rabbitmqctl delete_vhost myvhost
  1. 查看虚拟机权限
    $ rabbitmqctl list_permissions -p myvhost
  1. 虚拟机权限授予
    rabbitmqctl set_permissions -p vhost  root ".*" ".*" ".*"
    格式:rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read}
vhost:授予用户访问权限的vhost的名称
user:可以访问指定vhost的用户名
conf:用于匹配用户在哪些资源是拥有可配置权限的正则表达式(队列和交换机的创建及删除之类)
write:用于匹配用户在哪些资源是拥有可写权限的正则表达式(发布消息)
read:用于匹配用户在哪些资源是拥有可读权限的正则表达式(读取消息和清空队列)

2.用户权限管理

  1. 查看用户的权限
    $ rabbitmqctl list_user_permissions root
  1. 创建用户并设置密码
    $ rabbitmqctl add_user root root
  1. 更改密码
    $ rabbitmqctl change_password root 123456
  1. 清除密码
    $ rabbitmqctl clear_password root
  1. 查看现有用户
    $ rabbitmqctl list_users
  1. 设置用户角色
    $ rabbitmqctl  set_user_tags root administrator
用户角色类型:
none: 无任何角色,新创建的用户角色默认为none
management:可以访问web管理界面
policymaker:包含management的所有权限,并可可以管理策略和参数
monitoring:包含management的所有权限,可以看到所有连接、信道及节点相关信息
administrator: 最高权限
  1. 验证用户是否能登陆成功
    $ rabbitmqctl authenticate_user root 123456
  1. 删除用户
    $ rabbitmqctl delete_user root

3. WEB端管理

  1. 查看可用插件:
    $ rabbitmq-plugins list
  1. 启用web管理插件
    $ rabbitmq-plugins enable rabbitmq_management
  1. 创建一个具有管理员身份的用户
$ rabbitmqctl add_user monitor monitor
$ rabbitmqctl set_user_tags monitor administrator
  1. 登陆管理界面

    http://serverip:15672

  2. 关闭插件

    $ rabbitmq-plugins disable rabbitmq_management

4. 应用管理

  1. 启动
$ rabbitmq-server -detached
  1. 停止服务
# 停止运行Rabbitmq Erlang虚拟机和Rabbitmq服务应用
$ rabbitmqctl stop
# 停止运行Rabbitmq Erlang虚拟机和Rabbitmq服务应用(阻塞直达Erlang虚拟机进程退出)
$ rabbitmqctl shutdown
  1. 停止Rabbitmq应用(Erlang虚拟机处于运行状态)
$ rabbitmqctl stop_app
  1. 启动Rabbitmq应用
$ rabbitmqctl start_app
  1. 重置节点,还原到最初状态
$ rabbitmqctl reset

5. 服务状态:

  1. 队列状态

格式:rabbitmqctl list_queues [-p vhost] [queueinfoitem ...]

    $ rabbitmqctl list_queues -p myvhost
  1. 交换机状态

格式:rabbitmqctl list_exchange [-p vhost] [exchangeinfoitem ...]

    $ rabbitmqctl list_exchanges -p myvhost name type durable auto_delete internal arguments policy 

  1. bind状态

格式:rabbitmqctl list bindings [-p vhost] [bindinginfoitem ...]

    $ rabbitmqctl list_bindings -p myvhost -q
  1. 连接状态

格式:rabbitmqctllist_connections [connectioninfoitem ...]

$ rabbitmqctl list_connections
  1. 信道状态

格式: rabbitmqctl list_channels [channelinfoitem ...]

$ rabbitmqctl list_channels
  1. 消费者状态

格式:rabbitmqctl list_consumers [-p vhost]

    $ rabbitmqctl list_consumers -p myvhost
  1. 服务状态
# Broker 状态
$ rabbitmqctl status
# 节点健康检测
$ rabbitmqctl node_health_check
# 环境变量名称和值
$ rabbitmqctl environment
# 生成服务状态报告
$ rabbitmqctl report > report.txt

三、配置

保持默认配置,基本不需要更改:
服务端口的更改。
$ cat etc/rabbitmq/rabbitmq.config
[
{
rabbit,[
{tcp_listeners,[
{"172.16.10.101",5673}
]
}
]
}
].

四、集群

Rabbitmq集群中的所有节点都会备份所有元数据信息,包括:

  1. 队列元数据:队列的名称及属性
  2. 交换器:交换器的名称及属性
  3. 绑定关系元数据:交换器与队列或者交换器与交换器之间的绑定关系;
  4. vhost数据:为vhost内的队列、交换器和绑定提供命名空间及安全属性。

消息不会备份:只会在单节点创建队列并包含完整的队列信息(元数据、状态和内容 )

1. 集群搭建

  1. 配置DNS解析
    cat /etc/hosts
172.16.10.101 node1
172.16.10.102 node2
  1. 在node2上安装erlang和rabbitmq

      直接把node1上编译好的拷贝到node2
ubuntu@node1:~$ scp  -r  /usr/local/erlang ubuntu@node2:~/
ubuntu@node1:~$ scp -r /usr/local/rabbitmq ubuntu@node2:~/
ubuntu@node2:~$ sudo mv erlang /usr/local/
ubuntu@node2:~$ sudo mv rabbitmq /usr/local/
  1. 配置环境变量
$ cat /etc/profile
export ERLANG_HOME=/usr/local/erlang
export PATH=$ERLANG_HOME/bin:$PATH export RABBITMQ_HOME=/usr/local/rabbitmq
export PATH=$RABBITMQ_HOME/sbin:$PATH
  1. 拷贝node1的cookie文件到node2

编译安装的cookie文件在 $HOME/.erlang.cookie

ubuntu@node1:~$ scp  $HOME/.erlang.cookie ubuntu@node2:~/
  1. 启动node2rabbitmq
ubuntu@node2:~$ rabbitmq-server -detached
ubuntu@node2:~$ rabbitmqctl stop_app
Stopping rabbit application on node rabbit@node2
ubuntu@node2:~$ rabbitmqctl reset
Resetting node rabbit@node2
ubuntu@node2:~$ rabbitmqctl join_cluster rabbit@node1
Clustering node rabbit@node2 with rabbit@node1
ubuntu@node2:~$ rabbitmqctl start_app
Starting node rabbit@node2

2. 集群管理

  1. 查看集群状态
    $ rabbitmqctl cluster_status
  1. 修改集群节点类型
    # 需要现停止rabbitmq应用:rabbitmqctl stop_app
$ rabbitmqctl change_cluster_node_type disc
  1. 将节点从集群中删除
$ rabbitmqctl forget_cluster_node rabbit@node2
  1. 断电后重启
$ rabbitmqctl force_boot

3. 队列镜像

rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

Rabbitmq 运维的更多相关文章

  1. Linux、docker、kubernetes、MySql、Shell、kafka、RabbitMQ运维快餐

    检查端口占用 lsof -i:[port] netstat -anp |grep [port] 监控网络客户TCP连接数 netstat -anp | grep tcp |wc -l 获取某进程中运行 ...

  2. rabbitmq常见运维命令和问题总结

    常见运维命令作用: yum安装erlang的环境配置: ERLANG_HOME=/usr/lib64/erlang export PATH=$PATH:$ERLANG_HOME/bin 常见rabbi ...

  3. IT运维监控解决方案介绍

    现状 •小公司/ 创业团队< 500台服务器规模 开源方案:Zabbix.Nagios.Cacti- 云服务提供商:监控宝.oneAlert等 •BAT级别> 10万台服务器 投 ...

  4. 《开源安全运维平台OSSIM最佳实践》

    <开源安全运维平台OSSIM最佳实践> 经多年潜心研究开源技术,历时三年创作的<开源安全运维平台OSSIM最佳实践>一书即将出版.该书用80多万字记录了,作者10多年的IT行业 ...

  5. Linux运维相关目录

  6. linux 运维知识体系

    这里将会介绍一下,LINUX运维工程师的知识体系. 只能说是个人理解吧.并不是必要或者充分的,仅供网友参考. 大部分本博客都有涉及,并不完整. 1.LINUX运维基础 1.1.LINUX系统的简介,分 ...

  7. 运维知识体系v0.5

    http://www.90qj.com/?post=318http://ixdba.blog.51cto.com/2895551/1751377   运维知识体系v0.5-(运维社区-赵班长出品,欢迎 ...

  8. 漫谈ELK在大数据运维中的应用

    漫谈ELK在大数据运维中的应用 圈子里关于大数据.云计算相关文章和讨论是越来越多,愈演愈烈.行业内企业也争前恐后,群雄逐鹿.而在大数据时代的运维挑站问题也就日渐突出,任重而道远了.众所周知,大数据平台 ...

  9. Linux运维跳槽必备的40道面试精华题(转)

    Linux运维跳槽必备的40道面试精华题(转)   下面是一名资深Linux运维求职数十家公司总结的Linux运维面试精华,助力大家年后跳槽找个高薪好工作. 1.什么是运维?什么是游戏运维? 1)运维 ...

随机推荐

  1. 层定位layer

    一.如何实现层定位position属性 二.相对定位relative 三.绝对定位absolute 四.元素堆叠z-index 一.实现层定位的方法 position属性实现层定位,把元素分出层次形成 ...

  2. 【bzoj1398】Vijos1382寻找主人 Necklace

    *题目描述: 给定两个项链的表示,判断他们是否可能是一条项链. *输入: 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). *输出: 如果两条项链不可能同 ...

  3. Android-Studio:Cannot reload AVD list

    Android-Studio:Cannot reload AVD list 今天用Android-Studio时点击"RUN"后出现如下错误,特此记录一下解决方案. Cannot ...

  4. Linux下修改mysql root密码

    1.修改MySQL的配置文件(默认为/etc/my.cnf),在[mysqld]下添加一行skip-grant-tables 2.保存配置文件后,重启MySQL服务 service mysqld re ...

  5. 【C++进阶:STL常见性质3】

    STL3个代表性函数:for_each(), random_shuffle(), sort() vector<int> stuff; random_shuffle(stuff.begin( ...

  6. MVC3: 页面向服务传参(view->controller,get,post)

    HttpGet HttpPost GetPost 总结比较 ajax get post 1)HttpGet Get是http请求的默认形式.拿MVC官方教程Movie项目举例如下. 编辑页面  Vie ...

  7. spring监听机制——观察者模式的应用

    使用方法 spring监听模式需要三个组件: 1. 事件,需要继承ApplicationEvent,即观察者模式中的"主题",可以看做一个普通的bean类,用于保存在事件监听器的业 ...

  8. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_02 泛型_3_定义和使用含有泛型的类

    创建一个类,添加一个name的属性,然后生成get和set 使用上面创建的类 使用泛型 所以我们取出来也是一个Object的类型 定义的时候规定的类型是Integer,所以这里setName设置的时候 ...

  9. 记2018最后一次问题诊断-Spark on Yarn所有任务运行失败

    2018的最后一个工作日,是在调式和诊断问题的过程中度过,原本可以按时下班,毕竟最后一天了,然鹅,确是一直苦苦挣扎. 废话不多说,先描述一下问题:有一套大数据环境,是CDH版本的,总共4台机子,我们的 ...

  10. Ora01653 :是表空间不足

    解决方案:表空间中增加数据文件: ALTER TABLESPACE 表空间名称ADD DATAFILE 'D:\app\Administrator\oradata\orcl\Ibomis1.dbf' ...