GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo instalar OpenVZ en Debian 9

¿Qué es OpenVZ?

OpenVZ es una herramienta de virtualización de sistema operativo basada en software que permite la implementación, administración y modificación de entornos Linux virtuales aislados desde una distribución host de Linux. Una amplia gama de plantillas de SO preconstruidas en una variedad de distribuciones de Linux permite a los usuarios descargar e implementar rápidamente entornos virtuales con facilidad.

Antes de comenzar

  1. Trabajar con este tutorial requiere una cuenta de usuario raíz y está escrito como si los comandos se emitieran como usuario raíz. Los lectores que elijan usar una cuenta de usuario limitada deberán anteponer los comandos con sudo donde sea requerido. Si todavía tiene que crear una cuenta de usuario limitada, siga los pasos de la guía Configuración y protección de una instancia informática.

  2. Las instrucciones de esta guía se escribieron y probaron solo en Debian 9. Es poco probable que funcionen para otras distribuciones de Debian o Ubuntu.

  3. Se requieren ciertas modificaciones esenciales en su sistema Debian 9 para ejecutar OpenVZ, incluida la eliminación y el reemplazo de Systemd con SystemV, y el uso de un kernel de Linux personalizado. Antes de continuar, asegúrese de que todo el software actualmente instalado en la máquina sea compatible con estos cambios.

    Nota Aunque no es obligatorio, se recomienda crear una partición de sistema de archivos Ext4 independiente para las plantillas de OpenVZ. De forma predeterminada, tanto el instalador de Debian 9 como el Linode Manager formatean las particiones recién creadas con Ext4. Para obtener información sobre cómo realizar esta configuración, siga los pasos para crear un disco en la guía Administrar discos y almacenamiento en un Linode.

Opcional:Cree una partición separada para plantillas OpenVZ

Si tiene la intención de dedicar un Linode VPS completo a ejecutar OpenVZ y ningún otro servicio, se recomienda crear particiones separadas para el servidor host y sus procesos, y cualquier plantilla de servidor virtual OpenVZ. La siguiente tabla ilustra el esquema de partición recomendado:

  1. Inicie sesión en su Linode Manager y seleccione su Linode. Apague la máquina y verifique que el trabajo se completó viendo la Cola de trabajos del host sección. Debajo de los Discos pestaña, haga clic en Crear un nuevo disco . Agregue una etiqueta de su elección, seleccione "ext4" en el Tipo menú desplegable y asigne todo el espacio que pueda en Tamaño campo. Haga clic en Guardar cambios; una configuración óptima se parecerá a la imagen de abajo.

  2. En el Panel de control pestaña, haga clic en su perfil de configuración principal. En Bloquear asignación de dispositivo pestaña, asigne su nueva partición a un dispositivo abierto. Haga clic en Guardar cambios cuando haya terminado.

  3. Inicie el Linode e inicie sesión a través de SSH. Ejecute el siguiente comando para verificar que el nuevo disco se haya creado correctamente. La salida mostrará su disco recién creado.

    fdisk -l
    
  4. Cree un punto de montaje para el nuevo dispositivo:

     mkdir /vztemp
    
  5. Monte el nuevo disco. Asegúrese de reemplazar /dev/sdc con el nombre de su dispositivo:

     mount /dev/sdc /vztemp
    

Eliminar la función Metadata_csum de los volúmenes Ext4

Antes de poder instalar OpenVZ, el sistema debe configurarse para compatibilidad. Debian 9 admite una nueva función de suma de comprobación que es incompatible con los núcleos OpenVZ personalizados. Según sus preferencias, puede optar por eliminar metadata_csum de una partición montada o volver a formatear la partición afectada a un volumen Ext4 compatible. Elija cualquiera de los métodos y siga las instrucciones en la sección correspondiente a continuación.

  1. Muestra las particiones de disco disponibles.

     lsblk
    
  2. Compruebe si "metadata_csum" está instalado en cualquier partición de disco montada que se muestra en el Paso 1 (sin incluir la partición SWAP). Siga el formato a continuación para cada partición, reemplazando /dev/sda1 con el nombre de volumen apropiado. Si el siguiente comando no genera ningún resultado para los volúmenes de disco montados, puede omitir esta sección.

     dumpe2fs -h /dev/sda1 2>/dev/null | grep -e metadata_csum
    

