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"}'
    
  • 相关阅读:
    LeetCode 382. Linked List Random Node
    LeetCode 398. Random Pick Index
    LeetCode 1002. Find Common Characters
    LeetCode 498. Diagonal Traverse
    LeetCode 825. Friends Of Appropriate Ages
    LeetCode 824. Goat Latin
    LeetCode 896. Monotonic Array
    LeetCode 987. Vertical Order Traversal of a Binary Tree
    LeetCode 689. Maximum Sum of 3 Non-Overlapping Subarrays
    LeetCode 636. Exclusive Time of Functions
  • 原文地址:https://www.cnblogs.com/gaoyuanzhi/p/10365180.html
Copyright © 2011-2022 走看看