【Service】【MiddleWare】【Message】rabbitMQ

1. 概念:數據庫

1.1. 消息型中間件:遵循AMQP協議(高級消息隊列協議)AMQP 0-9-1 AMQP 1.0apache

1.2. 路由模型:安全

  direct服務器

  topiccookie

  fan-out網絡

  headersapp

1.3. broker:tcp

  exchange性能

  binding插件

  queue

1.4. vitrualhost:虛擬主機

  exchange

  binding

  queue

1.5. 中間件的實現:

  Qpid, ActiveMQ(apache):Java

  RabbitMQ:erlang

  Kafka

  0MQ

 

2. 安裝:

  程序包:

    epel:rabbitmq-server

      插件:rabbitmq-plugins(enable|disable|list)

        rabbitmq_management:監聽於15672端口

  配置方式:

    環境變量:網絡參數及配置文件路徑;

    配置文件:服務器各組件訪問權限、資源限制、插件及集羣;

    運行時參數:集羣的運行時參數;

  環境變量:/etc/rabbitmq/rabbit-env.conf

    RABBITMQ_BASE:數據庫和日誌文件;對unix-like主機不經常使用;

    RABBITMQ_CONFIG_FILE:配置文件路徑:/etc/rabbitmq/rabbitmq

    RABBITMQ_LOGS:

    RABBITMQ_NODE_IP_ADDRESS:監聽的IP;

    RABBITMQ_NODE_PORT:

    RABBITMQ_PLUGINS_DIR

 

  配置文件:

    auth_mechanisms:認證機制;SASL,簡單認證安全層

    default_user:guest

    default_pass:guest

    default_permission

    disk_free_limit

    heartbeat:

    hipe_compile:是否使用hipe編譯,使用hipe編譯性能提升

    log_levels: {none|error|warning|info}

    tcp_listeners:監聽的地址和端口 5672

    ssl_listeners:基於ssl通訊協議監聽的地址和端口

    vm_memory_high_watermark:

 

  rabbitmqctl命令:

    運行時參數;

      set_parameter [-p <vhostpath>] <component_name> <name> <value>

      clear_parameter [-p <vhostpath>] <component_name> <key>

 

      set_policy  [-p <vhostpath>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern> <definition>

      clear_policy  [-p <vhostpath>] <name>

 

      set_vm_memory_high_watermark <fraction>

    

    用戶管理:

      add_user

      delete_user

      change_password

      clear_password

      set_user_tags

      list_user

 

    虛擬主機:

      add_vhost

      delete_vhost

      list_vhost

 

    權限管理:

      set_permissions

      clear_permissions

      list_permissions

      list_user_permissions

 

    組件查看命令:

      list_queue

      list_exchanges

      list_bindings

      list_connections

      list_channels

      list_consumers

 

    broker狀態查看:

      status

 

    環境變量查看:

      environment

 

    執行erlang底層表達式:

      eval <expr>

 

    關閉指定的鏈接:

      close_connection <connectionid> <explanation>

 

    設定內存的高水位標記

      set_vm_memory_high_watermark <function>

 

3. rabbitmq cluster

3.1. 步驟:

  在master節點:

    複製其cookie至其餘各節點,要注意保持其權限爲400;

    /var/lib/rabbitmq/.erlang.cookie

  在各從節點:

    中止應用:rabbitmqct stop_app

    加入集羣:rabbmitmqctl join_cluster CLUSTER_NAME

    啓動應用:rabbmitmqctl start_app

3.2. 注意

  使用短格式主機名;解析的名稱與每一個主機名稱保持一致

  時間同步:

  各節點要啓動rabbitmq_management插件;

 

4. 基於haproxy的LB集羣:

  listen rabbitmq:5672

    mode tcp

    status enable

    balance roundrobin

    server rabbit01 IP:PORT check inter 5000

    server rabbit02 IP:PORT check inter 5000

相關文章
相關標籤/搜索