Eliminar Metadata_csum de las particiones montadas

  1. Ejecute los siguientes comandos para agregar código a fsck archivo:

     echo "copy_exec /sbin/e2fsck" | sudo tee -a /usr/share/initramfs-tools/hooks/fsck
     echo "copy_exec /sbin/tune2fs" | sudo tee -a /usr/share/initramfs-tools/hooks/fsck
    
  2. Cree un nuevo archivo en el directorio designado a continuación y asígnele el nombre tune . Copie y pegue el texto a continuación en este nuevo archivo y guárdelo:

    Archivo:/ etc/initramfs-tools/scripts/local-premount/tune
Partición Descripción Tamaño típico
Partición raíz 4-12 GB
intercambiar Partición de paginación 2 veces RAM o RAM + 2 GB (según el espacio disponible en el disco duro)
/vz Partición para alojar plantillas OpenVZ Todo el espacio restante en el disco duro
  • Actualice las propiedades del archivo y la imagen initramfs existente para cargar el tune guión:

     chmod 755 /etc/initramfs-tools/scripts/local-premount/tune
     update-initramfs -u -k all
    
  • Reinicie su sistema y ejecute el siguiente comando para verificar que metadata_csum se deshabilitó de todas las particiones afectadas. Nuevamente, reemplace "/dev/sda1" con los nombres de volumen correctos.

     dumpe2fs -h /dev/sda1 2>/dev/null | grep -e metadata_csum
    
  • Formatear un volumen Ext4 compatible

    1. Elija el volumen Ext4 que le gustaría formatear y emita el siguiente comando, reemplazando /dev/sda3 con el volumen seleccionado. Una salida de "0" indica éxito.

      Precaución Formatear un volumen con mkfs el comando puede provocar la pérdida de datos.
       mkfs -t ext4 -O -metadata_csum /dev/sda3
      

    Reemplazar Systemd con SystemV

    1. Instale las utilidades de SystemV.

       apt install sysvinit-core sysvinit-utils
      
    2. Desde Linode Manager, reinicie su máquina para liberar Systemd.

    3. Quite Systemd de su máquina:

       apt --auto-remove remove systemd
      
    4. Crear archivo avoid-systemd y pega el contenido a continuación:

      Archivo:/ etc/apt/preferences.d/evitar-systemd
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    #!/bin/sh
    
    if [ "$readonly" != "y" ] ;
    then exit 0 ;
    fi
    
    e2fsck -f $Volume
    tune2fs -O -metadata_csum $Volume
    e2fsck -f $Volume

    Agregar repositorio OpenVZ

    1. Cree un nuevo archivo fuente de repositorio y pegue el contenido a continuación:

      Archivo:/ etc/apt/sources.list.d/openvz.list
      deb http://download.openvz.org/debian jessie main
      deb http://download.openvz.org/debian wheezy main
    2. Agregue la clave del repositorio a su sistema:

       wget -qO - http://ftp.openvz.org/debian/archive.key | sudo apt-key add -
      
    3. A partir de la fecha de publicación de esta guía, la clave del repositorio de OpenVZ no es válida y se emite la apt update El comando generará una advertencia del sistema. El comando debería tener éxito. Si no es así, actualice el sistema con el siguiente argumento:

       apt --allow-unauthenticated update
      

    Instalar paquetes OpenVZ

    1. Instale OpenVZ con los paquetes necesarios.

       KPackage="linux-image-openvz-$(dpkg --print-architecture)"
       sudo apt --allow-unauthenticated --install-recommends install $KPackage vzdump ploop initramfs-tools dirmngr
      
    2. La instalación debería crear un nuevo directorio, /vz . Si este directorio no existe después de la instalación, cree un enlace simbólico usando el siguiente comando:

       ln -s /var/lib/vz/ /vz
      
    3. Crear archivo vznet.conf y pegue en la línea de abajo:

      Archivo:/ etc/vz/vznet.conf
    1
    2
    3
    
    Package: *systemd*
    Pin: release *
    Pin-Priority: -1
  • Este paso es opcional y hará que las instancias virtuales de OpenVZ se detengan cuando se detenga el servicio de OpenVZ. Si desea este comportamiento, emita el siguiente comando.

     echo 'VE_STOP_MODE=stop' | sudo tee -a /etc/vz/vznet.conf
    
  • Iniciar en el kernel OpenVZ

    El sistema debe estar configurado para iniciar el kernel OpenVZ cada vez que se reinicia el servidor.

    1. Abra el grub.cfg archivo en less , o su editor de texto preferido:

       less /boot/grub/grub.cfg
      
    2. Dentro de grub.cfg archivo, busque una sección similar a la siguiente:

      Archivo:/ arranque/grub/grub.cfg
    1
    
    EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr"
    Copy the text entry preceeding `submenu`, in this example the text would be: **Advanced options for Debian GNU/Linux**.
    
  • Dentro de grub.cfg archivo debajo de la línea "submenú", verá varias secciones de "entrada de menú" con sangría. Estos representan los núcleos disponibles. A partir de estos, debe ubicar la entrada del menú del kernel de OpenVZ recién instalada. Debería verse similar al contenido a continuación. Tenga en cuenta que algunos serán núcleos de recuperación y deben ignorarse:

    Archivo:/ arranque/grub/grub.cfg
  •  1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    . . .
    
    menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-e025e52b-91c4-4f64-962d-79f244caa92a' {
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod ext2
        set root='hd0'
        if [ x$feature_platform_search_hint = xy ]; then
            search --no-floppy --fs-uuid --set=root --hint-bios=hd0 --hint-efi=hd0 --hint-baremetal=ahci0  e025e52b-91c4-4f64-962d-79f244caa92a
        else
            search --no-floppy --fs-uuid --set=root e025e52b-91c4-4f64-962d-79f244caa92a
        fi
        echo    'Loading Linux 4.9.0-3-amd64 ...'
        linux   /boot/vmlinuz-4.9.0-3-amd64 root=/dev/sda ro console=ttyS0,19200n8 net.ifnames=0
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-4.9.0-3-amd64
        }
    submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-e025e52b-91c4-4f64-962d-79f244caa92a'
    
    . . .
      Again, write down the text directly after "menuentry" in single quotes. Here, the text to copy is **Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64**.
    
  • Cierre grub.cfg archivo y abra /etc/default/grub en su editor de texto preferido. Localice la línea que comienza con GRUB_DEFAULT= . Elimine el valor predeterminado para este parámetro e ingrese el texto que copió en los pasos anteriores, siguiendo el formato a continuación. Con el ejemplo anterior, el valor sería el siguiente:

     GRUB_DEFAULT="Advanced options for Debian GNU/Linux>Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64"
    

    Tenga en cuenta que ambas cadenas copiadas están separadas con el carácter de zanahoria ">".

  • Guarde y cierre el grub y emita el siguiente comando para recargar el cargador de arranque grub con el nuevo valor del kernel:

     update-grub
    
  • De forma predeterminada, la carga del kernel no la maneja Grub, sino Linode Manager. Inicie sesión en su Linode Manager y seleccione su Linode. Haga clic en su perfil de configuración. En la sección "Configuración de arranque", seleccione "GRUB 2" en la lista desplegable del Kernel (vea la imagen a continuación). Guarde sus cambios y salga.

  • Reinicie su servidor y emita el siguiente comando para verificar que se cargó el kernel de OpenVZ:

     uname -r
    

    Si no se cargó el kernel de OpenVZ, lo más probable es que sea el grub archivo que está mal configurado. Verifique y asegúrese de que se haya elegido e ingresado correctamente el núcleo correcto.

  • Descargar e implementar una plantilla de sistema operativo

    1. Inicie el servicio OpenVZ:

       service vz start
       service vz status
      
    2. Regístrese en el repositorio de plantillas oficial de OpenVZ:

       sudo gpg --recv-keys $(echo $(sudo gpg --batch --search-keys [email protected] 2>&1 | grep -ie ' key.*created' | sed -e 's|key|@|g' | cut -f 2 -d '@') | cut -f 1 -d ' ' | cut -f 1 -d ',')
      
    3. Edite /etc/vz/vz.conf y cambie la siguiente línea para usar simfs en lugar de ploop :

      Archivo:/ etc/vz/vz.conf
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    . . .
    
        menuentry 'Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-2.6.32-openvz-042stab123.9-amd64-advanced-e025e52b-91c4-4f64-962d-79f244caa92a' {
                gfxmode $linux_gfx_mode
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod ext2
                set root='hd0'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0 --hint-efi=hd0 --hint-baremetal=ahci0  e025e52b-91c4-4f64-962d-79f244caa92a
                else
                  search --no-floppy --fs-uuid --set=root e025e52b-91c4-4f64-962d-79f244caa92a
                fi
                echo    'Loading Linux 2.6.32-openvz-042stab123.9-amd64 ...'
                linux   /boot/vmlinuz-2.6.32-openvz-042stab123.9-amd64 root=/dev/sda ro console=ttyS0,19200n8 net.ifnames=0
                echo    'Loading initial ramdisk ...'
                initrd  /boot/initrd.img-2.6.32-openvz-042stab123.9-amd64
        }
    
    . . .
  • Lista de plantillas de SO disponibles para descargar:

     vztmpl-dl --list-remote
    
  • De la lista de plantillas disponibles, seleccione una para descargar. Usando el formato a continuación, emita el siguiente comando, reemplazando centos7-x86_64 con la plantilla que seleccionó:

     vztmpl-dl --gpg-check centos7-x86_64
    
  • OpenVZ se refiere a cada plantilla de SO instalada como un "Contenedor". Debe crear un ID de contenedor (CTID) para cada plantilla descargada. Ejecute el siguiente comando, reemplazando [CTID] con cualquier número (se recomienda 101) y el nombre de la plantilla de CentOS 7 con su plantilla descargada.

     vzctl create [CTID] --ostemplate centos7-x86_64
    
  • Si configura una partición de disco separada para las plantillas de OpenVZ, use el siguiente comando para crear el contenedor dentro del nuevo disco. Reemplazar –ostemplate con el nombre de su plantilla y –name con un nombre descriptivo de su elección:

    vzctl create [CTID] --ostemplate debian-8.0-x86_64 --layout simfs --name centos7 --private /vztemp/vz/private/$VEID --root /vztemp/vz/root/$VEID --config basic
    
  • Ahora se habrá creado un archivo de configuración para su plantilla de sistema operativo. La ubicación de este archivo se especifica como parte de la salida del comando anterior. Abra este archivo ahora para realizar los siguientes cambios a continuación. El archivo de configuración se nombrará en formato [CTID].conf.

    • Dé a su entorno virtual una dirección IP. El formato recomendado es 192.168.0.[CTID]. En este caso sería 192.168.0.101.
    • Proporcione un servidor de nombres. El servidor de nombres de Google (8.8.8.8) debería ser suficiente.
    • Si tiene problemas para iniciar su entorno virtual, puede intentar cambiar VE_LAYOUT volver a ploop de simfs .

    También puede configurar otras opciones a su discreción, como SWAP y asignación de RAM. Guarde y cierre cuando termine.

    Archivo:/ etc/vz/conf/101.conf
  • 1
    
    VE_LAYOUT=simfs
  • Arranque en su contenedor recién creado usando los comandos a continuación. Reemplace [CTID] con el número CTID de su contenedor. Para salir de cualquier sesión de contenedor mientras deja el entorno virtual en ejecución, escriba exit en la línea de comando.

     vzctl start [CTID]
     vzctl enter [CTID]
    
  • Configurar el acceso a Internet a los contenedores

    Los contenedores no tienen forma de acceder a Internet o ser accedidos desde Internet. El servidor host debe estar configurado para transmitir solicitudes hacia y desde cada entorno virtual instalado.

    Configurar acceso desde contenedor a Internet

    Nota Es posible que deba iniciar sesión como root con su - para ejecutar los comandos iptables-save en esta sección.
    1. En el servidor host, emita el siguiente comando usando Iptables. Reemplace los corchetes y el contenido con la información adecuada. Para la dirección IP del contenedor, asegúrese de incluirla en notación CIDR. Incluya la dirección IP y la subred, o xxx.xxx.xxx.xxx/xx , para abarcar un rango de direcciones IP que permitirán el acceso a cualquier contenedor agregado en el futuro. Por ejemplo, ingresar 192.168.0.0/24 configurará el enrutamiento para las direcciones IP 192.168.0.0 a 192.168.0.255:

       iptables -t nat -A POSTROUTING -s [container IP] -o eth0 -j SNAT --to [host server IP]
      
    2. Si tiene iptables-persistent instalado, omita este paso. Guarde las nuevas reglas de Iptables:

       iptables-save > /etc/iptables.conf
      
    3. Configure su firewall para permitir solicitudes reenviadas. Si no está utilizando iptables-persistent guarda la regla:

       iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
       iptables-save > /etc/iptables.conf
      
    4. Ahora debería tener acceso a Internet desde el entorno de su contenedor. Intente actualizar paquetes desde su contenedor para verificar la conexión.

    Configurar el acceso desde Internet al contenedor

    1. Si necesita acceder a un servicio específico en su contenedor desde Internet, deberá reservar un puerto en la máquina host y enrutar el acceso a través de él. Ejecute el siguiente comando, reemplazando cualquier valor entre paréntesis con la información adecuada:

       iptables -t nat -A PREROUTING -p tcp -d [host_ip] --dport [host_port_number] -i eth0 -j DNAT --to-destination [container_ip:container_port_number]
      
    2. Guarde su nueva regla. Omita este paso si tiene iptables-persistent instalado:

       iptables-save > /etc/iptables.conf
      

    Dónde ir desde aquí

    Después de instalar OpenVZ, descargar una plantilla, crear un contenedor y configurar el acceso a Internet, su entorno virtual funcionará exactamente como cualquier entorno Linux normal:requiere actualizaciones periódicas, configuración de seguridad, etc. La mayoría de las configuraciones se pueden realizar desde el servidor host a través de los comandos de OpenVZ. .

    Consulte el enlace "Operaciones básicas de OpenVZ" en los Recursos externos sección para familiarizarse con los comandos básicos de administración. También se pueden descargar plantillas adicionales creadas por el usuario, que no están incluidas en la lista de plantillas principal. Puede encontrarlos siguiendo el enlace "Plantillas aportadas por usuarios de OpenVZ".

    Más información

    Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.

    • Operaciones básicas de OpenVZ
    • Plantillas aportadas por usuarios de OpenVZ

    Docker
    1. Cómo instalar Debian 10 (Buster)

    2. Cómo instalar Python 3.9 en Debian 10

    3. Cómo instalar Memcached en Debian 10

    4. Cómo instalar TeamViewer en Debian 10

    5. Cómo instalar Git en Debian 9

    Cómo instalar Skype en Debian 9

    Cómo instalar Python 3.7 en Debian 9

    Cómo instalar R en Debian 10

    Cómo instalar Debian 11

    Cómo instalar Go en Debian 10

    Cómo instalar Go en Debian

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      
      . . .
      
      # RAM
      PHYSPAGES="0:256M"
      
      # Swap
      SWAPPAGES="0:512M"
      
      # Disk quota parameters (in form of softlimit:hardlimit)
      DISKSPACE="2G:2.2G"
      DISKINODES="131072:144179"
      QUOTATIME="0"
      
      # CPU fair scheduler parameter
      CPUUNITS="1000"
      
      NETFILTER="stateless"
      VE_ROOT="/var/lib/vz/root/$VEID"
      VE_PRIVATE="/var/lib/vz/private/$VEID"
      VE_LAYOUT="simfs"
      OSTEMPLATE="centos7-x86_64"
      ORIGIN_SAMPLE="vswap-256m"
      NAMESERVER="8.8.8.8"
      IP_ADDRESS="192.168.0.101/24"
      HOSTNAME="centos-7"