Sobre o que falaremos:- Por que decidimos mudar para contêineres LXC?
- Como criar um contêiner e executar um host baseado em Bitrix nele?
Para quem será útil:Para todos que desejam experimentar uma nova solução, usando menos recursos.
Benefícios do LXC sobre máquinas virtuais
Mudamos para contêineres quando encontramos uma falta de recursos do servidor, a dificuldade de diferenciar direitos de acesso para diferentes projetos e conflitos de software em uma máquina virtual. Aqui estão alguns dos principais benefícios do LXC sobre máquinas virtuais:
- Menos perda de desempenho da CPU, operações de disco e RAM. Quase tudo o que está disponível no contêiner funciona na velocidade do servidor.
- Não há necessidade de alocar RAM para o kernel do SO, memória de vídeo, buffers de disco, etc.
- Início rápido. De fato, apenas os aplicativos lançados são necessários para o contêiner funcionar.
- Ele suporta o lançamento de aplicativos individuais no contêiner, em vez do sistema completo. É conveniente que os acessos possam ser concedidos simplesmente adicionando um usuário (em vez de chroot), pois temos apenas um projeto no contêiner (havia vários nas máquinas virtuais).
- A capacidade de gerenciar os recursos de cada contêiner.
- Mova contêineres entre servidores de maneira rápida e fácil.
Nós usamos o rsync. Basta criar um contêiner com o mesmo nome no novo servidor e copiar:
rsync -alvz :/var/lib/lxd/container/test/ /var/lib/lxd/container/test/
Precisamos elaborar no quinto parágrafo e falar sobre gerenciamento de recursos. Devemos fornecer ao contêiner recursos suficientes para funcionar e, ao mesmo tempo, garantir que o contêiner não consuma recursos desnecessários, interferindo, assim, no trabalho do restante do sistema.
Você pode visualizar as estatísticas do consumo de recursos pelo 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 acordo com essas estatísticas, é possível rastrear quantos recursos um contêiner consome e, se necessário, limitar seu consumo usando comandos especiais:
- limites de teste do conjunto de configuração lxc. memória 2048M # define o limite de memória.
- lxc config set test limits.cpu 1,2,3,8 # vincula o contêiner aos núcleos da CPU.
- lxc config set test cpu.allowance 10% # limit consumo de CPU.
- O tamanho da raiz do teste de configuração do lxc config 50GB # limita a quantidade de espaço em disco usado pelo contêiner (funciona apenas com ZFS ou btrfs).
- lxc config get test limits.memory - exibe o valor limite definido
Como resultado, os contêineres permitem que você pegue dezenas de contêineres em uma área de trabalho muito padrão, mantendo um desempenho suficiente.
Configuramos o servidor e transferimos o host padrão com o Bitrix da máquina virtual para o contêiner
1. Configuração do servidor1.1 Instale a versão mais recente do servidor Ubuntu 18.04 no servidor. Ele já tem LXD. O LXD é um complemento para o LXC, um hipervisor que simplifica a interação com o sistema de contêiner.
1.2
apt install bridge-utils # install bridge-utils
1.3
lxd init # inicializa o lxd
1.4
padrão de edição do perfil
lxc # edite o arquivo 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 # crie um container chamado test. Ele fará o download da imagem, criará e lançará. Isso completa a configuração e a criação do contêiner, depois prossiga para configurá-lo e transfira o host para ele.
2. Configuração de contêiner de host e migração de site2.1
lxc exec test / bin / bash # Vá para o contêiner criado.
2.2
add-apt-repository ppa: ondrej / php # Adicione um repositório.
2.3
apt update # Atualize o repositório.
2.4
apt installphp7.1 {fpm, bcmath, bz2, cli, comum, curl, dev, enchant, fpm, gd, gmp, imap, intl, json,
ldap, mbstring, mcrypt, mysql, odbc, opcache, phpdbg, pspell, readline, recode, soap,
arrumado, xml, xmlrpc, xsl, zip} # Instale o php e todos os módulos necessários para o bitrix.
2.5
apt install nginx # Instale o nginx.
2.6
vim /etc/netplan/50-cloud-init.yaml # Torne o IP estático:
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 as configurações php e nginx da nossa máquina virtual, verifique se tudo começa e funciona.
2.8 Transferimos todo o site da nossa máquina virtual. Por exemplo:
Virtual antigo do rsync -alvz: / var / www / / var / www /3. Criando um contêiner separado para o banco de dados3.1 Repita as etapas 1
.5, 2.1 e 2.6 , nomeando o contêiner, por exemplo, test-db.
3.2
apt install mysql-server # instala o banco de dados
3.3
apt install pv # Instale o PV para ver o progresso quando carregarmos o banco de dados.
4. Configurando um Novo Servidor de Banco de DadosPara começar, coletamos informações do servidor antigo:
4.1 Precisamos de usuário e passamos do banco de dados desejado.
4.2
mysql -u test -p'test '-e "show cria banco de dados testDB;" # Descubra como o banco de dados foi criado (o que precisamos destacar):
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 - única transação - teste rápidoDB | gzip> testDB.sql.gz # Execute este comando no servidor em que nosso banco de dados está localizado. Ela vai despejar e compactar no arquivo.
Iremos ao nosso novo banco de dados e executaremos as seguintes ações:
4.4
DB antigo rsync -alvz: / root / testDB.sql.gz / root / # transfere o archive com o dump para o nosso contêiner.
4.5
mysql # Vamos ao nosso banco de dados
4.5.1
CRIAR USUÁRIO 'usuário' @ '%' IDENTIFICADO POR 'passe'; # crie o mesmo usuário e senha.
4.5.2 A partir do parágrafo 4.2,
inserimos o comando:
CREATE DATABASE `DBName` / *! 40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci * / ;
4.5.3
CONCEDE TODOS OS PRIVILÉGIOS NO nome do banco de dados. * PARA 'user' @ '%' IDENTIFICADO por 'pass'; # Nós daremos direitos ao nosso banco de dados.
4.6 Saímos do banco de dados e executamos o console do contêiner:
pv testDB.sql.gz | zcat | mysql testDB # Preencha o dump no nosso banco de dados
5. Verificação5.1 Altere os parâmetros de conexão com o banco de dados, indique o novo IP do nosso banco de dados.
5.2 Depois disso, o site deve abrir por IP ou DNS, depende da sua configuração.
Conclusão
Assim, os contêineres LXC nos ajudam a reduzir o consumo de recursos do servidor de teste e ajustam mais hosts em um servidor, mantendo a capacidade de gerenciar convenientemente os recursos consumidos de cada host. Agora você tem instruções prontas que mostram como é fácil implementar.