在* nix系统上配置RabbitMQ
配置环境
RabbitMQ在/etc/rabbitmq/rabbitmq-env.conf
中查找一组环境变量。 如果不存在,则采用默认值。 rabbitmq-env.conf
中的所有值都将导出到RabbitMQ服务器以RABBITMQ_
前缀运行的环境中; 此前缀不包括在配置文件中。 可以设置以下变量(在key = value
语法中):
NODENAME
:设置RabbitMQ节点的名称。
CONFIG_FILE
:设置RabbitMQ配置文件的位置(不是此环境文件)
NODE_IP_ADDRESS
:设置要侦听的特定IP地址。
NODE_PORT
:设置要侦听的端口
DIST_PORT
:设置侦听的端口进行群集
USE_LONGNAME
:指示是否使用完全限定名称来标识节点的布尔值。 在具有相同短名称的环境中有用。
CTL_ERL_ARGS
:设置运行rabbitmqctl时调用的erl
命令的参数。 用于调试。
SERVER_ERL_ARGS
:设置启动RabbitMQ时调用的erl
命令的参数。 设置此值将覆盖默认值(请参阅下面的示例配置)。
SERVER_ADDITIONAL_ERL_ARGS
:为启动RabbitMQ时调用的erl
命令设置其他参数。 设置此值将附加到SERVER_ERL_ARG
S变量,默认情况下为空。
SERVER_START_ARGS
:也为在启动RabbitMQ时调用的erl
命令设置。
示例配置文件(所有值实际上都是默认值):
|
|
配置RabbitMQ
注意:RabbitMQ的配置文件是标准的Erlang配置语法。 如果你不熟悉Erlang,这可能会令人头疼。 它遵循以下格式:
|
|
RabbitMQ的配置部分有以下keys (摘自https://www.rabbitmq.com/configure.html):
tcp_listeners
:要侦听AMQP连接(不使用SSL)的端口列表。 可以包含整数(意为“侦听所有接口”)或元组(如{“127.0.0.1”,5672})以监听一个或多个接口。默认值:[5672]
num_tcp_acceptors
:将接受TCP侦听器连接的Erlang进程数。默认值:10
handshake_timeout
:AMQP 0-8 / 0-9 / 0-9-1握手(套接字连接和SSL握手后)的最长时间,以毫秒为单位。默认值:10000
ssl_listeners
:如上,用于SSL连接。默认值:[]
num_ssl_acceptors
:将接受SSL侦听器连接的Erlang进程数。默认值:1
ssl_options
:SSL配置。默认值:[]
ssl_handshake_timeout
:SSL握手超时,以毫秒为单位。默认值:5000
vm_memory_high_watermark
:触发流量控制的内存阈值。 请参阅基于内存的流控制文档。默认值:0.4
vm_memory_high_watermark_paging_ratio
:队列开始将消息页面输出到磁盘以释放内存的高水位限制的分数。 请参阅基于内存的流控制文档。默认值:0.5
disk_free_limit
:RabbitMQ用于存储数据的分区的磁盘可用空间限制。 当可用磁盘空间低于此限制时,触发流量控制。 该值可以相对于RAM的总量(例如{mem_relative,1.0})来设置。 该值也可以设置为整数字节。 或者,在信息单元(例如“50MB”)中。 默认情况下,可用磁盘空间必须超过50MB。 请参见Disk Alarms文档。默认值:50000000
log_levels
:控制日志记录的粒度。 该值是日志事件类别和日志级别对的列表。级别可以是
none
(无事件记录),error
(仅记录错误),warning
(仅记录错误和警告),info
(错误,警告和信息性消息被记录)或debug
(错误,警告 ,信息消息和调试消息被记录)。目前定义有四类。另外,目前其他类别的,events总是记录。
类别:
- channel - 所有与AMQP通道相关的事件
- connection - 用于所有与网络连接相关的事件
- federation - 所有与联盟有关的事件
- mirroring - 所有与镜像队列相关的事件
默认:
[{connection, info}]
frame_max
:与客户端协商的帧的最大允许大小(以字节为单位)。 设置为0意味着“无限制”,但会在一些QPid客户端触发一个错误。 设置较大的值可以提高吞吐量; 设置较小的值可以改善等待时间。默认值:
131072
channel_max
:与客户端协商的最大允许通道数。 设置为0表示“无限制”。 使用更多的通道增加了代理的内存占用。默认值:
0
channel_operation_timeout
:通道操作超时(以毫秒为单位)(由于消息传递协议差异和限制,内部使用,不直接暴露给客户端)。默认值:
15000
heartbeat
:表示服务器在connection.tune帧中发送的heartbeat 延迟(以秒为单位)的值。 如果设置为0,心跳将被禁用。 客户端可能不遵循服务器建议,有关详细信息,请参阅AMQP参考。 禁用检测信号可能会提高具有大量连接的情况下的性能,但可能会导致在关闭非活动连接的网络设备存在时连接断开。默认值:
60
(版本3.5.5之前的580
)default_vhost
:当RabbitMQ从头开始创建新数据库时要创建的虚拟主机。 交换amq.rabbitmq.log
将存在于此虚拟主机中。默认值:
<<“/”>>
default_user
:当RabbitMQ从头开始创建新数据库时要创建的用户名。默认值:
<<“guest”>>
default_pass
:默认用户的密码。默认值:
<<“guest”>>
default_user_tags
:默认用户的标签。默认值:
[administrator]
default_permissions
:在创建默认用户时分配给它的权限。默认值:
[<<".*">>, <<".*">>, <<".*">>]
loopback_users
:只允许通过回送接口(即localhost)连接到代理的用户列表。如果你希望允许默认的访客用户远程连接,您需要将其更改为
[]
。默认值:
[<<“guest”>>]
cluster_nodes
:设置此选项,以便在节点第一次启动时自动执行群集。 元组的第一个元素是节点将尝试集群到的节点。 第二个元素是disc或ram并确定节点类型。默认值:
{[], disc}
server_properties:在连接时向客户端通知的键值对列表。
默认值:[]
collect_statistics:统计信息收集模式。 主要与管理插件相关。 选项包括:
- none(不发出统计信息事件)
- coarse(每队列发射/每通道/每连接统计)
- fine(也发射每消息统计)
你可能不想自己改变这个。
默认值:none
collect_statistics_interval
:统计信息收集间隔(以毫秒为单位)。 主要与管理插件相关。默认值:
5000
auth_mechanisms
:向客户端提供的SASL认证机制。默认值:
['PLAIN','AMQPLAIN']
auth_backends
:要使用的身份验证/授权后端列表。 该列表可以包含模块的名称(在这种情况下,相同的模块用于认证和授权)或2元组,如{ModN,ModZ}
,在这种情况下,ModN用于认证,ModZ用于授权。在2-tuple情况下,ModZ可以由列表替换,其中所有元素必须确认每个授权查询,例如,
{ModN,[ModZ1,ModZ2]}
。 这允许授权插件混合并提供额外的安全限制。除了
rabbit_auth_backend_internal
之外的其他数据库可通过插件使用。默认值:
[rabbit_auth_backend_internal]
reverse_dns_lookups
:设置为true以使RabbitMQ在客户端连接上执行反向DNS查找,并通过rabbitmqctl和管理插件提供该信息。默认值:
false
delegate_count
:用于集群内通信的委派进程数。 在具有大量核心并且也是集群的一部分的机器上,您可能希望增加此值。默认值:
16
trace_vhosts
:跟踪器在内部使用。 你不应该改变这个。默认值:
[]
tcp_listen_options
:默认套接字选项。 你可能不想改变这个。默认:
|
|
hipe_compile
:设置为true以使用HiPE预先编译RabbitMQ的部分,HiPE是Erlang的即时编译器。 这将以增加启动时间为代价增加服务器吞吐量。您可能会看到20-50%的性能提高,但是在启动时延迟几分钟。 这些数字是高度工作负载和硬件相关的。
HiPE支持可能不会编译到您的Erlang安装。 如果不是,启用此选项将仅显示警告消息,并且启动将正常进行。 例如,Debian / Ubuntu用户需要安装
erlang-base-hipe
包。HiPE在某些平台上不可用,尤其包括Windows。
HiPE在17.5之前的Erlang / OTP版本中存在已知问题。 强烈建议对HiPE使用最近的Erlang / OTP版本。
默认值:
false
cluster_partition_handling
:如何处理网络分区。 可用模式有:ignore
pause_minority
{pause_if_all_down,[nodes], ignore| autoheal}
其中[nodes]
是节点名称列表(例如:['rabbit @ node1','rabbit @ node2']
)autoheal
有关更多信息,请参阅分区文档。
默认值:
ignore
cluster_keepalive_interval
:节点应如何频繁地向其他节点发送keepalive消息(以毫秒为单位)。 注意这和net_ticktime
不一样; 错过保持活动消息不会导致节点被视为失败。默认:
10000
queue_index_embed_msgs_below
:消息以字节为单位的大小,在该消息之下,消息将直接嵌入队列索引中。 建议您在更改之前阅读持久性调优文档。默认值:
4096
msg_store_index_module
:用于队列索引的实现模块。 建议您在更改之前阅读持久性调优文档。默认值:
rabbit_msg_store_ets_index
backing_queue_module
:队列内容的实现模块。 你可能不想改变这个。默认值:
rabbit_variable_queue
msg_store_file_size_limit
:持久性的可调参数值。 你几乎肯定不应该改变这个。默认值:
16777216
mnesia_table_loading_timeout
:等待群集中的Mnesia表变为可用时使用的超时。默认值:
30000
queue_index_max_journal_entries
:持久性的可调参数值。 你几乎肯定不应该改变这个。默认值:
65536
queue_master_locator
:队列主机位置策略。 可用的策略有:<<“min-masters”>>
<<“client-local”>>
<<“random”>>
有关详细信息,请参阅队列主机位置的文档。
默认值:
<<“client-local”>>