De lo que hablaremos:- ¿Por qué decidimos cambiar a contenedores LXC?
- ¿Cómo crear un contenedor y ejecutar un host basado en Bitrix en él?
Para quien será útil:Para todos los que quieran probar una nueva solución, mientras usan menos recursos.
Beneficios de LXC sobre máquinas virtuales
Cambiamos a contenedores cuando encontramos una falta de recursos del servidor, la dificultad de diferenciar los derechos de acceso para diferentes proyectos y conflictos de software en una máquina virtual. Aquí hay algunos beneficios clave de LXC sobre las máquinas virtuales:
- Menos pérdida de rendimiento de la CPU, operaciones de disco y RAM. Casi todo lo que está disponible en el contenedor funciona a la velocidad del servidor.
- No es necesario asignar RAM para el núcleo del sistema operativo, la memoria de video, los búferes de disco, etc.
- Inicio rápido De hecho, solo se lanzan las aplicaciones que son necesarias para que el contenedor funcione.
- Admite el lanzamiento de aplicaciones individuales en el contenedor, en lugar del sistema completo. Es conveniente que los accesos se puedan otorgar simplemente agregando un usuario (en lugar de chroot), ya que solo tenemos un proyecto en el contenedor (había varios en las máquinas virtuales).
- La capacidad de gestionar los recursos de cada contenedor.
- Mueva contenedores entre servidores de forma rápida y sencilla.
Usamos rsync. Simplemente cree un contenedor con el mismo nombre en el nuevo servidor y copie:
rsync -alvz :/var/lib/lxd/container/test/ /var/lib/lxd/container/test/
Necesitamos desarrollar el quinto párrafo y hablar sobre la gestión de recursos. Debemos proporcionar al contenedor suficientes recursos para trabajar y, al mismo tiempo, asegurarnos de que el contenedor no consumirá recursos innecesarios, lo que interfiere con el trabajo del resto del sistema.
Puede ver las estadísticas de consumo de recursos mediante el comando: lxc info test
Remote: unix:// : x86_64 : 2018/12/04 14:27 UTC Status: Running Type: persistent : default Pid: 28317 IPs: eth0: inet 172.27.2.204 vethF91F2U Resources: : 56 CPU usage: ( ): 20583 Memory usage: Memory (current): 1.03GB Memory (peak): 3.11GB Network usage: eth0: : 17.45GB : 9.93GB
De acuerdo con estas estadísticas, puede realizar un seguimiento de cuántos recursos consume un contenedor y, si es necesario, limitar su consumo mediante comandos especiales:
- lxc config set test limits.memory 2048M # establece el límite de memoria.
- lxc config set test limits.cpu 1,2,3,8 # enlaza el contenedor a los núcleos de la CPU.
- lxc config set test cpu.allowance 10% # límite de consumo de CPU.
- lxc config set test root size 50GB # limita la cantidad de espacio en disco utilizado por el contenedor (funciona solo con ZFS o btrfs).
- lxc config get test limits.memory - ver el valor límite establecido
Como resultado, los contenedores le permiten recoger docenas de contenedores en un escritorio muy estándar, manteniendo un rendimiento suficiente.
Configuramos el servidor y transferimos el host estándar con Bitrix desde la máquina virtual al contenedor
1. Configuración del servidor1.1 Instale la última versión del servidor Ubuntu 18.04 en el servidor. Ya tiene LXD. LXD es un complemento de LXC, un hipervisor que simplifica la interacción con el sistema de contenedorización.
1.2
apt install bridge-utils # instalar bridge-utils
1.3
lxd init # initialize lxd
1.4
lxc profile edit default # edita el archivo de perfil:
devices: eth0: name: eth0 nictype: bridged parent: br0 type: nic root: path: / pool: default type: disk name: default
1.5 lxc launch ubuntu: 04/18 test # crea un contenedor llamado test. Él descargará la imagen, la creará y la lanzará. Esto completa la configuración y creación del contenedor, luego procede a configurar el contenedor y transferirle el host.
2. Configuración del contenedor de host y migración del sitio2.1
lxc exec test / bin / bash # Ir al contenedor creado.
2.2
add-apt-repository ppa: ondrej / php # Agrega un repositorio.
2.3
apt update # Actualiza el repositorio.
2.4
instalación aptaphp7.1 {fpm, bcmath, bz2, cli, common, curl, dev, enchant, fpm, gd, gmp, imap, intl, json,
ldap, mbstring, mcrypt, mysql, odbc, opcache, phpdbg, pspell, readline, recode, soap,
tidy, xml, xmlrpc, xsl, zip} # Instale php y todos los módulos necesarios para bitrix.
2.5
apt install nginx # Instala nginx.
2.6
vim /etc/netplan/50-cloud-init.yaml # Make ip static:
network: version: 2 ethernets: eth0: addresses: [172.27.2.108/16] gateway4: 172.27.0.1 nameservers: addresses: [172.27.1.1] dhcp4: false
2.7 Copie las configuraciones php y nginx de nuestra máquina virtual, verifique que todo comience y funcione.
2.8 Transferimos todo el sitio desde nuestra máquina virtual. Por ejemplo:
rsync -alvz virtual anterior: / var / www / / var / www /3. Crear un contenedor separado para la base de datos3.1 Repita los pasos 1
.5, 2.1 y 2.6 , nombrando el contenedor por ejemplo test-db.
3.2
apt install mysql-server # instala la base de datos
3.3
apt install pv # Instale PV para ver el progreso cuando carguemos la base de datos.
4. Configurar un nuevo servidor de base de datosPara comenzar, recopilamos información del servidor anterior:
4.1 Necesitamos usuario y pasar de la base de datos deseada.
4.2
mysql -u test -p'test '-e "show create database testDB;" # Descubra cómo se creó la base de datos (lo que necesitamos resaltar):
mysql: [Warning] Using a password on the command line interface can be insecure. +----------+--------------------------------------------------------------------------+ | Database | Create Database | +----------+--------------------------------------------------------------------------+ | demoshop | <b>CREATE DATABASE `demoshop` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ |</b> +----------+--------------------------------------------------------------------------+
4.3
mysqldump -ER --single-transacción --quick testDB | gzip> testDB.sql.gz # Ejecute este comando en el servidor donde se encuentra nuestra base de datos. Ella lo volcará y lo comprimirá en el archivo.
Iremos a nuestra nueva base de datos y realizaremos las siguientes acciones:
4.4
rsync -alvz DB antiguo: / root / testDB.sql.gz / root / # transfiere el archivo con el volcado a nuestro contenedor.
4.5
mysql # Vamos a nuestra base de datos
4.5.1
CREAR USUARIO 'usuario' @ '%' IDENTIFICADO POR 'pasar'; # crea el mismo usuario y contraseña.
4.5.2 Desde el párrafo 4.2, ingresamos el comando:
CREATE DATABASE `DBName` / *! 40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci * / ;
4.5.3
OTORGAR TODOS LOS PRIVILEGIOS EN EL nombre de la base de datos. * A 'usuario' @ '%' IDENTIFICADO por 'pasar'; # Le daremos derechos a nuestra base de datos.
4.6 Salimos de la base de datos y ejecutamos la consola del contenedor:
pv testDB.sql.gz | zcat | mysql testDB # Rellene el volcado en nuestra base de datos
5. Verificación5.1 Cambie los parámetros de conexión a la base de datos, indique la nueva IP de nuestra base de datos.
5.2 Después de eso, el sitio debería abrirse sobre IP o DNS, depende de su configuración.
Conclusión
Por lo tanto, los contenedores LXC nos ayudan a reducir el consumo de recursos del servidor de prueba y ajustar más hosts en un servidor, al tiempo que mantienen la capacidad de administrar convenientemente los recursos consumidos de cada host. Ahora tiene instrucciones ya preparadas que muestran lo fácil que es implementarlo.