

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configura las instancias AL2
<a name="configure-ec2-instance"></a>

Una vez que haya lanzado la AL2 instancia e iniciado sesión correctamente, podrá realizar cambios en ella. Hay muchas formas diferentes de configurar una instancia para satisfacer las necesidades de una aplicación específica. A continuación se muestran algunas tareas comunes que le ayudan a comenzar.

**Topics**
+ [Casos de uso de configuración comunes](#instance-configuration-scenarios)
+ [Administre el software de su instancia AL2](managing-software.md)
+ [Control del estado del procesador para su instancia de Amazon EC2 AL2](processor_state_control.md)
+ [Programador de E/S para AL2](io-scheduler.md)
+ [Cambia el nombre de host de la instancia AL2](set-hostname.md)
+ [Configura un DNS dinámico en tu instancia AL2](dynamic-dns.md)
+ [Configure la interfaz de red mediante ec2-net-utils para AL2](ec2-net-utils.md)

## Casos de uso de configuración comunes
<a name="instance-configuration-scenarios"></a>

La distribución base de Amazon Linux contiene paquetes de software y utilidades que son necesarios para las operaciones de servidor básicas. Sin embargo, hay muchos más paquetes de software disponibles en varios repositorios de software e incluso más paquetes disponibles para compilar a partir de código fuente. Para obtener más información sobre la instalación y compilación de software desde estas ubicaciones, consulte [Administre el software de su instancia AL2](managing-software.md).

Las instancias de Amazon Linux vienen preconfiguradas con `ec2-user`, pero tal vez quiera agregar otros usuarios sin privilegios de superusuario. Para obtener más información sobre cómo añadir y eliminar usuarios, consulte [Administrar usuarios en su Linux instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-users.html) en la Guía del *usuario de Amazon EC2*.

Si cuenta con una red propia y un nombre de dominio registrado en ella, puede cambiar el nombre del host de una instancia para que se identifique como parte de dicho dominio. También puede cambiar el símbolo del sistema para mostrar un nombre más significativo sin cambiar la configuración del nombre de host. Para obtener más información, consulte [Cambia el nombre de host de la instancia AL2](set-hostname.md). Puede configurar una instancia para usar un proveedor de servicio DNS dinámico. Para obtener más información, consulte [Configura un DNS dinámico en tu instancia AL2](dynamic-dns.md).

Cuando se inicia una instancia en Amazon EC2, tiene la opción de pasar los datos de usuario a la instancia que se pueden utilizar para realizar tareas de configuración comunes e incluso ejecutar scripts una vez iniciada la instancia. Puede transferir dos tipos de datos de usuario a Amazon EC2: scripts de shell y directivas cloud-init. Para obtener más información, consulte [Ejecutar comandos en la Linux instancia en el momento del lanzamiento](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) en la Guía del *usuario de Amazon EC2*.

# Administre el software de su instancia AL2
<a name="managing-software"></a>

La distribución base de Amazon Linux contiene paquetes de software y utilidades que son necesarios para las operaciones de servidor básicas.

Esta información se aplica a AL2. Para obtener más información AL2023, consulte [Administrar paquetes y actualizaciones del sistema operativo AL2023 en](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) la *Guía del usuario de Amazon Linux 2023*.

Es importante mantener el software actualizado. Muchos paquetes de una distribución Linux se actualizan con frecuencia para corregir errores, agregar características y protección frente a vulnerabilidades de seguridad. Para obtener más información, consulte [Actualiza el software de la instancia en tu AL2 instancia](install-updates.md).

De forma predeterminada, AL2 las instancias se lanzan con los siguientes repositorios habilitados:
+ `amzn2-core`
+ `amzn2extra-docker`

Si bien hay muchos paquetes disponibles en estos repositorios que se actualizan mediante AWS, es posible que desees instalar un paquete que esté contenido en otro repositorio. Para obtener más información, consulte [Agrega repositorios a una instancia AL2](add-repositories.md). Para obtener ayuda para buscar e instalar los paquetes en repositorios habilitados, consulte [Busque e instale paquetes de software en una AL2 instancia](find-install-software.md).

No todo el software está disponible en paquetes de software almacenados en repositorios; algún software debe compilarse en una instancia a partir del código fuente. Para obtener más información, consulte [Prepárese para compilar el software en una AL2 instancia](compile-software.md).

AL2 las instancias administran su software mediante el administrador de paquetes yum. El administrador de paquetes yum puede instalar, quitar y actualizar el software, así como administrar todas las dependencias de cada paquete.

**Topics**
+ [Actualiza el software de la instancia en tu AL2 instancia](install-updates.md)
+ [Agrega repositorios a una instancia AL2](add-repositories.md)
+ [Busque e instale paquetes de software en una AL2 instancia](find-install-software.md)
+ [Prepárese para compilar el software en una AL2 instancia](compile-software.md)

# Actualiza el software de la instancia en tu AL2 instancia
<a name="install-updates"></a>

Es importante mantener el software actualizado. Los paquetes de una distribución Linux se actualizan con frecuencia para corregir errores, agregar características y protección frente a vulnerabilidades de seguridad. Cuando inicia y se conecta por primera vez a una instancia de Amazon Linux, es posible que vea un mensaje que le pide que actualice los paquetes de software por cuestiones de seguridad. En esta sección se muestra cómo actualizar todo el sistema o solo un paquete.

Esta información se aplica a AL2. Para obtener más información AL2023, consulte [Administrar paquetes y actualizaciones del sistema operativo AL2023 en](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) la *Guía del usuario de Amazon Linux 2023*.

Para obtener información sobre los cambios y actualizaciones AL2, consulte las [notas AL2 de la versión](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html).

Para obtener información sobre los cambios y actualizaciones de AL2023, consulte las [notas AL2023 de la versión](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html).

**importante**  
Si lanzó una instancia EC2 que utiliza una AMI de Amazon Linux 2 en una subred IPv6 exclusiva, debe conectarse a la instancia y ejecutarla. `sudo amazon-linux-https disable` Esto permite que la AL2 instancia se conecte al yum repositorio de S3 IPv6 mediante el servicio de parches http.

**Para actualizar todos los paquetes de una AL2 instancia**

1. (Opcional) Comience una sesión de **screen** en la ventana de shell Es posible que, en ocasiones, experimente una interrupción de red que desconecte la conexión SSH con la instancia. Si sucede durante una actualización de software prolongada, puede dejar la instancia en un estado recuperable, si bien confuso. Una sesión **screen** permite continuar ejecutando la actualización, aunque la conexión se interrumpa, y reconectarse a la sesión posteriormente sin problemas.

   1. Ejecute el comando **screen** para comenzar la sesión.

      ```
      [ec2-user ~]$ screen
      ```

   1. Si la sesión se desconecta, vuelva a iniciar sesión en la instancia y enumere las pantallas disponibles.

      ```
      [ec2-user ~]$ screen -ls
      There is a screen on:
      	17793.pts-0.ip-12-34-56-78	(Detached)
      1 Socket in /var/run/screen/S-ec2-user.
      ```

   1. Vuelva a conectarse a la pantalla usando el comando **screen -r** y el ID de proceso del comando anterior.

      ```
      [ec2-user ~]$ screen -r 17793
      ```

   1. Cuando haya terminado de utilizar **screen**, use el comando **exit** para cerrar la sesión.

      ```
      [ec2-user ~]$ exit
      [screen is terminating]
      ```

1. Ejecute el comando **yum update**. Opcionalmente, puede agregar la marca `--security` para aplicar las actualizaciones de seguridad únicamente.

   ```
   [ec2-user ~]$ sudo yum update
   ```

1. Revise los paquetes de la lista, escriba **y** y presione “Enter” (Ingresar) para aceptar las actualizaciones. La actualización de todos los paquetes de un sistema puede demorar varios minutos. La salida de **yum** muestra el estado de la actualización mientras se ejecuta.

1. (Opcional) [Reinicie la instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) para asegurarse de que está utilizando los paquetes y bibliotecas más recientes de la actualización; las actualizaciones del núcleo no se cargan hasta que se reinicie. Las actualizaciones de cualquier biblioteca `glibc` deben ir seguidas de un nuevo arranque. Para actualizar los paquetes que controlan servicios, puede ser suficiente con reiniciar los servicios y elegir las actualizaciones. Sin embargo, con un nuevo arranque del sistema, se asegurará de que se aplican todas las actualizaciones anteriores de los paquetes y las bibliotecas.

**Para actualizar un solo paquete de una AL2 instancia**

Siga este procedimiento para actualizar un único paquete (y sus dependencias) y no el sistema completo.

1. Ejecute el comando **yum update** con el nombre del paquete que desea actualizar.

   ```
   [ec2-user ~]$ sudo yum update openssl
   ```

1. Revise la información de los paquetes de la lista, escriba **y** y pulse “Enter” (Ingresar) para aceptar la actualización o las actualizaciones. En ocasiones se enumerará más de un paquete si hay dependencias que deban resolverse. La salida de **yum** muestra el estado de la actualización mientras se ejecuta.

1. (Opcional) [Reinicie la instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) para asegurarse de que está utilizando los paquetes y bibliotecas más recientes de la actualización; las actualizaciones del núcleo no se cargan hasta que se reinicie. Las actualizaciones de cualquier biblioteca `glibc` deben ir seguidas de un nuevo arranque. Para actualizar los paquetes que controlan servicios, puede ser suficiente con reiniciar los servicios y elegir las actualizaciones. Sin embargo, con un nuevo arranque del sistema, se asegurará de que se aplican todas las actualizaciones anteriores de los paquetes y las bibliotecas.

# Agrega repositorios a una instancia AL2
<a name="add-repositories"></a>

Esta información se aplica a. AL2 Para obtener información al respecto AL2023, consulte [Actualizaciones deterministas mediante repositorios versionados en AL2023 la Guía](https://docs.aws.amazon.com/linux/al2023/ug/deterministic-upgrades.html) del usuario de *Amazon Linux 2023.*

De forma predeterminada, AL2 las instancias se lanzan con los siguientes repositorios habilitados:
+ `amzn2-core`
+ `amzn2extra-docker`

Aunque hay muchos paquetes disponibles en estos repositorios que actualiza Amazon Web Services, es posible que desee instalar un paquete que se encuentra en otro repositorio.

Para instalar un paquete desde un repositorio diferente con **yum**, necesita agregar la información del repositorio al archivo `/etc/yum.conf` o a su propio archivo `repository.repo` en el directorio `/etc/yum.repos.d`. Puede hacerlo manualmente, pero la mayoría de los repositorios yum proporcionan un archivo `repository.repo` propio en la URL de repositorio.

**Para determinar los repositorios yum que ya están instalados**  
Enumere los repositorios yum instalados con el comando siguiente:

```
[ec2-user ~]$ yum repolist all
```

El resultado enumera los repositorios instalados e informa sobre el estado de cada uno. Los repositorios habilitados muestran el número de paquetes que contienen.

**Para agregar un repositorio yum a /etc/yum.repos.d**

1. Busque la ubicación del archivo `.repo`. Esta variará en función del repositorio que esté añadiendo. En este ejemplo, el archivo `.repo` se encuentra en `https://www.example.com/repository.repo`.

1. Añada el repositorio con el comando **yum-config-manager**.

   ```
   [ec2-user ~]$ sudo yum-config-manager --add-repo https://www.example.com/repository.repo
   Loaded plugins: priorities, update-motd, upgrade-helper
   adding repo from: https://www.example.com/repository.repo
   grabbing file https://www.example.com/repository.repo to /etc/yum.repos.d/repository.repo
   repository.repo                                      | 4.0 kB     00:00
   repo saved to /etc/yum.repos.d/repository.repo
   ```

Después de instalar un repositorio, debe habilitarlo como se describe en el procedimiento siguiente.

**Para habilitar un repositorio yum en /etc/yum.repos.d**  
Utilice el comando **yum-config-manager** con la marca `--enable repository`. El comando siguiente habilita el repositorio Extra Packages for Enterprise Linux (EPEL) desde el proyecto Fedora. De manera predeterminada, este repositorio se encuentra en `/etc/yum.repos.d` en las instancias de Amazon Linux AMI, pero no está habilitado.

```
[ec2-user ~]$ sudo yum-config-manager --enable epel
```

Para obtener más información y descargar la última versión de este paquete, consulta [https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

# Busque e instale paquetes de software en una AL2 instancia
<a name="find-install-software"></a>

Puede utilizar una herramienta de administración de paquetes para buscar e instalar los paquetes de software. En Amazon Linux 2, la herramienta de administración de paquetes de software predeterminada esYUM. En AL2023, la herramienta de administración de paquetes de software predeterminada esDNF. Para obtener más información, consulte la [herramienta de administración de paquetes](https://docs.aws.amazon.com/linux/al2023/ug/package-management.html) en la *Guía del usuario de Amazon Linux 2023*.

## Busque paquetes de software en una AL2 instancia
<a name="find-software"></a>

Puede utilizar el comando **yum search** para buscar las descripciones de los paquetes que están disponibles en los repositorios configurados. Esto es de especial ayuda si desconoce el nombre exacto del paquete que quiere instalar. Simplemente anexe la búsqueda por palabras clave al comando; para búsquedas de varias palabras, incluya la consulta de búsqueda entre comillas.

```
[ec2-user ~]$ yum search "find"
```

A continuación, se muestra un ejemplo del resultado.

```
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
============================== N/S matched: find ===============================
findutils.x86_64 : The GNU versions of find utilities (find and xargs)
gedit-plugin-findinfiles.x86_64 : gedit findinfiles plugin
ocaml-findlib-devel.x86_64 : Development files for ocaml-findlib
perl-File-Find-Rule.noarch : Perl module implementing an alternative interface to File::Find
robotfindskitten.x86_64 : A game/zen simulation. You are robot. Your job is to find kitten.
mlocate.x86_64 : An utility for finding files by name
ocaml-findlib.x86_64 : Objective CAML package manager and build helper
perl-Devel-Cycle.noarch : Find memory cycles in objects
perl-Devel-EnforceEncapsulation.noarch : Find access violations to blessed objects
perl-File-Find-Rule-Perl.noarch : Common rules for searching for Perl things
perl-File-HomeDir.noarch : Find your home and other directories on any platform
perl-IPC-Cmd.noarch : Finding and running system commands made easy
perl-Perl-MinimumVersion.noarch : Find a minimum required version of perl for Perl code
texlive-xesearch.noarch : A string finder for XeTeX
valgrind.x86_64 : Tool for finding memory management bugs in programs
valgrind.i686 : Tool for finding memory management bugs in programs
```

Las consultas de búsqueda de varias palabras solo devuelven los resultados que coinciden exactamente con la consulta. Si no ve el paquete esperado, reduzca la búsqueda a un palabra clave y después revise los resultados. También puede probar con sinónimos de las palabras clave para ampliar la búsqueda.

Para obtener más información sobre los paquetes de AL2, consulta lo siguiente:
+ [AL2 Biblioteca de extras](al2-extras.md)
+ [Repositorio de paquetes](ec2.md#package-repository)

## Instala paquetes de software en una AL2 instancia
<a name="install-software"></a>

En AL2, la herramienta de administración de paquetes yum busca diferentes paquetes de software en todos los repositorios habilitados y gestiona cualquier dependencia del proceso de instalación del software. Para obtener información sobre la instalación de paquetes de software en AL2023, consulte [Administrar paquetes y actualizaciones del sistema operativo](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) en la *Guía del usuario de Amazon Linux 2023*.

**Para instalar un paquete de un repositorio**  
Utilice el **yum install *package*** comando y *package* sustitúyalo por el nombre del software que desee instalar. Por ejemplo, para instalar el navegador web basado en texto **links**, escriba el comando siguiente.

```
[ec2-user ~]$ sudo yum install links
```

**Para instalar los archivos de paquete RPM que ha descargado**  
También puede usar **yum install** para instalar los archivos del paquete RPM que ha descargado de Internet. Para ello, simplemente anexe el nombre de la ruta a un archivo RPM al comando de instalación en lugar de anexarlo al nombre de paquete del repositorio.

```
[ec2-user ~]$ sudo yum install my-package.rpm
```

**Para ver una lista de los paquetes instalados**  
Para ver una lista de los paquetes instalados en su instancia, utilice el siguiente comando.

```
[ec2-user ~]$ yum list installed
```

# Prepárese para compilar el software en una AL2 instancia
<a name="compile-software"></a>

Hay software de código abierto disponible en Internet que no está compilado previamente y que se puede descargar desde un repositorio de paquetes. Quizá al final descubra un paquete de software que tendrá que compilar usted mismo, a partir del código fuente. Para que su sistema pueda compilar software en AL2 Amazon Linux, debe instalar varias herramientas de desarrollo, como **make****gcc**, y**autoconf**.

Dado que la compilación de software no es una tarea que requiera cada instancia Amazon EC2, estas herramientas no se instalan de forma predeterminada, sino que están disponibles en un grupo de paquetes denominado “Development Tools” que se añade fácilmente a una instancia con el comando **yum groupinstall**.

```
[ec2-user ~]$ sudo yum groupinstall "Development Tools"
```

Los paquetes de código fuente del software suelen estar disponibles para su descarga (desde sitios web como [https://github.com/](https://github.com/)y [http://sourceforge.net/](https://sourceforge.net/)) en forma de un archivo comprimido, denominado tarball. Estos archivos tarballs tendrán normalmente la extensión de archivo `.tar.gz`. Puede descomprimirlos empleando el comando **tar**.

```
[ec2-user ~]$ tar -xzf software.tar.gz
```

Una vez descomprimido y desarchivado el paquete de código fuente, debe buscar un archivo `README` o `INSTALL` en el directorio de código fuente que puede proporcionarle más instrucciones sobre la compilación e instalación del código fuente. 

**Para recuperar el código fuente de los paquetes de Amazon Linux**  
Amazon Web Services proporciona el código fuente para los paquetes mantenidos. Puede descargar el código fuente de cualquier paquete instalado con el comando **yumdownloader --source**.

Ejecute el **yumdownloader --source *package*** comando para descargar el código fuente de*package*. Por ejemplo, para descargar el código fuente del paquete `htop`, escriba el comando siguiente.

```
[ec2-user ~]$ yumdownloader --source htop

Loaded plugins: priorities, update-motd, upgrade-helper
Enabling amzn-updates-source repository
Enabling amzn-main-source repository
amzn-main-source                                                                                              | 1.9 kB  00:00:00     
amzn-updates-source                                                                                           | 1.9 kB  00:00:00     
(1/2): amzn-updates-source/latest/primary_db                                                                  |  52 kB  00:00:00     
(2/2): amzn-main-source/latest/primary_db                                                                     | 734 kB  00:00:00     
htop-1.0.1-2.3.amzn1.src.rpm
```

El archivo RPM de origen se encuentra en el directorio desde el que ha ejecutado el comando.

# Control del estado del procesador para su instancia de Amazon EC2 AL2
<a name="processor_state_control"></a>

Los estados C controlan los niveles de suspensión en los que puede entrar el núcleo cuando está inactivo. Los estados C se enumeran comenzando por C0 (el estado menos profundo, cuando el núcleo está totalmente activo y ejecutando instrucciones) y hasta C6 (el estado de inactividad más profundo en el que el núcleo está desactivado).

Los estados P controlan el rendimiento deseado (en frecuencia de CPU) desde un núcleo. Los estados P se enumeran comenzando por P0 (el ajuste de rendimiento más alto con el que el núcleo puede utilizar la tecnología Intel Turbo Boost Technology para aumentar la frecuencia si es posible) y van de P1 (el estado P que solicita la frecuencia básica máxima) hasta P15 (la frecuencia más baja posible).

Es posible que desee cambiar los ajustes del estado C o P para aumentar la uniformidad del rendimiento del procesador, reducir la latencia o ajustar la instancia para una carga de trabajo concreta. Los ajustes de estado C y P predeterminados ofrecen un rendimiento máximo, que es óptimo para la mayoría de cargas de trabajo. Sin embargo, si la aplicación puede beneficiarse de una latencia reducida a costa de frecuencias superiores de núcleo doble o único, o de un rendimiento uniforme a frecuencias más bajas en lugar de frecuencias por ráfagas Turbo Boost, plantéese experimentar con los ajustes de estado C o P disponibles para estas instancias.

*Para obtener información sobre los tipos de instancias de Amazon EC2 que permiten al sistema operativo controlar los estados C y P del procesador, consulte Control del [estado del procesador para su instancia de Amazon EC2 en la Guía del usuario de Amazon EC2](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/processor_state_control.html).*

Las siguientes secciones describen las distintas configuraciones de estado del procesador y cómo monitorizar los efectos de la configuración. Estos procedimientos se escribieron para Amazon Linux y se aplican a él; sin embargo, es posible que también funcionen para otras distribuciones de Linux con una versión 3.9 o posterior del kernel de Linux.

**nota**  
En los ejemplos de esta página se utiliza lo siguiente:  
La utilidad **turbostat** para mostrar la frecuencia del procesador y la información del estado C. La utilidad **turbostat** está disponible en Amazon Linux de forma predeterminada.
El comando **stress** para simular una carga de trabajo. Para instalar **stress**, habilite primero el repositorio EPEL mediante la ejecución de **sudo amazon-linux-extras install epel** y, a continuación, **sudo yum install -y stress**.
Si la salida no muestra la información del estado C, incluya la opción **--debug** en el comando (**sudo turbostat --debug stress *<options>***).

**Topics**
+ [Máximo rendimiento con frecuencia máxima de Turbo Boost](#turbo-perf)
+ [Alto rendimiento y baja latencia con limitación de estados C más profundos](#c-states)
+ [Rendimiento básico con el mínimo de variabilidad](#baseline-perf)

## Máximo rendimiento con frecuencia máxima de Turbo Boost
<a name="turbo-perf"></a>

Esta es la configuración predeterminada de control de estados del procesador para Amazon Linux AMI y se recomienda para la mayoría de cargas de trabajo. Esta configuración ofrece el rendimiento más alto con la menor variabilidad. Al permitir que los núcleos inactivos entren en estados de suspensión más profundos, se obtiene el margen térmico necesario para que los procesos de núcleo único o doble alcancen su máximo potencial de Turbo Boost.

El siguiente ejemplo muestra una instancia `c4.8xlarge` con dos núcleos funcionando activamente y llegando a su frecuencia máxima de procesador Turbo Boost.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [30680] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30680] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.54 3.44 2.90   0   9.18   0.00  85.28   0.00   0.00   0.00   0.00   0.00  94.04 32.70 54.18  0.00
 0   0   0   0.12 3.26 2.90   0   3.61   0.00  96.27   0.00   0.00   0.00   0.00   0.00  48.12 18.88 26.02  0.00
 0   0  18   0.12 3.26 2.90   0   3.61
 0   1   1   0.12 3.26 2.90   0   4.11   0.00  95.77   0.00
 0   1  19   0.13 3.27 2.90   0   4.11
 0   2   2   0.13 3.28 2.90   0   4.45   0.00  95.42   0.00
 0   2  20   0.11 3.27 2.90   0   4.47
 0   3   3   0.05 3.42 2.90   0  99.91   0.00   0.05   0.00
 0   3  21  97.84 3.45 2.90   0   2.11
...
 1   1  10   0.06 3.33 2.90   0  99.88   0.01   0.06   0.00
 1   1  28  97.61 3.44 2.90   0   2.32
...
10.002556 sec
```

En este ejemplo, las versiones CPUs 21 y 28 funcionan a su frecuencia máxima de Turbo Boost porque los demás núcleos han entrado en estado de `C6` reposo para ahorrar energía y proporcionar potencia y espacio térmico a los núcleos de trabajo. Las versiones CPUs 3 y 10 (cada una de las cuales comparte un núcleo de procesador con las versiones CPUs 21 y 28) están en ese `C1` estado esperando instrucciones.

En el siguiente ejemplo, los 18 núcleos están trabajando activamente, por lo que no hay margen para el Turbo Boost máximo, pero todos funcionan a la velocidad de 3.2 «Turbo Boost para todos los núcleos» GHz.

```
[ec2-user ~]$ sudo turbostat stress -c 36 -t 10
stress: info: [30685] dispatching hogs: 36 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30685] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
            99.27 3.20 2.90   0   0.26   0.00   0.47   0.00   0.00   0.00   0.00   0.00 228.59 31.33 199.26  0.00
 0   0   0  99.08 3.20 2.90   0   0.27   0.01   0.64   0.00   0.00   0.00   0.00   0.00 114.69 18.55 99.32  0.00
 0   0  18  98.74 3.20 2.90   0   0.62
 0   1   1  99.14 3.20 2.90   0   0.09   0.00   0.76   0.00
 0   1  19  98.75 3.20 2.90   0   0.49
 0   2   2  99.07 3.20 2.90   0   0.10   0.02   0.81   0.00
 0   2  20  98.73 3.20 2.90   0   0.44
 0   3   3  99.02 3.20 2.90   0   0.24   0.00   0.74   0.00
 0   3  21  99.13 3.20 2.90   0   0.13
 0   4   4  99.26 3.20 2.90   0   0.09   0.00   0.65   0.00
 0   4  22  98.68 3.20 2.90   0   0.67
 0   5   5  99.19 3.20 2.90   0   0.08   0.00   0.73   0.00
 0   5  23  98.58 3.20 2.90   0   0.69
 0   6   6  99.01 3.20 2.90   0   0.11   0.00   0.89   0.00
 0   6  24  98.72 3.20 2.90   0   0.39
...
```

## Alto rendimiento y baja latencia con limitación de estados C más profundos
<a name="c-states"></a>

Los estados C controlan los niveles de suspensión en los que puede entrar un núcleo cuando está inactivo. Puede que desee controlar los estados C para ajustar el sistema en cuanto a latencia, en lugar del rendimiento. Hacer que los núcleos pasen al estado de suspensión lleva tiempo y aunque un núcleo en suspensión ofrece más margen para que otro núcleo arranque a una frecuencia superior, el núcleo en suspensión tarda un tiempo en activarse y en funcionar. Por ejemplo, si un núcleo al que se asigna que gestione un paquete de red interrumpe su suspensión, puede haber un retraso en el servicio que produzca una interrupción. Puede configurar el sistema para que no utilice estados C más profundos, con lo que se reduce la latencia de reacción del procesador, aunque también se reduce el margen disponible para que otros núcleos alcancen la frecuencia Turbo Boost.

Un caso habitual en el que se deshabilitan los estados de suspensión más profundos es una aplicación de base de datos Redis que almacena la base de datos en la memoria del sistema para ofrecer la máxima rapidez al responder a una consulta.

**Para limitar los estados de sueño más profundos, active AL2**

1. Abra el archivo `/etc/default/grub` con el editor que prefiera.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Edite la línea `GRUB_CMDLINE_LINUX_DEFAULT` y agregue las opciones `intel_idle.max_cstate=1` y `processor.max_cstate=1` para configurar `C1` como el estado C más profundo para núcleos inactivos.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   La opción `intel_idle.max_cstate=1` configura el límite del estado C para las instancias basadas en Intel, y la opción `processor.max_cstate=1` configura el límite del estado C para las instancias basadas en AMD. Es seguro agregar ambas opciones a la configuración. Eso permite establecer el comportamiento deseado en Intel y AMD con una sola configuración.

1. Guarde el archivo y salga del editor.

1.  Ejecute el siguiente comando para volver a compilar la configuración de arranque.

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Vuelva a arrancar la instancia para habilitar la nueva opción de kernel.

   ```
   [ec2-user ~]$ sudo reboot
   ```

**Para limitar estados de suspensión más profundos en la Amazon Linux AMI**

1. Abra el archivo `/boot/grub/grub.conf` con el editor que prefiera.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Edite la línea `kernel` de la primera entrada y agregue las opciones `intel_idle.max_cstate=1` y `processor.max_cstate=1` para establecer `C1` como el estado C más profundo para núcleos inactivos.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1  processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   La opción `intel_idle.max_cstate=1` configura el límite del estado C para las instancias basadas en Intel, y la opción `processor.max_cstate=1` configura el límite del estado C para las instancias basadas en AMD. Es seguro agregar ambas opciones a la configuración. Eso permite establecer el comportamiento deseado en Intel y AMD con una sola configuración.

1. Guarde el archivo y salga del editor.

1. Vuelva a arrancar la instancia para habilitar la nueva opción de kernel.

   ```
   [ec2-user ~]$ sudo reboot
   ```

El siguiente ejemplo muestra una instancia `c4.8xlarge` con dos núcleos funcionando activamente en la frecuencia de núcleo “todos los núcleos Turbo Boost”.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5322] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5322] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.56 3.20 2.90   0  94.44   0.00   0.00   0.00   0.00   0.00   0.00   0.00 131.90 31.11 199.47  0.00
 0   0   0   0.03 2.08 2.90   0  99.97   0.00   0.00   0.00   0.00   0.00   0.00   0.00  67.23 17.11 99.76  0.00
 0   0  18   0.01 1.93 2.90   0  99.99
 0   1   1   0.02 1.96 2.90   0  99.98   0.00   0.00   0.00
 0   1  19  99.70 3.20 2.90   0   0.30
...
 1   1  10   0.02 1.97 2.90   0  99.98   0.00   0.00   0.00
 1   1  28  99.67 3.20 2.90   0   0.33
 1   2  11   0.04 2.63 2.90   0  99.96   0.00   0.00   0.00
 1   2  29   0.02 2.11 2.90   0  99.98
...
```

En este ejemplo, los núcleos de las CPUs versiones 19 y 28 funcionan a 3.2 GHz y los demás núcleos se encuentran en el `C1` estado C, esperando instrucciones. Aunque los núcleos en funcionamiento no están llegando a su frecuencia máxima Turbo Boost, los núcleos inactivos serán mucho más rápidos a la hora de responder a nuevas solicitudes que si estuvieran en el estado C `C6` más profundo.

## Rendimiento básico con el mínimo de variabilidad
<a name="baseline-perf"></a>

Puede reducir la variabilidad de la frecuencia del procesador con los estados P. Los estados P controlan el rendimiento deseado (en frecuencia de CPU) desde un núcleo. La mayoría de cargas de trabajo presentan un mejor rendimiento en P0, que solicita Turbo Boost. Pero puede ajustar el sistema para obtener un rendimiento uniforme en lugar de un rendimiento por ráfagas, lo que puede ocurrir cuando se habilitan frecuencias Turbo Boost. 

Las cargas de trabajo Intel Advanced Vector Extensions (AVX o AVX AVX2) pueden funcionar bien a frecuencias más bajas, y las instrucciones AVX pueden consumir más energía. Al ejecutar el procesador a una frecuencia más baja deshabilitando Turbo Boost, se puede reducir la cantidad de potencia usada y mantener una velocidad más uniforme. Para obtener más información acerca de la optimización de la configuración de instancias y la carga de trabajo de AVX, consulte el [sitio web de Intel](https://www.intel.com/content/www/us/en/developer/articles/technical/the-intel-advanced-vector-extensions-512-feature-on-intel-xeon-scalable.html?wapkw=advanced%20vector%20extensions).

Los controladores inactivos de CPU controlan el estado P. Las generaciones de CPU más recientes requieren controladores inactivos de CPU actualizados que se corresponden con el nivel de kernel de la siguiente manera:
+ Versiones 6.1 y superiores del kernel de Linux: es compatible con Intel Granite Rapids (por ejemplo, R8i)
+ Versiones 5.10 y superiores del kernel de Linux: compatible con AMD Milan (por ejemplo, M6a)
+ Versiones 5.6 y superiores del kernel de Linux: compatible con Intel Icelake (por ejemplo, M6i)

Para detectar si el kernel de un sistema en ejecución reconoce la CPU, ejecute el siguiente comando.

```
if [ -d /sys/devices/system/cpu/cpu0/cpuidle ]; then echo "C-state control enabled"; else echo "Kernel cpuidle driver does not recognize this CPU generation"; fi
```

Si el resultado de este comando indica falta de compatibilidad, se recomienda actualizar el kernel.

Esta sección describe cómo limitar estados de suspensión más profundos y deshabilitar Turbo Boost (solicitando el estado P `P1`) para obtener baja latencia y la mínima variabilidad en la velocidad del procesador para estos tipos de cargas de trabajo.

**Para limitar los estados de sueño más profundos y desactivar Turbo Boost AL2**

1. Abra el archivo `/etc/default/grub` con el editor que prefiera.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Edite la línea `GRUB_CMDLINE_LINUX_DEFAULT` y agregue las opciones `intel_idle.max_cstate=1` y `processor.max_cstate=1` para configurar `C1` como el estado C más profundo para núcleos inactivos.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   La opción `intel_idle.max_cstate=1` configura el límite del estado C para las instancias basadas en Intel, y la opción `processor.max_cstate=1` configura el límite del estado C para las instancias basadas en AMD. Es seguro agregar ambas opciones a la configuración. Eso permite establecer el comportamiento deseado en Intel y AMD con una sola configuración.

1. Guarde el archivo y salga del editor.

1.  Ejecute el siguiente comando para volver a compilar la configuración de arranque.

   ```
   [ec2-user ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Vuelva a arrancar la instancia para habilitar la nueva opción de kernel.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Cuando necesite la baja variabilidad de velocidad del procesador que ofrece el estado P `P1`, ejecute el siguiente comando para deshabilitar Turbo Boost.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Cuando finalice la carga de trabajo, puede volver a habilitar Turbo Boost con el siguiente comando.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

**Para limitar los estados de suspensión más profundos y deshabilitar Turbo Boost en la Amazon Linux AMI**

1. Abra el archivo `/boot/grub/grub.conf` con el editor que prefiera.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Edite la línea `kernel` de la primera entrada y agregue las opciones `intel_idle.max_cstate=1` y `processor.max_cstate=1` para establecer `C1` como el estado C más profundo para núcleos inactivos.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1 processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   La opción `intel_idle.max_cstate=1` configura el límite del estado C para las instancias basadas en Intel, y la opción `processor.max_cstate=1` configura el límite del estado C para las instancias basadas en AMD. Es seguro agregar ambas opciones a la configuración. Eso permite establecer el comportamiento deseado en Intel y AMD con una sola configuración.

1. Guarde el archivo y salga del editor.

1. Vuelva a arrancar la instancia para habilitar la nueva opción de kernel.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Cuando necesite la baja variabilidad de velocidad del procesador que ofrece el estado P `P1`, ejecute el siguiente comando para deshabilitar Turbo Boost.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Cuando finalice la carga de trabajo, puede volver a habilitar Turbo Boost con el siguiente comando.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

El siguiente ejemplo muestra una `c4.8xlarge` instancia con dos V realizando un trabajo CPUs activo a la frecuencia central de referencia, sin Turbo Boost.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5389] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5389] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.59 2.90 2.90   0  94.41   0.00   0.00   0.00   0.00   0.00   0.00   0.00 128.48 33.54 200.00  0.00
 0   0   0   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00   0.00   0.00   0.00   0.00  65.33 19.02 100.00  0.00
 0   0  18   0.04 2.90 2.90   0  99.96
 0   1   1   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   1  19   0.04 2.90 2.90   0  99.96
 0   2   2   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00
 0   2  20   0.04 2.90 2.90   0  99.96
 0   3   3   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   3  21  99.95 2.90 2.90   0   0.05
...
 1   1  28  99.92 2.90 2.90   0   0.08
 1   2  11   0.06 2.90 2.90   0  99.94   0.00   0.00   0.00
 1   2  29   0.05 2.90 2.90   0  99.95
```

Los núcleos de las CPUs versiones 21 y 28 funcionan activamente a la velocidad base del procesador de 2,9 GHz, y todos los núcleos inactivos también funcionan a la velocidad básica en el `C1` estado C, listos para aceptar instrucciones.

# Programador de E/S para AL2
<a name="io-scheduler"></a>

El I/O scheduler is a part of the Linux operating system that sorts and merges I/O solicita y determina el orden en el que se procesan.

I/O schedulers are particularly beneficial for devices such as magnetic hard drives, where seek time can be expensive and where it is optimal to merge co-located requests. I/OLos programadores tienen menos efecto en los dispositivos de estado sólido y los entornos virtualizados. Esto se debe a que para los dispositivos de estado sólido, el acceso secuencial y aleatorio no difiere, y para los entornos virtualizados, el host proporciona su propia capa de programación.

En este tema se describe el I/O programador de Amazon Linux. Para obtener más información sobre el programador de E/S utilizado por otras distribuciones de Linux, consulte su documentación respectiva.

**Topics**
+ [Programadores admitidos](#supported-schedulers)
+ [Programador predeterminado](#default-schedulers)
+ [Cambiar el programador](#change-scheduler)

## Programadores admitidos
<a name="supported-schedulers"></a>

Amazon Linux admite los siguientes I/O programadores:
+ `deadline`— El I/O programador de *fechas límite* clasifica I/O las solicitudes y las gestiona en el orden más eficiente. Garantiza una hora de inicio para cada I/O request. It also gives I/O solicitud que haya estado pendiente durante demasiado tiempo y tiene mayor prioridad.
+ `cfq`— El I/O programador *Completely Fair Queueing* (CFQ) intenta asignar las I/O resources between processes. It sorts and inserts I/O solicitudes de manera justa en colas por proceso.
+ `noop`— Las I/O scheduler inserts all I/O solicitudes de *No Operation* (noop) forman una cola FIFO y, a continuación, las fusiona en una sola solicitud. Este programador no ordena ninguna solicitud.

## Programador predeterminado
<a name="default-schedulers"></a>

No Operation (noop) es el I/O programador predeterminado de Amazon Linux. Este programador se utiliza por las razones siguientes:
+ Muchos tipos de instancia utilizan dispositivos virtualizados en los que el host subyacente realiza la programación de la instancia.
+ Los dispositivos de estado sólido se utilizan en muchos tipos de instancias en los que las ventajas de un I/O programador tienen menos efecto.
+ Es el I/O programador menos invasivo y se puede personalizar si es necesario.

## Cambiar el programador
<a name="change-scheduler"></a>

Cambiar el I/O programador puede aumentar o disminuir el rendimiento en función de si el programador hace que se completen más o menos I/O solicitudes en un tiempo determinado. Esto depende en gran medida de la carga de trabajo, de la generación del tipo de instancia que se está utilizando y del tipo de dispositivo al que se accede. Si cambia el programador de E/S que está utilizando, le recomendamos que utilice una herramienta, como **iotop**, para medir el I/O rendimiento y determinar si el cambio es beneficioso para su caso de uso.

Puede ver el I/O planificador de un dispositivo mediante el siguiente comando, que se utiliza `nvme0n1` como ejemplo. Reemplace `nvme0n1` en el siguiente comando con el dispositivo que aparece en `/sys/block` en la instancia.

```
$  cat /sys/block/nvme0n1/queue/scheduler
```

Para configurar el I/O planificador del dispositivo, utilice el siguiente comando. 

```
$  echo cfq|deadline|noop > /sys/block/nvme0n1/queue/scheduler
```

Por ejemplo, para configurar el I/O planificador de un *xvda* dispositivo de `noop` a`cfq`, usa el siguiente comando. 

```
$  echo cfq > /sys/block/xvda/queue/scheduler
```

# Cambia el nombre de host de la instancia AL2
<a name="set-hostname"></a>

Al iniciar una instancia en una VPC privada, Amazon EC2 le asigna un nombre de anfitrión del sistema operativo invitado. El tipo de nombre de host que Amazon EC2 asigna depende de la configuración de la subred. Para obtener más información sobre los nombres de host de EC2, consulte los tipos de nombres de host de las [instancias de Amazon EC2 en la Guía del usuario](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) de Amazon *EC2*.

Un nombre DNS privado típico de Amazon EC2 para una instancia EC2 configurada para utilizar una nomenclatura basada en IP con una IPv4 dirección tiene el siguiente aspecto:`ip-12-34-56-78.us-west-2.compute.internal`, donde el nombre consta del dominio interno, el servicio (en este caso,`compute`), la región y una forma de la dirección privada. IPv4 Parte de este nombre de host se muestra en el símbolo de shell cuando inicia sesión en la instancia (por ejemplo, `ip-12-34-56-78`). Cada vez que detiene y reinicia la instancia de Amazon EC2 (a menos que utilice una dirección IP elástica), la IPv4 dirección pública cambia, al igual que el nombre de DNS público, el nombre de host del sistema y el intérprete de comandos.

**importante**  
Esta información se aplica a Amazon Linux. Para obtener información acerca de otras distribuciones, consulte la documentación específica.

## Cambiar el nombre de host del sistema
<a name="set-hostname-system"></a>

Si tiene un nombre DNS público registrado para la dirección IP de la instancia (como `webserver.mydomain.com`), puede establecer el nombre de host del sistema de manera que la instancia se identifique como una parte de ese dominio. Esto también cambia la línea de comandos del shell para que muestre la primera parte de este nombre en lugar del nombre de host proporcionado por AWS (por ejemplo,). `ip-12-34-56-78` Si no tiene un nombre DNS público registrado, puede cambiar el nombre del host pero el proceso varía un poco.

Para que la actualización del nombre de host persista, debe verificar que la configuración `preserve_hostname` cloud-init esté establecida en `true`. Puede ejecutar el siguiente comando para editar o agregar esta configuración:

```
sudo vi /etc/cloud/cloud.cfg
```

Si la configuración `preserve_hostname` no aparece en la lista, agregue la siguiente línea de texto al final del archivo: 

```
preserve_hostname: true
```

**Para cambiar el nombre de host del sistema por un nombre DNS público**

Siga este procedimiento si ya tiene un nombre DNS público registrado.

1. 
   + Para AL2: utilice el **hostnamectl** comando para configurar el nombre de host de forma que refleje el nombre de dominio completo (por ejemplo,). **webserver.mydomain.com**

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.mydomain.com
     ```
   + Para Amazon Linux AMI: en la instancia, abra el archivo de configuración `/etc/sysconfig/network` en el editor de texto de su elección y cambie la entrada `HOSTNAME` para que refleje el nombre de dominio completo (como **webserver.mydomain.com**).

     ```
     HOSTNAME=webserver.mydomain.com
     ```

1. Reinicie la instancia para actualizar el nuevo nombre de host.

   ```
   [ec2-user ~]$ sudo reboot
   ```

   También puede reiniciarla utilizando la consola de Amazon EC2 (en la página **Instances** (instancia[s]), seleccione la instancia y elija **Instance state (Estado de la instancia)** y **Reboot instance [Reiniciar instancia]**).

1. Inicie sesión en la instancia y compruebe que el nombre de host se ha actualizado. El símbolo debería mostrar ahora el nuevo nombre de host (hasta el primer “.”) y el comando **hostname** debería mostrar el nombre de dominio completo.

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.mydomain.com
   ```

**Para cambiar el nombre de host del sistema sin un nombre DNS público**

1. 
   + Para AL2: utilice el **hostnamectl** comando para configurar el nombre de host de forma que refleje el nombre de host del sistema deseado (por ejemplo). **webserver**

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.localdomain
     ```
   + Para Amazon Linux AMI: en la instancia, abra el archivo de configuración `/etc/sysconfig/network` en el editor de texto que prefiera y cambie la entrada `HOSTNAME` para que refleje el nombre de host del sistema deseado (como **webserver**).

     ```
     HOSTNAME=webserver.localdomain
     ```

1. Abra el archivo de configuración `/etc/hosts` en el editor de texto que prefiera y cambie la entrada que comienza por **127.0.0.1** para que coincida con el ejemplo siguiente, cambiando el nombre de host por el suyo.

   ```
   127.0.0.1 webserver.localdomain webserver localhost4 localhost4.localdomain4
   ```

1. Reinicie la instancia para actualizar el nuevo nombre de host.

   ```
   [ec2-user ~]$ sudo reboot
   ```

   También puede reiniciarla utilizando la consola de Amazon EC2 (en la página **Instances** (instancia[s]), seleccione la instancia y elija **Instance state (Estado de la instancia)** y **Reboot instance [Reiniciar instancia]**).

1. Inicie sesión en la instancia y compruebe que el nombre de host se ha actualizado. El símbolo debería mostrar ahora el nuevo nombre de host (hasta el primer “.”) y el comando **hostname** debería mostrar el nombre de dominio completo.

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.localdomain
   ```

También puede implementar más soluciones de programación, como especificar los datos del usuario para configurar la instancia. Si la instancia forma parte de un grupo de escalado automático, puede usar enlaces de ciclo de vida para definir los datos del usuario. Para obtener más información, consulte [Ejecutar comandos en la instancia de Linux durante la inicialización](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) y [Lifecycle hook for instance launch](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#aws-resource-autoscaling-lifecyclehook--examples--Lifecycle_hook_for_instance_launch) (Enlace de ciclo de vida para la inicialización de una instancia) en la *Guía del usuario de AWS CloudFormation *.

## Cambiar el símbolo de shell sin que afecte al nombre de host
<a name="set-hostname-shell"></a>

Si no desea modificar el nombre de servidor de la instancia, pero le gustaría que se mostrara un nombre de sistema más útil (por ejemplo**webserver**) que el nombre privado que proporciona AWS (por ejemplo,`ip-12-34-56-78`), puede editar los archivos de configuración del intérprete de comandos para que muestren el apodo del sistema en lugar del nombre del servidor.

**Para cambiar el símbolo del shell por una alias de host**

1. Cree un archivo en `/etc/profile.d` que establezca la variable de entorno llamada `NICKNAME` en el valor que desea para el símbolo del shell. Por ejemplo, para establecer el alias del sistema en **webserver**, ejecute el comando siguiente.

   ```
   [ec2-user ~]$ sudo sh -c 'echo "export NICKNAME=webserver" > /etc/profile.d/prompt.sh'
   ```

1. Abra el archivo `/etc/bashrc` (Red Hat) o `/etc/bash.bashrc` (Debian/Ubuntu) en el editor de texto que prefiera (por ejemplo, **vim** o **nano**). Debe utilizar **sudo** con el comando del editor porque `/etc/bashrc` y `/etc/bash.bashrc` son propiedad de `root`.

1. Modifique el archivo y cambie la variable del símbolo del shell (`PS1`) para que muestre el alias en lugar del nombre de host. Busque la línea siguiente que establece el símbolo del shell en `/etc/bashrc` o `/etc/bash.bashrc` (abajo se muestran algunas de las líneas que lo rodean como contexto; busque la línea que comienza por `[ "$PS1"`):

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

   Cambie `\h` (el símbolo de `hostname`) de esa línea por el valor de la variable `NICKNAME`.

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@$NICKNAME \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

1. (Opcional) Para establecer el título de las ventanas del shell en el nuevo alias, complete los pasos siguientes.

   1. Cree un archivo denominado `/etc/sysconfig/bash-prompt-xterm`.

      ```
      [ec2-user ~]$ sudo touch /etc/sysconfig/bash-prompt-xterm
      ```

   1. Haga el archivo ejecutable con el siguiente comando.

      ```
      [ec2-user ~]$ sudo chmod +x /etc/sysconfig/bash-prompt-xterm
      ```

   1. Abra el archivo `/etc/sysconfig/bash-prompt-xterm` en el editor de textos que prefiera (como **vim** o **nano**). Debe utilizar **sudo** con el comando del editor porque el propietario de `/etc/sysconfig/bash-prompt-xterm` es `root`.

   1. Añada la línea siguiente al archivo.

      ```
      echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
      ```

1. Cierre sesión y vuelva a iniciarla para actualizar el nuevo valor del alias.

## Cambiar el nombre de host en otras distribuciones de Linux
<a name="set-hostname-other-linux"></a>

Los procedimientos de esta página son para usar con Amazon Linux únicamente. Para obtener más información acerca de otras distribuciones de Linux, consulte su documentación específica y los artículos siguientes:
+ [¿Cómo puedo asignar un nombre de host estático a una instancia privada de Amazon EC2 que ejecuta RHEL 7 o Centos 7??](https://aws.amazon.com/premiumsupport/knowledge-center/linux-static-hostname-rhel7-centos7/)

# Configura un DNS dinámico en tu instancia AL2
<a name="dynamic-dns"></a>

Cuando inicia una instancia de EC2, se le asigna una dirección IP pública y un nombre de sistema de nombres de dominio (DNS) público que puede utilizar para acceder a ella desde Internet. Dado que hay muchos hosts en el dominio de Amazon Web Services, estos nombres públicos deben ser bastante largos para que cada uno siga siendo único. Un nombre DNS público típico de Amazon EC2 tiene el siguiente aspecto:`ec2-12-34-56-78.us-west-2.compute.amazonaws.com`, donde el nombre consta del dominio de Amazon Web Services, el servicio (en este caso,`compute`) Región de AWS, la y una forma de la dirección IP pública.

Los servicios DNS dinámicos proporcionan nombres de host DNS personalizados dentro del área del dominio que son fáciles de recordar y también más relevantes para el caso de uso del host. Algunos de estos servicios también son gratuitos. Puede usar un proveedor DNS dinámico con Amazon EC2 y configurar la instancia para actualizar la dirección IP asociada con un nombre DNS público cada vez que se inicia la instancia. Hay muchos proveedores entre los que elegir pero los detalles específicos de elegir un proveedor y registrar un nombre quedan fuera del alcance de esta guía.<a name="procedure-dynamic-dns"></a>

**Para usar DNS dinámico con Amazon EC2**

1. Inscríbase en un proveedor de servicio DNS dinámico y registre un nombre DNS público con el servicio. Este procedimiento usa el servicio gratuito de [noip.com/free](https://www.noip.com/free) como ejemplo.

1. Configure el cliente de actualización de DNS dinámico. Una vez que tiene un proveedor de servicios DNS dinámico y un nombre DNS público registrado con el servicio, apunte el nombre DNS a la dirección IP de la instancia. Muchos proveedores (incluido [noip.com](https://noip.com)) permiten hacer esto manualmente en la página de la cuenta en el sitio web, pero muchos otros también admiten clientes de actualización de software. Si en la instancia de EC2 se está ejecutando un cliente de actualización, el registro DNS dinámico se actualiza cada vez que cambia la dirección IP, por ejemplo, como sucede después de un cierre y reinicio. En este ejemplo, se instala el cliente noip2, que funciona con el servicio que proporciona [noip.com](https://noip.com).

   1. Habilite el repositorio Extra Packages for Enterprise Linux (EPEL) para acceder al `noip2` cliente.
**nota**  
AL2 las instancias tienen instaladas de forma predeterminada las claves GPG y la información del repositorio de EPEL. [Para obtener más información y descargar la última versión de este paquete, consulta https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

      ```
      [ec2-user ~]$ sudo amazon-linux-extras install epel -y
      ```

   1. Instale el paquete `noip`.

      ```
      [ec2-user ~]$ sudo yum install -y noip
      ```

   1. Cree el archivo de configuración. Escriba la información de inicio de sesión y contraseña cuando se le pida y responda a las preguntas posteriores para configurar el cliente.

      ```
      [ec2-user ~]$ sudo noip2 -C
      ```

1. Habilite el servicio noip.

   ```
   [ec2-user ~]$ sudo systemctl enable noip.service
   ```

1. Inicie el servicio noip.

   ```
   [ec2-user ~]$ sudo systemctl start noip.service
   ```

   Este comando inicia el cliente, que lee el archivo de configuración (`/etc/no-ip2.conf`) que ha creado previamente y actualiza la dirección IP del nombre DNS público que elija.

1. Verifique que el cliente de actualización ha establecido la dirección IP correcta para el nombre DNS dinámico. Deje que pasen unos minutos para que se actualicen los registros DNS y después intente conectar la instancia usando SSH con el nombre DNS público que ha configurado en este procedimiento.

# Configure la interfaz de red mediante ec2-net-utils para AL2
<a name="ec2-net-utils"></a>

Amazon Linux 2 AMIs puede contener scripts adicionales instalados por AWS, conocidos como ec2-net-utils. Estos scripts automatizan opcionalmente la configuración de las interfaces de red. Estos scripts están disponibles únicamente para. AL2 

**nota**  
Para Amazon Linux 2023, el `amazon-ec2-net-utils` paquete genera configuraciones específicas de interfaz en el directorio. `/run/systemd/network` Para obtener más información, consulte [Servicio de red](https://docs.aws.amazon.com/linux/al2023/ug/networking-service.html) en la *Guía del usuario de Amazon Linux 2023 de *.

Use el siguiente comando para instalar el paquete AL2 si aún no está instalado, o actualícelo si ya está instalado y hay actualizaciones adicionales disponibles:

```
$ yum install ec2-net-utils
```

Los componentes siguientes forman parte de ec2-net-utils:

Reglas udev (`/etc/udev/rules.d`)  
Identifica las interfaces de red cuando se han conectado, desconectado o vuelto a conectar a una instancia en ejecución, y se asegura de que se ejecuta el script de conexión en caliente (`53-ec2-network-interfaces.rules`). Asigna la dirección MAC a un nombre de dispositivo (`75-persistent-net-generator.rules`, que genera `70-persistent-net.rules`).

script de conexión en caliente  
Genera un archivo de configuración de interfaz adecuado para usarlo con DHCP (`/etc/sysconfig/network-scripts/ifcfg-eth`*N*). También genera un archivo de configuración de ruta (`/etc/sysconfig/network-scripts/route-eth`*N*).

script DHCP  
Siempre que la interfaz de red recibe una nueva concesión DHCP, este script consulta los metadatos de la instancia en busca de direcciones IP elásticas. Para cada dirección IP elástica, agrega una regla a la base de datos de la política de direccionamiento que asegura que el tráfico saliente de dicha dirección utiliza la interfaz de red correcta. También agrega cada dirección IP privada a la interfaz de red como dirección secundaria.

**ec2ifup** eth*N* (`/usr/sbin/`)  
Amplía la funcionalidad de **ifup** estándar. Después de que el script vuelve a escribir los archivos de configuración `ifcfg-eth`*N* y `route-eth`*N*, ejecuta **ifup**.

**ec2ifdown** eth*N* (`/usr/sbin/`)  
Amplía la funcionalidad de **ifdown** estándar. Después de que este script elimina todas las reglas de la interfaz de red de la base de datos de la política de direccionamiento, ejecuta **ifdown**.

**ec2ifscan** (`/usr/sbin/`)  
Comprueba las interfaces de red que no se han configurado y las configura.  
Este script no está disponible en la versión inicial de ec2-net-utils.

Para enumerar los archivos de configuración generados por ec2-net-utils, use el comando siguiente:

```
$ ls -l /etc/sysconfig/network-scripts/*-eth?
```

Para desactivar la automatización, puede agregar `EC2SYNC=no` al archivo `ifcfg-eth`*N* correspondiente. Por ejemplo, use el comando siguiente para deshabilitar la automatización de la interfaz eth1:

```
$ sed -i -e 's/^EC2SYNC=yes/EC2SYNC=no/' /etc/sysconfig/network-scripts/ifcfg-eth1
```

Para deshabilitar la automatización completamente, puede quitar el paquete con el comando siguiente:

```
$ yum remove ec2-net-utils
```