Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-10 GMT+08:00

Modificación de parámetros de núcleo de nodo

Es posible que los parámetros predeterminados del kernel de Linux no satisfagan a todos los usuarios. Puede modificar el archivo de configuración /etc/sysctl.conf en el nodo para modificar los parámetros del núcleo.

  • Los comandos para modificar los parámetros del sistema de nodos solo son válidos cuando se utilizan las imágenes públicas. Los comandos proporcionados en este documento son de referencia solo cuando se utilizan las imágenes privadas.
  • Después de reiniciar el nodo, ejecute el comando sysctl -p para actualizar el valor del parámetro.
Tabla 1 Parámetros de núcleo de un nodo

Parámetro

Ubicación de parámetro

Descripción

Valor recomendado

file-max

/etc/sysctl.conf

Número máximo de manejadores de archivo en el sistema, que se pueden ajustar según sea necesario.

Consultando el parámetro:

sysctl fs.file-max

fs.file-max=1048576

nf_conntrack_buckets

nf_conntrack_max

/etc/sysctl.conf

Capacidad de la tabla de seguimiento de conexiones, que se puede ajustar según sea necesario.

Uso del bucket = [nf_conntrack_count]/[nf_conntrack_buckets]

Si el uso de CPU es mayor que 0.7 durante mucho tiempo, aumente el valor de los bucket para reducir el uso de CPU a menos de 0.7.

Consultando el parámetro:

sysctl net.netfilter.nf_conntrack_count
sysctl net.netfilter.nf_conntrack_buckets
sysctl net.netfilter.nf_conntrack_max
NOTA:

Nota: net.netfilter.nf_conntrack_buckets en EulerOS 2.3, EulerOS 2.5 y CentOS 7.6 no se pueden modificar editando /etc/sysctl.conf y puede modificar los bucket modificando /sys/module/nf_conntrack/parameters/hashsize.

El valor predeterminado se establece en función del tamaño de la memoria del nodo. Si necesita cambiar el valor, consulte la siguiente fórmula:

  • net.netfilter.nf_conntrack_buckets = [nf_conntrack_count] / 0.7
  • net.netfilter.nf_conntrack_max = 4* [nf_conntrack_buckets]

net.netfilter.nf_conntrack_tcp_timeout_close

/etc/sysctl.conf

Tiempo de expiración de la entrada de la conexión en el estado de cierre en la tabla de seguimiento de conexiones. Acortando el tiempo de caducidad puede acelerar el reciclaje.

Consultando el parámetro:

sysctl net.netfilter.nf_conntrack_tcp_timeout_close

net.netfilter.nf_conntrack_tcp_timeout_close=3

net.netfilter.nf_conntrack_tcp_be_liberal

/etc/sysctl.conf

El valor del parámetro es 0 o 1.

  • 0: La función está deshabilitada. Todos los paquetes RST que no están en la ventana TCP se marcan como no válidos.
  • 1: La función está habilitada. Solo los paquetes RST que no están en la ventana TCP se marcan como no válidos. En el caso de contenedores, la activación de este parámetro puede evitar que se limite el ancho de banda de las conexiones TCP que se han traducido mediante NAT.

Consultando el parámetro:

sysctl net.netfilter.nf_conntrack_tcp_be_liberal

net.netfilter.nf_conntrack_tcp_be_liberal=1

tcp_keepalive_time

/etc/sysctl.conf

Intervalo para enviar mensajes de detección de Keepalive con TCP. Si este parámetro se establece en un valor grande, las conexiones TCP pueden suspenderse en la fase Close_wait durante mucho tiempo, agotando los recursos del sistema.

Consultando el parámetro:

sysctl net.ipv4.tcp_keepalive_time

net.ipv4.tcp_keepalive_time=600

tcp_max_syn_backlog

/etc/sysctl.conf

Número máximo de medias conexiones de TCP, es decir, el número máximo de conexiones en la cola SYN_RECV.

Consultando el parámetro:

sysctl net.ipv4.tcp_max_syn_backlog

net.ipv4.tcp_max_syn_backlog=8096

tcp_max_tw_buckets

/etc/sysctl.conf

Especifica el número máximo de sockets en el estado de espera de tiempo que puede existir en cualquier momento. Si el valor del parámetro es demasiado grande, los recursos de nodo pueden agotarse.

Consultando el parámetro:

sysctl net.ipv4.tcp_max_tw_buckets

net.ipv4.tcp_max_tw_buckets=5000

net.core.somaxconn

/etc/sysctl.conf

Número máximo de conexiones de TCP y tamaño máximo de la cola ESTABLISHED. Si el valor del parámetro es demasiado pequeño, el valor puede ser insuficiente.

Consultando el parámetro:

sysctl net.core.somaxconn

net.core.somaxconn=32768

max_user_instances

/etc/sysctl.conf

Número máximo de instancias de inotificación permitidas para cada usuario. Si el valor del parámetro es demasiado pequeño, el número de instancias de inotify puede ser insuficiente en los contenedores.

Consultando el parámetro:

sysctl fs.inotify.max_user_instances

fs.inotify.max_user_instances=8192

max_user_watches

/etc/sysctl.conf

Número máximo de directorios de todas las instancias de supervisión. Si el valor del parámetro es demasiado pequeño, el número de directorios puede ser insuficiente en los contenedores.

Consultando el parámetro:

sysctl fs.inotify.max_user_watches

fs.inotify.max_user_watches=524288

netdev_max_backlog

/etc/sysctl.conf

