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