De quoi nous parlerons:- Pourquoi avons-nous décidé de passer aux conteneurs LXC?
- Comment créer un conteneur et y exécuter un hÎte basé sur Bitrix?
Pour qui cela sera utile:Pour tous ceux qui souhaitent essayer une nouvelle solution, tout en utilisant moins de ressources.
Avantages de LXC sur les machines virtuelles
Nous sommes passés aux conteneurs lorsque nous avons rencontré un manque de ressources serveur, la difficulté de différencier les droits d'accÚs pour différents projets et des conflits logiciels dans une machine virtuelle. Voici quelques avantages clés de LXC sur les machines virtuelles:
- Moins de perte de performances CPU, d'opérations de disque et de RAM. Presque tout ce qui est disponible dans le conteneur fonctionne à la vitesse du serveur.
- Pas besoin d'allouer de la RAM pour le noyau du systÚme d'exploitation, la mémoire vidéo, les tampons de disque, etc.
- Démarrage rapide. En fait, seules les applications nécessaires au fonctionnement du conteneur sont lancées.
- Il prend en charge le lancement d'applications individuelles dans le conteneur, plutĂŽt que le systĂšme complet. Il est pratique que les accĂšs puissent ĂȘtre accordĂ©s simplement en ajoutant un utilisateur (plutĂŽt que chroot), car nous n'avons qu'un seul projet dans le conteneur (il y en avait plusieurs sur les machines virtuelles).
- La capacité de gérer les ressources de chaque conteneur.
- Déplacez les conteneurs entre les serveurs rapidement et facilement.
Nous utilisons rsync. CrĂ©ez simplement un conteneur avec le mĂȘme nom sur le nouveau serveur et copiez:
rsync -alvz :/var/lib/lxd/container/test/ /var/lib/lxd/container/test/
Nous devons dĂ©velopper le cinquiĂšme paragraphe et parler de la gestion des ressources. Nous devons fournir au conteneur une quantitĂ© suffisante de ressources pour le travail, et en mĂȘme temps ĂȘtre sĂ»r que le conteneur ne consommera pas de ressources inutiles, interfĂ©rant ainsi avec le travail du reste du systĂšme.
Vous pouvez afficher les statistiques de consommation de ressources par la commande: 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
Selon ces statistiques, vous pouvez suivre le nombre de ressources consommées par un conteneur et, si nécessaire, limiter leur consommation à l'aide de commandes spéciales:
- lxc config set test limits.memory 2048M # définit la limite de mémoire.
- lxc config set test limits.cpu 1,2,3,8 # lie le conteneur aux cĆurs du processeur.
- lxc config set test cpu.allowance 10% # limit CPU consommation.
- lxc config set test root size 50GB # limit the amount of disk space used by the container (works only with ZFS or btrfs).
- lxc config get test limits.memory - affiche la valeur limite définie
En conséquence, les conteneurs vous permettent de récupérer des dizaines de conteneurs sur un bureau trÚs standard, tout en conservant des performances suffisantes.
Nous configurons le serveur et transférons l'hÎte standard avec Bitrix de la machine virtuelle au conteneur
1. Configuration du serveur1.1 Installez la derniÚre version du serveur Ubuntu 18.04 sur le serveur. Il a déjà LXD. LXD est un complément à LXC, un hyperviseur qui simplifie l'interaction avec le systÚme de conteneurisation.
1.2
apt install bridge-utils # install bridge-utils
1.3
lxd init # initialiser lxd
1.4
profil lxc modifier par défaut # modifier le fichier de profil:
devices: eth0: name: eth0 nictype: bridged parent: br0 type: nic root: path: / pool: default type: disk name: default
1.5 lancement lxc ubuntu: 04/18 test # créer un conteneur appelé test. Il va télécharger l'image, la créer et la lancer. Ceci termine la configuration et la création du conteneur, puis procédez à la configuration du conteneur et transférez l'hÎte vers celui-ci.
2. Configuration du conteneur hĂŽte et migration du site2.1
lxc exec test / bin / bash # Accédez au conteneur créé.
2.2
add-apt-repository ppa: ondrej / php # Ajouter un référentiel.
2.3
apt update # Mettre à jour le référentiel.
2.4
installation aptphp7.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} # Installez php et tous les modules nécessaires pour bitrix.
2.5
apt install nginx # Installez nginx.
2.6
vim /etc/netplan/50-cloud-init.yaml # Rendre l'IP statique:
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 Copiez les configurations php et nginx de notre machine virtuelle, vérifiez que tout démarre et fonctionne.
2.8 Nous transférons l'ensemble du site depuis notre machine virtuelle. Par exemple:
rsync -alvz old Virtual: / var / www / / var / www /3. Création d'un conteneur séparé pour la base de données3.1 Répétez les étapes 1,
5, 2.1 et 2.6 , en nommant le conteneur par exemple test-db.
3.2
apt install mysql-server # installe la base de données
3.3
apt install pv # Install PV pour voir les progrÚs lorsque nous téléchargeons la base de données.
4. Configuration d'un nouveau serveur de base de donnéesPour commencer, nous collectons des informations de l'ancien serveur:
4.1 Nous avons besoin d'un utilisateur et passons de la base de données souhaitée.
4.2
mysql -u test -p'test '-e "show create database testDB;" # Découvrez comment la base de données a été créée (ce que nous devons souligner):
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-transaction --quick testDB | gzip> testDB.sql.gz # ExĂ©cutez cette commande sur le serveur oĂč se trouve notre base de donnĂ©es. Elle va le vider et le compresser dans l'archive.
Nous allons accéder à notre nouvelle base de données et effectuer les actions suivantes:
4.4
rsync -alvz ancienne base de données: / root / testDB.sql.gz / root / # transférez l'archive avec le vidage vers notre conteneur.
4.5
mysql # Allons dans notre base de données
4.5.1
CREATE USER 'user' @ '%' IDENTIFIED BY 'pass'; # crĂ©ez le mĂȘme utilisateur et le mĂȘme mot de passe.
4.5.2 A partir du paragraphe 4.2, nous
saisissons la commande:
CREATE DATABASE `DBName` / *! 40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci * / ;
4.5.3
Accordez tous les privilÚges sur le nom de la base de données. * à 'utilisateur' @ '%' IDENTIFIà par 'pass'; # Nous donnerons des droits à notre base de données.
4.6 Nous quittons la base de données et
exécutons la console du conteneur:
pv testDB.sql.gz | zcat | mysql testDB # Remplissez le vidage dans notre base de données
5. Vérification5.1 Modifiez les paramÚtres de connexion à la base de données, indiquez la nouvelle IP de notre base de données.
5.2 AprÚs cela, le site devrait s'ouvrir sur IP ou DNS, cela dépend de votre configuration.
Conclusion
Ainsi, les conteneurs LXC nous aident Ă rĂ©duire la consommation des ressources du serveur de test et Ă installer plus d'hĂŽtes sur un serveur, tout en conservant la possibilitĂ© de gĂ©rer facilement les ressources consommĂ©es de chaque hĂŽte. Vous avez maintenant des instructions prĂȘtes Ă l'emploi montrant Ă quel point il est facile Ă mettre en Ćuvre.