Tamaño de la cola de recepción de paquetes de la pila de protocolos de red. Si el valor del parámetro es demasiado pequeño, el tamaño de la cola puede ser insuficiente.

Consultando el parámetro:

sysctl net.core.netdev_max_backlog

net.core.netdev_max_backlog=16384

net.core.wmem_max

net.core.rmem_max

/etc/sysctl.conf

Tamaño de memoria (bytes) del búfer de envío y recepción. Si este parámetro se establece en un valor pequeño, el tamaño de memoria puede ser insuficiente en escenarios de los archivos grandes.

Consultando el parámetro:

sysctl net.core.wmem_max
sysctl net.core.rmem_max

net.core.wmem_max=16777216

net.core.rmem_max=16777216

net.ipv4.neigh.default.gc_thresh1

net.ipv4.neigh.default.gc_thresh2

net.ipv4.neigh.default.gc_thresh3

/etc/sysctl.conf

Optimización de la recolección de basura de las entradas ARP.

Consultando el parámetro:

sysctl net.ipv4.neigh.default.gc_thresh1
sysctl net.ipv4.neigh.default.gc_thresh2
sysctl net.ipv4.neigh.default.gc_thresh3

net.ipv4.neigh.default.gc_thresh1=0

net.ipv4.neigh.default.gc_thresh2=4096

net.ipv4.neigh.default.gc_thresh3=8192

vm.max_map_count

/etc/sysctl.conf

Si este parámetro se establece en un valor pequeño, se muestra un mensaje que indica que el espacio es insuficiente durante la instalación de ELK.

Consultando el parámetro:

sysctl vm.max_map_count

vm.max_map_count=262144

Modificación de parámetros de núcleo de un nodo

Tabla 1 enumera los parámetros del núcleo de los nodos. A continuación se describe cómo cambiar el valor de tcp_keepalive_time que indica el intervalo para enviar mensajes de detección de Keepalive a través de TCP.

  1. Inicie sesión en el nodo y vea el archivo /etc/sysctl.conf.

    cat /etc/sysctl.conf

  2. Modifique el parámetro net.ipv4.tcp_keepalive_time. net.ipv4.tcp_keepalive_time=600 indica el nombre del parámetro del núcleo y el valor recomendado. Para obtener más información sobre el valor recomendado, consulte Tabla 1.

    Para modificar otros parámetros del núcleo, reemplace los nombres y valores de los parámetros de los comandos haciendo referencia a Tabla 1.

    • Si se ha establecido net.ipv4.tcp_keepalive_time en el archivo sysctl.conf, ejecute el siguiente comando para cambiar el valor:
      sed -i "s/net.ipv4.tcp_keepalive_time=[0-9]*$/net.ipv4.tcp_keepalive_time=600/g" /etc/sysctl.conf && sysctl -p
    • Si net.ipv4.tcp_keepalive_time no está definido en el archivo sysctl.conf, ejecute el siguiente comando para agregarlo:
      echo net.ipv4.tcp_keepalive_time=600 >> /etc/sysctl.conf && sysctl -p

  3. Ejecute el comando de Tabla 1 para comprobar si la modificación se realiza correctamente. Si el valor devuelto es el mismo que el valor modificado, la modificación se realiza correctamente.

    # sysctl net.ipv4.tcp_keepalive_time
    net.ipv4.tcp_keepalive_time = 600

Configuración automática de parámetros de núcleo al crear un nodo o un grupo de nodos

Puede configurar el script para que se ejecute después de crear un nodo o un grupo de nodos. Al crear un nodo o grupo de nodos, puede usar el script para configurar los parámetros del núcleo.

El parámetro tcp_keepalive_time se utiliza como ejemplo para describir cómo cambiar el intervalo para enviar mensajes de detección de Keepalive a través de TCP. El valor es el valor recomendado de Tabla 1.

  1. Confirme el sistema operativo del nodo o grupo de nodos que se va a crear, por ejemplo, CentOS 7.6.
  2. Pruebe manualmente los comandos de script en los nodos en el mismo clúster y ejecute el mismo SO. Para obtener más información sobre cómo ejecutar manualmente el script, consulte Modificación de parámetros de núcleo de un nodo.
  3. Al crear un nodo o grupo de nodos, elija Advanced Settings > Post-installation Command para agregar comandos. (Los siguientes comandos deben configurarse después de que la verificación se realice correctamente.) Para modificar otros parámetros del kernel, reemplace los nombres y valores de los parámetros de los comandos haciendo referencia a Tabla 1.

    • Inicie sesión en el nodo y compruebe el archivo /etc/sysctl.conf. Si se ha establecido net.ipv4.tcp_keepalive_time en el archivo, ejecute el siguiente comando para cambiarlo:
      sed -i "s/net.ipv4.tcp_keepalive_time=[0-9]*$/net.ipv4.tcp_keepalive_time=600/g" /etc/sysctl.conf && sysctl -p
    • Inicie sesión en el nodo y compruebe el archivo /etc/sysctl.conf. Si net.ipv4.tcp_keepalive_time no está definido en el archivo, ejecute el siguiente comando para agregarlo:
      echo net.ipv4.tcp_keepalive_time=600 >> /etc/sysctl.conf && sysctl -p

    El comando de la siguiente figura solo se utiliza como ejemplo. Cámbielo según sea necesario.

  4. Una vez creado el nodo, inicie sesión en el nodo y ejecute el comando en Tabla 1 para comprobar si la modificación se ha realizado correctamente.