Configuración de RabbitMQ
En esta página
Configuración de RabbitMQ en sistemas *nix
Configurando tu entorno
RabbitMQ busca un conjunto de variables de entorno en /etc/rabbitmq/rabbitmq-env.conf
. Si no existe, asume valores por defecto. Todos los valores en rabbitmq-env.conf
se exportan al entorno en el que se ejecuta el servidor RabbitMQ con un prefijo RABBITMQ_
; este prefijo no está incluido en el archivo de configuración. Se pueden establecer las siguientes variables (en una sintaxis clave=valor
):
NODENAME
: establece el nombre del nodo RabbitMQ.
CONFIG_FILE
: establece la ubicación del archivo de configuración de RabbitMQ (no este archivo de entorno)
NODE_IP_ADDRESS
: Establece la dirección IP específica para escuchar.
NODE_PORT
: Establece el puerto para escuchar
DIST_PORT
: Establece el puerto para escuchar la agrupación
USE_LONGNAME
: Valor booleano que indica si usar o no nombres completos para identificar nodos. Útil en entornos con nombres cortos idénticos.
CTL_ERL_ARGS
: Establece argumentos para el comando erl
invocado cuando se ejecuta rabbitmqctl
. Útil para la depuración.
SERVER_ERL_ARGS
: Establece argumentos para el comando erl
invocado al iniciar RabbitMQ. Establecer este valor anula el valor predeterminado (consulte la configuración de ejemplo a continuación).
SERVER_ADDITIONAL_ERL_ARGS
: establece argumentos adicionales para el comando erl
invocado al iniciar RabbitMQ. Establecer este valor se agrega a la variable SERVER_ERL_ARGS
y está vacío de manera predeterminada.
SERVER_START_ARGS
: También configurado para el comando erl
invocado al iniciar RabbitMQ.
Un archivo de configuración de ejemplo (todos los valores son en realidad predeterminados):
[email protected]
CONFIG_FILE=/etc/rabbitmq/rabbitmq.config
NODE_IP_ADDRESS=""
NODE_PORT=5672
DIST_PORT=25672
USE_LONGNAME=false
CTL_ERL_ARGS=""
SERVER_ERL_ARGS="+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true}]"
SERVER_ADDITIONAL_ERL_ARGS=""
SERVER_START_ARGS=""
Configurando RabbitMQ
Nota: El archivo de configuración de RabbitMQ está en la sintaxis de configuración estándar de Erlang. Si no está familiarizado con Erlang, esto puede resultar confuso al principio. Sigue el siguiente formato:
[
{rabbit,
[
{config_value_1, []},
{config_value_2, []}
]
},
{additional_rabbitmq_plugins,
[...]
}
]
La sección de configuración de RabbitMQ tiene las siguientes claves (extraídas de https://www.rabbitmq.com/configure.html):
tcp_listeners
: Lista de puertos en los que escuchar conexiones AMQP (sin SSL). Puede contener números enteros (que significa “escuchar en todas las interfaces”) o tuplas como{"127.0.0.1", 5672}
para escuchar en una o más interfaces.
Predeterminado: [5672]
num_tcp_acceptors
: número de procesos Erlang que aceptarán conexiones para los oyentes TCP.
Predeterminado: 10
handshake_timeout
: tiempo máximo para el protocolo de enlace AMQP 0-8/0-9/0-9-1 (después de la conexión del socket y el protocolo de enlace SSL), en milisegundos.
Predeterminado: 10000
ssl_listeners
: como arriba, para conexiones SSL.
Predeterminado: []
num_ssl_acceptors
: número de procesos Erlang que aceptarán conexiones para los oyentes SSL.
Predeterminado: 1
ssl_options
: Configuración SSL.
Predeterminado: []
ssl_handshake_timeout
: tiempo de espera del protocolo de enlace SSL, en milisegundos.
Predeterminado: 5000
vm_memory_high_watermark
: umbral de memoria en el que se activa el control de flujo. Consulte la documentación de control de flujo basado en memoria.
Predeterminado: 0.4
vm_memory_high_watermark_paging_ratio
: Fracción del límite superior de marca de agua en el que las colas comienzan a paginar mensajes en el disco para liberar memoria. Consulte la documentación de control de flujo basado en memoria.
Predeterminado: 0.5
disk_free_limit
: límite de espacio libre en disco de la partición en la que RabbitMQ almacena datos. Cuando el espacio disponible en disco cae por debajo de este límite, se activa el control de flujo. El valor se puede establecer en relación con la cantidad total de RAM (por ejemplo,{mem_relative, 1.0}
). El valor también se puede establecer en un número entero de bytes. O, alternativamente, en unidades de información (por ejemplo,"50MB"
). De forma predeterminada, el espacio libre en disco debe superar los 50 MB. Consulte la documentación de Alarmas de disco.
Predeterminado: 50000000
log_levels
: Controla la granularidad del registro. El valor es una lista de pares de categoría de evento de registro y nivel de registro.
El nivel puede ser ninguno
(no se registran eventos), error
(solo se registran errores), warning
(solo se registran errores y advertencias), info
(se registran errores, advertencias y mensajes informativos). ), o depuración
(se registran errores, advertencias, mensajes informativos y mensajes de depuración).
En la actualidad hay cuatro categorías definidas. Otros eventos, actualmente sin categorizar, siempre se registran.
Las categorías son:
-
canal
- para todos los eventos relacionados con los canales AMQP -
conexión
- para todos los eventos relacionados con las conexiones de red -
federación
- para todos los eventos relacionados con la federación -
mirroring
- para todos los eventos relacionados con las colas duplicadas
Predeterminado: [{conexión, información}]
frame_max
: Tamaño máximo permitido de un marco (en bytes) para negociar con los clientes. Establecer en 0 significa “ilimitado”, pero provocará un error en algunos clientes QPid. Establecer un valor mayor puede mejorar el rendimiento; establecer un valor menor puede mejorar la latencia.
Predeterminado: 131072
channel_max
: Número máximo de canales permitidos para negociar con los clientes. Establecer en 0 significa “ilimitado”. El uso de más canales aumenta la huella de memoria del intermediario.
Predeterminado: 0
channel_operation_timeout
: tiempo de espera de la operación del canal en milisegundos (usado internamente, no expuesto directamente a los clientes debido a las diferencias y limitaciones del protocolo de mensajería).
Predeterminado: 15000
heartbeat
: Valor que representa el retraso de los latidos, en segundos, que el servidor envía en el marco connection.tune. Si se establece en 0, los latidos del corazón están deshabilitados. Es posible que los clientes no sigan la sugerencia del servidor; consulte la referencia de AMQP para obtener más detalles. Deshabilitar los latidos puede mejorar el rendimiento en situaciones con una gran cantidad de conexiones, pero puede provocar que las conexiones se interrumpan en presencia de dispositivos de red que cierran conexiones inactivas.
Predeterminado: 60
(580
antes de la versión 3.5.5)
default_vhost
: Host virtual para crear cuando RabbitMQ crea una nueva base de datos desde cero. El intercambioamq.rabbitmq.log
existirá en este host virtual.
Predeterminado: <<"/">>
default_user
: Nombre de usuario para crear cuando RabbitMQ crea una nueva base de datos desde cero.
Predeterminado: <<"invitado">>
default_pass
: Contraseña para el usuario predeterminado.
Predeterminado: <<"invitado">>
default_user_tags
: etiquetas para el usuario predeterminado.
Predeterminado: [administrador]
default_permissions
: Permisos a asignar al usuario predeterminado al crearlo.
Predeterminado: [<<".*">>, <<".*">>, <<".*">>]
loopback_users
: lista de usuarios a los que solo se les permite conectarse al intermediario a través de una interfaz de bucle invertido (es decir, localhost).
Si desea permitir que el usuario invitado predeterminado se conecte de forma remota, debe cambiar esto a []
.
Predeterminado: [<<"invitado">>]
cluster_nodes
: configure esto para que la agrupación en clústeres ocurra automáticamente cuando un nodo se inicia por primera vez. El primer elemento de la tupla son los nodos en los que el nodo intentará agruparse. El segundo elemento es disco o ram y determina el tipo de nodo.
Predeterminado: {[], disco}
server_properties
: Lista de pares clave-valor para anunciar a los clientes en la conexión.
Predeterminado: []
-
collect_statistics
: modo de recopilación de estadísticas. Principalmente relevante para el complemento de administración. Las opciones son: -
none
(no emite eventos estadísticos) -
coarse
(emitir estadísticas por cola/por canal/por conexión) -
bien
(también emite estadísticas por mensaje)
Probablemente no quieras cambiar esto tú mismo.
Predeterminado: ninguno
collect_statistics_interval
: intervalo de recopilación de estadísticas en milisegundos. Principalmente relevante para el complemento de administración.
Predeterminado: 5000
auth_mechanisms
: mecanismos de autenticación SASL para ofrecer a los clientes.
Predeterminado: ['NORMAL', 'AMQCLAIN']
auth_backends
: Lista de backends de autenticación/autorización a utilizar. Esta lista puede contener nombres de módulos (en cuyo caso se usa el mismo módulo tanto para la autenticación como para la autorización), o 2 tuplas como{ModN, ModZ}
, en cuyo caso se usa ModN para la autenticación y ModZ para la autorización.
En el caso de 2 tuplas, ModZ se puede reemplazar por una lista, cuyos elementos deben confirmar cada consulta de autorización, p. {ModN, [ModZ1, ModZ2]}
. Esto permite que los complementos de autorización se mezclen y proporcionen restricciones de seguridad adicionales.
Otras bases de datos además de rabbit_auth_backend_internal
están disponibles a través de complementos.
Predeterminado: [rabbit_auth_backend_internal]
reverse_dns_lookups
: establezca en verdadero para que RabbitMQ realice una búsqueda de DNS inversa en las conexiones del cliente y presente esa información a través derabbitmqctl
y el complemento de administración.
Predeterminado: falso
delegate_count
: número de procesos delegados que se utilizarán para la comunicación dentro del clúster. En una máquina que tiene una gran cantidad de núcleos y también forma parte de un clúster, es posible que desee aumentar este valor.
Predeterminado: 16
trace_vhosts
: utilizado internamente por el rastreador. No deberías cambiar esto.
Predeterminado: []
tcp_listen_options
: opciones de socket predeterminadas. Probablemente no quieras cambiar esto.
Defecto:
[{backlog, 128},
{nodelay, true},
{exit_on_close, false}]
hipe_compile
: establecer en verdadero para precompilar partes de RabbitMQ con HiPE, un compilador justo a tiempo para Erlang. Esto aumentará el rendimiento del servidor a costa de un mayor tiempo de inicio.
Es posible que vea un rendimiento 20-50% mejor a costa de unos minutos de retraso en el inicio. Estas cifras dependen en gran medida de la carga de trabajo y del hardware.
Es posible que el soporte de HiPE no esté compilado en su instalación de Erlang. Si no es así, habilitar esta opción solo hará que se muestre un mensaje de advertencia y el inicio continuará con normalidad. Por ejemplo, los usuarios de Debian/Ubuntu necesitarán instalar el paquete erlang-base-hipe
.
HiPE no está disponible en absoluto en algunas plataformas, especialmente en Windows.
HiPE tiene problemas conocidos en las versiones de Erlang/OTP anteriores a la 17.5. Se recomienda encarecidamente utilizar una versión reciente de Erlang/OTP para HiPE.
Predeterminado: falso
-
cluster_partition_handling
: Cómo manejar particiones de red. Los modos disponibles son: -
ignorar
-
pausa_minoría
-
{pause_if_all_down, [nodos], ignore | autoheal}
donde[nodos]
es una lista de nombres de nodos (por ejemplo:['[email protected]', '[email protected]']
) -
reparación automática
Consulte la documentación sobre particiones para obtener más información.
Predeterminado: ignorar
cluster_keepalive_interval
: con qué frecuencia los nodos deben enviar mensajes de actividad a otros nodos (en milisegundos). Tenga en cuenta que esto no es lo mismo quenet_ticktime
; Los mensajes de mantenimiento de actividad perdidos no harán que los nodos se consideren inactivos.
Predeterminado: 10000
queue_index_embed_msgs_below
: tamaño en bytes del mensaje por debajo del cual los mensajes se incrustarán directamente en el índice de la cola. Se recomienda leer la documentación de ajuste persistente antes de cambiar esto.
Predeterminado: 4096
msg_store_index_module
: módulo de implementación para la indexación de colas. Se recomienda leer la documentación de ajuste persistente antes de cambiar esto.
Predeterminado: rabbit_msg_store_ets_index
backing_queue_module
: módulo de implementación para el contenido de la cola. Probablemente no quieras cambiar esto.
Predeterminado: rabbit_variable_queue
msg_store_file_size_limit
: valor ajustable para el persistente. Es casi seguro que no deberías cambiar esto.
Predeterminado: 16777216
mnesia_table_loading_timeout
: tiempo de espera que se usa cuando se espera que las tablas de Mnesia en un clúster estén disponibles.
Predeterminado: 30000
queue_index_max_journal_entries
: valor ajustable para el persistente. Es casi seguro que no deberías cambiar esto.
Predeterminado: 65536
-
queue_master_locator
: estrategia de ubicación del maestro de colas. Las estrategias disponibles son: -
<<"min-masters">>
-
<<"cliente-local">>
-
<<"aleatorio">>
Consulte la documentación sobre la ubicación del maestro de cola para obtener más información.
Predeterminado: <<"cliente-local">>