{"id":1107,"date":"2019-09-18T07:36:32","date_gmt":"2019-09-18T10:36:32","guid":{"rendered":"https:\/\/eurotigroup.com.br\/blog\/?p=1107"},"modified":"2019-09-18T07:36:32","modified_gmt":"2019-09-18T10:36:32","slug":"openvz-o-container-para-administradores-de-sistemas","status":"publish","type":"post","link":"https:\/\/eurotigroup.com.br\/blog\/openvz-o-container-para-administradores-de-sistemas.html","title":{"rendered":"OpenVz &#8211; O Container para administradores de sistemas"},"content":{"rendered":"\n<p>Como assim cont\u00eainer para administradores de sistemas? Os outros cont\u00eaineres n\u00e3o s\u00e3o? Bem, a ferramenta de cont\u00eainer da moda \u00e9 o Docker, e agora tamb\u00e9m o Rocket j\u00e1 que a CoreOS esta encabe\u00e7ando isto. Sou administrador de sistemas e por isso gosto de conectar por ssh em meus servidores, em alguns momentos \u201cpuxar\u201d a console, seja ela virtualizada ou conteinerizada. N\u00e3o gosto de deixar algo que esta funcionando l\u00e1 no canto dele, sem poder ter intera\u00e7\u00e3o e n\u00e3o me sinto confort\u00e1vel se a intera\u00e7\u00e3o \u00e9 dificultada ou prejudicada.<\/p>\n\n\n\n<p>Por estas particular\u00edssimas raz\u00f5es, n\u00e3o me senti a vontade com o Docker e sua estrutura de camadas que lembram cebolas. N\u00e3o me entenda mal, o Docker \u00e9 muito interessante, mas parece que todas as suas vantagens, sua flexibilidade, sua capacidade de padroniza\u00e7\u00e3o de ambientes foram pensadas e projetadas para e por desenvolvedores. Por isso ainda prefiro utilizar solu\u00e7\u00f5es de cont\u00eainer \u201cde uma gera\u00e7\u00e3o anterior\u201d que me permitem conectar ao cliente de maneira mais \u00e1gil como o LXC e o OpenVz.<\/p>\n\n\n\n<p>Sem querer entrar nos meandres do incr\u00edvel mundo da virtualiza\u00e7\u00e3o, pretendo falar sobre o Openvz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Openvz<\/strong><\/h2>\n\n\n\n<p>Mas como \u00e9 e como funciona?<\/p>\n\n\n\n<p>O&nbsp;<a href=\"http:\/\/cursos.escolalinux.com.br\/curso\/proxmox-gerencia-de-maquinas-virtuais-16-horas\" target=\"_blank\" rel=\"noreferrer noopener\">Openvz<\/a>&nbsp;n\u00e3o \u00e9 um virtualizador mas sim uma conteineriza\u00e7\u00e3o parecida com o &#8216;FreeBSD Jails&#8217; . OpenVZ usa um \u00fanico kernel do Linux (com um patch) podendo executar somente clientes Linux. Todas as maquinas clientes funcionam sob a mesma vers\u00e3o de kernel que o host f\u00edsico. O OpenVZ usa um sistema de arquivos comum para que cada ambiente virtual, \u00e9 apenas um diret\u00f3rio de arquivos que \u00e9 isolado usando chroot. Uma m\u00e1quina virtual pode ser clonada apenas copiando os arquivos de um diret\u00f3rio para outro, criando um arquivo de configura\u00e7\u00e3o para a m\u00e1quina virtual e iniciando-a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Virtualiza\u00e7\u00e3o e Isolamento<\/strong><\/h3>\n\n\n\n<p>Cada cont\u00eainer \u00e9 uma entidade separada, e comporta-se em grande parte como um servidor f\u00edsico faria. Cada cont\u00eainer tem seus:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><em>Arquivos:<\/em>&nbsp;Bibliotecas de sistemas, aplica\u00e7\u00f5es, \/proc e \/sys virtualizados, locks virtualizados, etc.<\/li><li><em>Usu\u00e1rios e grupos:<\/em>&nbsp;Cada cont\u00eainer tem seu pr\u00f3prio usu\u00e1rio root, assim como outros usu\u00e1rios e grupos.<\/li><li><em>\u00c1rvores de processos:<\/em>&nbsp;Os cont\u00eaineres apenas visualizam seus pr\u00f3prios processos (iniciando por init). PIDs s\u00e3o virtualizados, de modo que o PID init \u00e9 1, como deve ser.<\/li><li><em>Rede:<\/em>&nbsp;Dispositivo de rede virtualizado, que permite que o cont\u00eainer tenha seus pr\u00f3prios endere\u00e7os de IP, bem como configura\u00e7\u00f5es de netfilter (iptables), e regras de roteamento.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Gerenciamento de Recursos<\/strong><\/h3>\n\n\n\n<p>Uma das vantagens de uso do OpenVz \u00e9 que mesmo ele sendo um simples gerenciador de cont\u00eainer, permite configura\u00e7\u00f5es bem otimizadas de divis\u00e3o de carga de processamento e I\/O entre os cont\u00eaineres. O gerenciamento de recursos OpenVZ consiste em tr\u00eas componentes: Quota de disco em dois n\u00edveis, Planejamento &#8220;equitativo&#8221; de CPU e &#8216;user beancounter&#8217;. Estes recursos podem ser ajustados com o cont\u00eainer em execu\u00e7\u00e3o sem a necessidade de reboot.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Checkpointing e Live Migration<\/strong><\/h3>\n\n\n\n<p>\u00c9 poss\u00edvel mover cont\u00eainer de um servidor f\u00edsico para outro sem parar o cont\u00eainer. O processo \u00e9 conhecido como checkpointing: o cont\u00eainer \u00e9 congelado e seu estado \u00e9 salvo em arquivos no disco. Este arquivo pode ser transferido para outras m\u00e1quinas e cont\u00eaineres e podem ser descongelados (restaurados) l\u00e1. O delay \u00e9 de alguns segundos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Fazendo Acontecer<\/strong><\/h3>\n\n\n\n<p>O OpenVz est\u00e1 integrado a uma distribui\u00e7\u00e3o paga chamada Virtuozzo com uma interface de gerenciamento gr\u00e1fica. Existem alguns pain\u00e9is Web que tamb\u00e9m permitem o uso gr\u00e1fico do OpenVz. A ferramenta padr\u00e3o de gerenciamento do OpenVz \u00e9 OpenSource e funciona por linha de comando, por\u00e9m aconselho seu uso atrav\u00e9s da ferramenta Proxmox que \u00e9 uma distribui\u00e7\u00e3o baseada no Debian com pacotes que proveem virtualiza\u00e7\u00e3o KVM e conteineriza\u00e7\u00e3o com OpenVz. O Proxmox conta com uma interface Web de gerenciamento que permite a manuten\u00e7\u00e3o e configura\u00e7\u00e3o dos cont\u00eaineres de maneira r\u00e1pida, simples e eficiente. Se voc\u00ea quer se aprofundar na ferramenta Proxmox, pode fazer um curso on-line na Escola Linux. Neste artigo pretendo demonstrar como instalar e configurar um cont\u00eainer utilizando OpenVz por Linha de comando. O processo de instala\u00e7\u00e3o do OpenVZ no Debian 7 consiste em:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Ajustar os reposit\u00f3rios para incluir pacotes OpenVZ<\/li><li>Instalar o Kernel OpenVZ<\/li><li>Instalar os aplicativos de gerenciamento dos cont\u00eaineres<\/li><li>Ajustar parametriza\u00e7\u00f5es de Kernel em sysctl<\/li><\/ul>\n\n\n\n<p>N\u00e3o vou me estender em um passo-a-passo da instala\u00e7\u00e3o j\u00e1 que pode ser obtido em detalhes no endere\u00e7o:&nbsp;<a href=\"https:\/\/openvz.org\/Installation_on_Debian\">https:\/\/openvz.org\/Installation_on_Debian<\/a>.<\/p>\n\n\n\n<p>O OpenVZ tem os arquivos de configura\u00e7\u00e3o de seu servi\u00e7o b\u00e1sico e tamb\u00e9m as configura\u00e7\u00f5es espec\u00edficas de cada cont\u00eainer.<\/p>\n\n\n\n<p><em>* Configura\u00e7\u00f5es gerais do OpenVZ: \/etc\/vz\/vz.conf<\/em><\/p>\n\n\n\n<p><em>* Diret\u00f3rio de configura\u00e7\u00f5es dos cont\u00eaineres: \/etc\/vz\/conf<\/em><\/p>\n\n\n\n<p>Ap\u00f3s instalado o OpenVZ, podemos criar os cont\u00eaineres e gerenci\u00e1-los.<\/p>\n\n\n\n<p>Para criar um cont\u00eainer:<\/p>\n\n\n\n<p><em># vzctl create CTID &#8211;ostemplate OSTEMP<\/em><\/p>\n\n\n\n<p>Onde: CTID &#8211; ID do cont\u00eainer, pode ser 100 por exemplo e&nbsp;OSTEMP &#8211; Nome do template, pode ser por exemplo: ubuntu-15.04-x86_64-minimal<\/p>\n\n\n\n<p>Os templates podem ser consultados e baixados diretamente para o diret\u00f3rio&nbsp;<em>\/var\/lib\/vz\/template\/cache\/<\/em>&nbsp;do host, a partir do site:&nbsp;<a href=\"http:\/\/openvz.org\/Download\/template\/precreated\">http:\/\/openvz.org\/Download\/template\/precreated<\/a>.<\/p>\n\n\n\n<p>Para ajustar IP e DNS do cont\u00eainer:<\/p>\n\n\n\n<p><em># vzctl set CTID &#8211;ipadd a.b.c.d &#8211;save<\/em><\/p>\n\n\n\n<p><em># vzctl set CTID &#8211;nameserver a.b.c.d &#8211;save<\/em><\/p>\n\n\n\n<p>Onde: a.b.c.d \u00e9 o IP do cont\u00eainer e do DNS server respectivamente.<\/p>\n\n\n\n<p>Uma vez feita a instala\u00e7\u00e3o e configura\u00e7\u00e3o b\u00e1sica, o Cont\u00eainer pode ser iniciado e utilizado.<\/p>\n\n\n\n<p>Alguns comandos importantes de administra\u00e7\u00e3o do OpenVZ:<\/p>\n\n\n\n<p><em>vzctl: Programa avan\u00e7ado, utilizado para gerenciar cont\u00eaineres.<\/em><\/p>\n\n\n\n<p>Programa do OpenVZ. Alguns exemplos:<\/p>\n\n\n\n<p><em># vzctl enter CTID: Usado para conectar na console do cont\u00eainer<\/em><\/p>\n\n\n\n<p><em># vzctl enter CTID &#8211;exec &#8220;apt-get install vim &amp;&amp; logout&#8221;: Instala o aplicativo no cont\u00eainer e sai.<\/em><\/p>\n\n\n\n<p><em># vzctl start CTID: Iniciar Cont\u00eainer<\/em><\/p>\n\n\n\n<p><em># vzctl stop CTID: Stop cont\u00eainer<\/em><\/p>\n\n\n\n<p><em># vzctl status CTID: Status cont\u00eainer<\/em><\/p>\n\n\n\n<p><em>Vzlist: Lista os cont\u00eaineres em execu\u00e7\u00e3o.<\/em><\/p>\n\n\n\n<p>Comandos espec\u00edficos de backup:<\/p>\n\n\n\n<p><em># vzdump: Utilit\u00e1rio de backup para maquina virtual.<\/em><\/p>\n\n\n\n<p><em># vzrestore: Utilit\u00e1rio de restaura\u00e7\u00e3o de backup OpenVz.<\/em><\/p>\n\n\n\n<p>Observa\u00e7\u00e3o sobre tipos de rede:<\/p>\n\n\n\n<p>O OpenVZ trabalha com basicamente dois tipos de configura\u00e7\u00e3o de rede: Venet e Veth<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Tipo Roteamento (<strong>Venet<\/strong>):Virtual Network. O pr\u00f3prio VZ gerencia. Tipo padr\u00e3o recomendado.<\/li><li>Tipo bridge (<strong>veth<\/strong>): Virtual Ethernet. Parecido com o funcionamento de rede de uma VM cl\u00e1ssica. Placa de rede independente. Precisa ser configurada no S.O. do cont\u00eainer.<\/li><\/ul>\n\n\n\n<p>Espero que com esta introdu\u00e7\u00e3o, voc\u00ea se anime a testar e utilizar o OpenVz principalmente quando n\u00e3o for necess\u00e1rio a utiliza\u00e7\u00e3o da virtualiza\u00e7\u00e3o cl\u00e1ssica, para ganhar principalmente com a otimiza\u00e7\u00e3o e recursos de hardware.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como assim cont\u00eainer para administradores de sistemas? Os outros cont\u00eaineres n\u00e3o s\u00e3o? Bem, a ferramenta de cont\u00eainer da moda \u00e9 o Docker, e agora tamb\u00e9m o Rocket j\u00e1 que a CoreOS esta&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1108,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,4],"tags":[],"class_list":["post-1107","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server-dedicado-vps","category-tutorial"],"_links":{"self":[{"href":"https:\/\/eurotigroup.com.br\/blog\/wp-json\/wp\/v2\/posts\/1107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eurotigroup.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eurotigroup.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eurotigroup.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eurotigroup.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1107"}],"version-history":[{"count":1,"href":"https:\/\/eurotigroup.com.br\/blog\/wp-json\/wp\/v2\/posts\/1107\/revisions"}],"predecessor-version":[{"id":1109,"href":"https:\/\/eurotigroup.com.br\/blog\/wp-json\/wp\/v2\/posts\/1107\/revisions\/1109"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/eurotigroup.com.br\/blog\/wp-json\/wp\/v2\/media\/1108"}],"wp:attachment":[{"href":"https:\/\/eurotigroup.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eurotigroup.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eurotigroup.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}