zoukankan      html  css  js  c++  java
  • Rabbitmq 运维

    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"}'
    
  • 相关阅读:
    java web(七)Cookie的简单使用
    java web(六)多个请求对应一个Servlet
    <十六>JDBC_使用 DBUtils 编写通用的DAO
    <十五>JDBC_使用 DBUtils 进行更新、查询操作
    附加作业
    第五周作业
    第八周作业
    第七周作业
    第一周作业
    第六周作业
  • 原文地址:https://www.cnblogs.com/gaoyuanzhi/p/10365180.html
Copyright © 2011-2022 走看看