Opciones de chef-backend.rb
Correr chef-backend-ctl gen-sample-backend-config
para generar el chef-backend.rb
expediente. Esto controlará la mayoría de las diversas características y marcas de configuración que ingresan a un nodo de backend de Chef HA. Varias de estas opciones controlan la confiabilidad, la estabilidad y el tiempo de actividad de las bases de datos de backend de PostgreSQL, el índice Elasticsearch y el sistema de elección de líderes. Abstente de cambiarlos a menos que se te haya indicado que lo hagas.
- Las siguientes configuraciones son las únicas configuraciones que debe modificar sin guía:
fqdn
- Nombre de host de este nodo.
hide_sensitive
- Ajustado a
false
si desea imprimir deltas de archivos y plantillas confidenciales durantechef-backend-ctl reconfigure
carreras. - Valor por defecto:
true
. ip_version
- Establecer como
'ipv4'
o'ipv6'
. - Valor por defecto:
'ipv4'
. publish_address
- Dirección IP que se puede resolver externamente de este nodo de back-end.
Banderas ‘Runit’ comunes para cualquier servicio de backend
Ver https://github.com/chef-cookbooks/runit para detalles. Muchas de las banderas se repiten en los distintos servicios de backend, pero solo se documentan una vez en la parte superior aquí. Se utilizan los mismos valores predeterminados a menos que se especifique a continuación.
postgresql.enable
- Configura y ejecuta el servicio postgresql.
- Valor por defecto:
true
. postgresql.environment
- Un hash de las variables de entorno con sus valores como contenido utilizado en el directorio env del servicio.
postgresql.log_directory
- El directorio donde
svlogd
se ejecutará el servicio de registro. - Valor por defecto:
'/var/log/chef-backend/postgresql/<version>'
. postgresql.log_rotation.file_maxbytes
- El tamaño máximo que puede alcanzar un archivo de registro antes de rotarlo automáticamente.
- Valor por defecto:
104857600
(100 MB). postgresql.log_rotation.num_to_keep
- El número máximo de archivos de registro que se conservarán después de la rotación.
- Valor por defecto:
10
. etcd.enable
- Configura y ejecuta el servicio etcd.
- Valor por defecto:
true
. etcd.log_directory
- El directorio donde
svlogd
se ejecutará el servicio de registro. - Valor por defecto:
'/var/log/chef-backend/etcd'
. etcd.log_rotation.file_maxbytes
- El tamaño máximo que puede alcanzar un archivo de registro antes de rotarlo automáticamente.
- Valor por defecto:
104857600
(100 MB). etcd.log_rotation.num_to_keep
- El número máximo de archivos de registro que se conservarán después de la rotación.
- Valor por defecto:
10
. elasticsearch.enable
- Configura y ejecuta el servicio elasticsearch.
- Valor por defecto:
true
. elasticsearch.log_directory
- El directorio donde
svlogd
se ejecutará el servicio de registro. También afectapath.logs
en la configuración de Elasticsearch YAML. - Valor por defecto:
'/var/log/chef-backend/elasticsearch'
. elasticsearch.log_rotation.file_maxbytes
- El tamaño máximo que puede alcanzar un archivo de registro antes de rotarlo automáticamente.
- Valor por defecto:
104857600
(100 MB). elasticsearch.log_rotation.num_to_keep
- El número máximo de archivos de registro que se conservarán después de la rotación.
- Valor por defecto:
10
. leaderl.enable
- Configura y ejecuta el servicio líder.
- Valor por defecto:
true
. leaderl.log_directory
- El directorio donde
svlogd
se ejecutará el servicio de registro. - Valor por defecto:
'/var/log/chef-backend/leaderl'
. leaderl.start_down
- El estado predeterminado del servicio runit para
down
por crear<sv_dir>/down
expediente. - Valor por defecto:
true
. leaderl.log_rotation.file_maxbytes
- El tamaño máximo que puede alcanzar un archivo de registro antes de rotarlo automáticamente.
- Valor por defecto:
104857600
(100 MB). leaderl.log_rotation.num_to_keep
- El número máximo de archivos de registro que se conservarán después de la rotación.
- Valor por defecto:
10
.
Configuración de PostgreSQL
postgresql.db_superuser
- Cuenta de superusuario para crear. La contraseña está en
chef-backend-secrets.json
. - Valor por defecto:
'chef_pgsql'
. postgresql.md5_auth_cidr_addresses
- Una lista de direcciones autorizadas desde las que otros nodos de backend pueden conectarse para realizar la replicación de transmisión.
samehost
ysamenet
son símbolos especiales para permitir conexiones desde la dirección IP de este nodo y su subred. También puede utilizarall
para que coincida con cualquier dirección IP. Puede especificar un nombre de host o una dirección IP en formato CIDR (172.20.143.89/32
para un solo host, o172.20.143.0/24
para una red pequeña. Ver https://www.postgresql.org/docs/9.5/static/auth-pg-hba-conf.html para formatos alternativos. - Valor por defecto:
["samehost", "samenet"]
. postgresql.replication_user
- Nombre de usuario utilizado por el replicador de transmisión de postgres al acceder a este nodo.
- Valor por defecto:
'replicator'
. postgresql.username
- Nombre de usuario del sistema con el que se ejecutará el proceso de postgres.
- Valor por defecto:
'chef_pgsql'
.
Configuración de PostgreSQL dada a postgresql.conf
Ver Documentación de PostgreSQL para detalles. Se proporcionan algunos valores predeterminados:
postgresql.archive_command
- Valor por defecto:
''
. postgresql.archive_mode
- Valor por defecto:
'off'
. postgresql.archive_timeout
- Valor por defecto:
0
. postgresql.checkpoint_completion_target
- Valor por defecto:
0.5
. postgresql.checkpoint_timeout
- Valor por defecto:
'5min'
. postgresql.checkpoint_warning
- Valor por defecto:
'30s'
. postgresql.effective_cache_size
- Calculado automáticamente según la memoria disponible.
postgresql.hot_standby
- Valor por defecto:
'on'
. postgresql.keepalives_count
- Conjuntos
tcp_keepalives_count
. - Valor por defecto:
2
. postgresql.keepalives_idle
- Conjuntos
tcp_keepalives_idle
. - Valor por defecto:
60
. postgresql.keepalives_interval
- Conjuntos
tcp_keepalives_interval
. - Valor por defecto:
15
. postgresql.log_checkpoints
- Valor por defecto:
true
. postgresql.log_min_duration_statement
- Valor por defecto:
-1
. postgresql.max_connections
- Valor por defecto:
350
. postgresql.max_replication_slots
- Valor por defecto:
12
. postgresql.max_wal_senders
- Valor por defecto:
12
. postgresql.max_wal_size
- Valor por defecto:
64
. postgresql.min_wal_size
- Valor por defecto:
5
. postgresql.port
- Valor por defecto:
5432
. postgresql.shared_buffers
- Calculado automáticamente según la memoria disponible.
postgresql.wal_keep_segments
- Valor por defecto:
32
. postgresql.wal_level
- Valor por defecto:
'hot_standby'
. postgresql.wal_log_hints
- Valor por defecto:
on
. postgresql.work_mem
- Valor por defecto:
'8MB'
.
Configuración de etcd
etcd.client_port
- Puerto que se utilizará para ETCD_LISTEN_CLIENT_URLS y ETCD_ADVERTISE_CLIENT_URLS.
- Valor por defecto:
2379
. etcd.peer_port
- Puerto que se utilizará para ETCD_LISTEN_PEER_URLS y ETCD_ADVERTISE_PEER_URLS.
- Valor por defecto:
2380
.
Los siguientes ajustes se relacionan con el protocolo de consenso de etcd. Chef Backend construye su propia elección de líder sobre el protocolo de consenso de etcd. Puede ser aconsejable actualizar esta configuración si observa eventos frecuentes de conmutación por error como resultado de tiempos de espera de conexión falsos etcd. Los valores predeterminados actuales asumen un entorno de alta latencia, como los que puede encontrar si implementa Chef Backend en varios proveedores de nube.
etcd.heartbeat_interval
- ETCD_HEARTBEAT_INTERVAL en milisegundos. Esta es la frecuencia con la que el líder enviará latidos a sus seguidores. La documentación de etcd recomienda que esto se establezca aproximadamente en los tiempos de ida y vuelta entre miembros.
- Valor por defecto:
500
, (100
por defecto antes de Chef Backend 1.2). etcd.election_timeout
- ETCD_ELECTION_TIMEOUT en milisegundos. Esto controla cuánto tiempo esperará un nodo etcd el latido antes de desencadenar una elección. Según la documentación de etcd, esto debería ser de 5 a 10 veces más grande que el
etcd.heartbeat_interval
. Crecienteetcd.election_timeout
aumenta el tiempo que tardará enetcd
para detectar una falla. - Valor por defecto:
5000
, (1000
por defecto antes de Chef Backend 1.2). etcd.snapshot_count
- ETCD_SNAPSHOT_COUNT que es el número de transacciones comprometidas para activar una instantánea en el disco.
- Valor por defecto:
5000
. etcd.ionice.class
- etcd debe poder escribir en el disco con una latencia mínima. Si su clúster no cumple con los requisitos de disco, por ejemplo, está ejecutando Chef Backend en máquinas virtuales con discos compartidos, esta configuración debe cambiarse a ‘1’ (programación en tiempo real) para mitigar las fallas innecesarias en condiciones de alta latencia.
- Valor por defecto:
2
. - Nuevo en Chef Backend 2.2.
etcd.ionice.level
- Esto se puede cambiar para un mayor ajuste a entornos específicos si
etcd.ionice.class
se cambia, pero en casi todos los casos no debe modificarse. - Valor por defecto:
0
. - Nuevo en Chef Backend 2.2.
Nota
Aunque los valores predeterminados asumen un entorno de alta latencia, las implementaciones en la nube deben restringirse al mismo centro de datos, o en AWS, en la misma región. Esto significa que no se admiten las implementaciones de clústeres dispersos geográficamente. Varias zonas de disponibilidad están admitidos siempre que se encuentren en la misma región.
Ver documentación de etcd sobre elementos optimizables para más información.
Configuración de Elasticsearch JVM
elasticsearch.heap_size
- Calculado automáticamente por Elasticsearch en función de la memoria disponible. Especifique en MB si desea anular.
elasticsearch.java_opts
- Banderas para pasar directamente a la JVM al iniciar Elasticsearch. Si anula un indicador de montón aquí, la configuración aquí tiene prioridad.
elasticsearch.new_size
- Tamaño de nueva generación del montón de Java.
Configuración de Elasticsearch
Ver Documentación de configuración de Elasticsearch para informacion adicional.
elasticsearch.plugins_directory
- Establece el
path.plugins
valor. - Valor por defecto:
'/var/opt/chef-backend/elasticsearch/plugins'
. elasticsearch.port
- Establece el
http.port
valor. - Valor por defecto:
9200
. elasticsearch.scripts_directory
- Establece el
path.scripts
valor. - Valor por defecto:
'/var/opt/chef-backend/elasticsearch/scripts'
.
Configuración del servicio de gestión de líderes de backend de Chef HA
leaderl.db_timeout
- Tiempo de espera de socket al conectarse a PostgreSQL en milisegundos.
- Valor por defecto:
2000
. leaderl.http_acceptors
- Hilos HTTP que responden a las solicitudes de estado de liderazgo y supervisión de HAProxy.
- Valor por defecto:
10
. leaderl.http_address
- La dirección que escucha el líder. Esta dirección no debe ser
127.0.0.1
. Debería ser accesible desde cualquier nodo de front-end. - Valor por defecto:
'0.0.0.0'
. leaderl.http_port
- Valor por defecto:
7331
. leaderl.leader_ttl_seconds
- La cantidad de segundos que tarda la clave líder en caducar. El aumento de este valor aumentará la cantidad de tiempo que el clúster tardará en reconocer a un líder fallido. Reducir este valor puede dar lugar a frecuentes cambios de liderazgo y palizas.
- Valor por defecto:
30
. (10
por defecto antes de Chef Backend 1.2). leaderl.required_active_followers
- La cantidad de seguidores que deben sincronizarse a través de una ranura de replicación de PostgreSQL antes de que un nuevo líder devuelva 200 solicitudes HTTP a / líder. Si un líder existente no logra mantener este quórum de seguidores, el punto final / líder devolverá 503 pero las conexiones activas aún podrán completar sus escrituras en la base de datos.
- Valor por defecto:
0
. leaderl.runsv_group
- El grupo al que pertenecerán los archivos de contraseñas confidenciales. Esto se utiliza internamente con fines de prueba y nunca debe modificarse de otro modo.
- Valor por defecto:
'chef_pgsql'
. leaderl.status_internal_update_interval_seconds
- Con qué frecuencia verificamos un cambio en el estado del servicio líder en segundos.
- Valor por defecto:
5
. leaderl.status_post_update_interval_seconds
- La frecuencia con la que etcd se actualiza con el estado actual del servicio líder en segundos.
- Valor por defecto:
10
. leaderl.username
- Nombre de usuario del sistema con el que se ejecutará el proceso líder. Por lo general, lo mismo que
postgresql.username
. - Valor por defecto:
'chef_pgsql'
. leaderl.log_rotation.max_messages_per_second
- Límite de velocidad para la cantidad de mensajes que generará Erlang error_logger.
- Valor por defecto:
1000
. leaderl.etcd_pool.ibrowse_options
- Opciones internas para afectar la forma en que se realizan las solicitudes a etcd (consulte https://github.com/cmullaparthi/ibrowse/blob/master/doc/ibrowse.html).
leaderl.epmd_monitor.check_interval
- Con qué frecuencia comprobar que leaderl está registrado con el demonio de mapeo de puertos de Erlang (epmd) en milisegundos.
- Valor por defecto:
60000
.
Configuración del estado de salud del líder de backend de Chef HA
leaderl.health_check.interval_seconds
- Con qué frecuencia sondear el estado del servicio en segundos. Recomendamos configurar esto en al menos 5 veces el valor de
leaderl.leader_ttl_seconds
. - Valor por defecto:
5
, (2
por defecto antes de la versión Chef Backend 1.2). leaderl.health_check.max_bytes_behind_leader
- Límite de diferencia máxima entre el líder electo y el nodo actual en bytes.
- Valor por defecto:
52428800
(50 MB). leaderl.health_check.max_elasticsearch_failures
- Número de fallas de la API de Elasticsearch permitidas antes de que falle la verificación de estado.
- Valor por defecto:
5
. leaderl.health_check.max_etcd_failures
- Número de fallas de etcd permitidas antes de que falle la verificación de estado.
- Valor por defecto:
5
. leaderl.health_check.max_pgsql_failures
- Número de errores de conexión de PostgreSQL permitidos antes de que falle la verificación de estado.
- Valor por defecto:
5
. leaderl.health_check.fatal_system_checks
- Si fallas o no en la verificación del sistema (como fallas en el espacio en disco), el nodo se marcará como no elegible para el liderazgo.
- Valor por defecto:
false
. - Nuevo en Chef Backend 1.4.
leaderl.health_check.disk_paths
- Una matriz que contiene las rutas para comprobar si hay suficiente espacio en disco.
- Valor por defecto:
[/var/log/chef-backend, /var/opt/chef-backend]
. - Nuevo en Chef Backend 1.4.
leaderl.health_check.disk_min_space_mb
- La cantidad mínima de espacio en disco (en megabytes) necesaria para que se apruebe una comprobación de estado del disco.
- Valor por defecto:
250
. - Nuevo en Chef Backend 1.4.
Configuración del grupo de conexiones del líder de backend de Chef HA
Ver https://github.com/seth/pooler/blob/master/README.org para detalles. Estas son configuraciones internas que afectan la capacidad de respuesta, el tiempo de actividad y la confiabilidad del clúster de backend. No deben modificarse a menos que el servicio de asistencia se lo recomiende.
leaderl.etcd_pool.cull_interval_seconds
- Valor por defecto:
60
. leaderl.etcd_pool.http_timeout_ms
- Valor por defecto:
5000
. leaderl.etcd_pool.init_count
- Valor por defecto:
10
. leaderl.etcd_pool.max_age_seconds
- Valor por defecto:
60
. leaderl.etcd_pool.max_connection_duration_seconds
- Valor por defecto:
300
. leaderl.etcd_pool.max_count
- Valor por defecto:
10
.
Configuración de SSL
Si certificate
y certificate_key
son nulos, el certificado SSL se generará automáticamente utilizando los demás parámetros proporcionados. De lo contrario, son ubicaciones en disco para el certificado proporcionado por el usuario.
ssl.certificate
- Proporcione esta ruta si tiene un certificado SSL generado previamente.
ssl.certificate_key
- Proporcione esta ruta si tiene un certificado SSL generado previamente.
ssl.ciphers
- Lista ordenada de cifrados SSL permitidos. Esto se actualizará según las consideraciones de seguridad y la versión de OpenSSL que se envía.
ssl.company_name
- El nombre de su organización.
ssl.country_name
- El código de país de dos caracteres.
ssl.data_dir
- Dónde se almacenarán los certificados.
- Valor por defecto:
'/var/opt/chef-backend/ssl/'
. ssl.duration
- La duración del certificado en días.
- Valor por defecto:
3650
(10 años). ssl.key_length
- Valor por defecto:
2048
. ssl.organizational_unit_name
- El nombre de la división de su organización.
chef-backend-ctl
El clúster de alta disponibilidad de backend de Chef Infra Server incluye una utilidad de línea de comandos denominada chef-backend-ctl. Esta herramienta de línea de comandos se utiliza para administrar el clúster de alta disponibilidad de backend de Chef Infra Server, iniciar y detener servicios individuales y rastrear los archivos de registro de Chef Infra Server. Para obtener más información, consulte la documentación de chef-backend-ctl.