Administrant un servidor OpenVZ (III)

Hola a tots de nou. Avui continuarem amb aquesta sèrie articles sobre l'administració de OpenVZ. Al anterior post cobrim tot el referent a la instal · lació d'OpenVZ.

Per tant, si tot ha sortit bé, ja hauríem de tenir el nostre servidor OpenVZ instal·lat i llest per començar a treballar amb ell.

Avui parlarem de tot allò relacionat amb l'administració dels contenidors, Tant de la seva creació com de la seva configuració i maneig.

Creació dels contenidors

Els contenidors o EVs són lon entorns virtuals (màquines virtuals) que crearem i administrarem amb el nostre servidor OpenVZ. Per poder crear-los necessitem disposar d'un template.

Els plantilles són el model a partir de el qual es construirà el contenidor. Contenen els diferents paquets necessaris per al funcionament de sistema i algunes aplicacions bàsiques, així com totes les metadades (template cache) per construir i configurar la màquina.

Hi templates de diferents distribucions de Linux. Alguns d'ells són mantinguts oficialment i altres són aportacions de la comunitat.

La forma més simple d'obtenir-los és utilitzar un dels templates precreats. Aquests s'han obtingut creant un contenidor a partir d'un template i després empaquetant en un arxiu gzip.

Aquests arxius comprimits seran els que descarregarem i partir dels qual crearem els nostres propis contenidors. D'aquesta manera la creació dels contenidors és molt més ràpida i fàcil que antigament, quan la memòria cau havia de ser generada a mà. L'única cosa que cal fer avui en dia és descarregar l'arxiu de la distribució escollida des d'aquesta pàgina:

http://openvz.org/Download/template/precreated

Un cop descarregat, el guardem tal com està en aquest directori del nostre servidor:

/vz/template/cache

Ara ja podem crear els nostres contenidors a partir dels templates instal·lats. El primer que cal tenir en compte és que cada contenidor té associat un id numèric que serveix per identificar els VEs i que no pot repetir-se dins d'un mateix host físic.

A més, l'ID ha de ser major que 100, ja que els ID de 0 a el 100 són usats pel sistema.

Per administrar els contenidors, la comanda més important és vzctl. Per crear un nou contenidor s'usa la sintaxi següent:

#vzctl create --ostemplate template --config config_file

En ostemplate posem el nom de la template que hem descarregat abans. El paràmetre config és opcional. S'hi posa el nom d'un fitxer amb configuracions predefinides per als contenidors.

Si no ho especifiquem, haurem de posar-les a mà. Els arxius de configuració es troben a:

/etc/sysconfig/vz-scripts

Els noms dels arxius tenen aquesta estructura:

ve-nombre_config.conf-sample

El més comú és el basic (Veu-basic.conf-sample). Podem fer servir aquells que estan creats per defecte o fer els nostres propis. En qualsevol cas, tots els valors que s'especifiquen poden ser modificats posteriorment.

Per exemple, per crear un contenidor amb ID 101, a partir d'un template de debian que descarreguem abans i usant la configuració bàsica, executem:

#vzctl create 101 --ostemplate debian-6.0-x86 --config basic

Configuració dels contenidors

Ara que ja hem creat el nostre contenidor, podem passar a configurar-lo. Per a això fem servir la següent sintaxi:

#vzctl set --parametro valor --parámetro valor […]

Hi ha multitud de paràmetres que podem configurar. Per consultar-los, tots podem acudir a el manual d'vzctl (#man vzctl) Oa la wiki d'OpenVZ.

Perquè els canviem que fem es mantinguin després d'apagar el sistema hem d'afegir -save a la fi de la comanda. Si no, només durarà fins al pròxim apagat.

A continuació explicarem algunes de les ordres més bàsics:

Configura que el contenidor s'iniciï a l'arrencar l'equip o no.
onboot [yes/no]

Especifica el hostname de l'equip
hostname

Afegeix un direcció ip a l'equip. S'afegeixen de forma acumulativa.
ipadd

Si volem esborrar alguna de les configurades anteriorment hem d'usar:
ipdel dir_ip|all

Estableix la direcció dels servidors DNS. Es pot usar aquesta opció diverses vegades en un mateix ordre per configurar diversos servidors. A el fer-ho, es sobreescriuran tots els nameserver anteriorment configurats.
nameserver

Estableix la contrasenya per a un usuari de el sistema. Si no existeix, el crea. És recomanable no utilitzar aquest paràmetre al costat d'altres. No necessita que es faci servir save amb aquest paràmetre.

userpasswd user:password

Indica l'ordre en què s'iniciarà la màquina a l'arrencar. Com més gran sigui el nombre, major prioritat tindrà. Si no està configurat, es considera que té la menor prioritat i qualsevol altre contenidor que sí estigui configurat s'iniciarà abans.

bootorder

Finalment, us deixo com a exemple l'execució d'una configuració bàsica per al contenidor 101

#vzctl setembre 101 --onboot yes --hostname VirtualHost --ipadd 192.168.1.10 --nameserver 8.8.8.8 --nameserver 4.4.4.4 --save #vzctl setembre 101 --userpasswd root: 1234

Administració dels contenidors

Un cop tenim els nostres contenidors creats i configurats, podem administrar-los. Per a això, de nou farem ús de l'comandaments vzctl. A continuanción es llisten alguns dels ordres bàsiques per administrar els contenidors:

Inicia el contenidor
#vzctl start ID

Atura el contenidor
#vzctl stop ID

Atura el contenidor sense esperar que tots els seus processos s'aturin
#vzctl stop ID --fast

Ens diu l'estat de l'contenidor
#vzctl status ID

Destrueix el contenidor. Abans cal haver-lo detingut.
#vzctl destroy ID

S'entra a la màquina a través de la línia d'ordres com si haguéssim accedit per ssh.
#vzctl enter ID

Executa una ordre dins de l'contenidor.
#vzctl exec ID comando

Llista els contenidors que estan actius al servidor. Amb l'opció -a llista també els detinguts.
#vzlist

Això és tot per avui. Amb això donem per finalitzat la part més bàsica de l'administració de OpenVZ.

En els propers articles parlarem de procediments més avançats, com l'administració de recursos, la realització de Les còpies de seguretat o l'ús de Ploop.

Fins llavors, podeu anar provant tot el que hem explicat fins ara. Com sempre, deixeu qualsevol dubte que tingueu en els comentaris i ens veiem aviat. Llarga vida i prosperitat.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   ILAV va dir

    Excel·lent article !! 😉

    1.    Kamisama666 va dir

      Moltíssimes gràcies !. Estic molt content per haver pogut publicar aquests articles. Seguiré esforçant-me i col·laborant en el que pugui. Llarga vida i prosperitat.

  2.   OCZ va dir

    Interessantíssims articles sobre OpenVZ. A veure si m'animen a provar-ho, que fa temps li tinc posat l'ull a l'assumpte. Aquí deixo un parell de comentaris:

    Desconec per complet el funcionament de OpenVZ, i una de la grans dubtes que tinc és per què és necessari establir la configuració de xarxa a mà per a cada màquina. No pot deixar-se que l'obtinga d'un servidor DHCP? És a dir, se li pot atorgar una MAC + bridge i que després les màquines s'apanyen soles parell treure la configuració de xarxa? (Perquè en els articles sobre OpenVZ que he pogut llegir sempre es configura amb IPv4, però que passa amb IPv6?)

    És més, si hagués de establir estàticament la configuració de xarxa, que té de dolent fer-ho des de «dins» de la màquina? ¿I que és això d'assignar un hostname des del amfitrió? En definitiva, em sembla una mica redundant i supèrflua, i m'agradaria saber per què és necessari o recomanable.

    Per cert, no sé si tocarà el tema, però a mi m'interessaria un article sobre la seguretat i privacitat en l'ús de OpenVZ. En VirtualBox estic acostumat que no es «vegin» entre elles o amb l'amfitrió excepte si jo vull per xarxa o carpetes compartides. Em pregunto per exemple, que risc hi ha a muntar un honeypot amb OpenVZ. Ho comento com a idea per si es vol escriure sobre això.

    1.    Kamisama666 va dir

      M'alegro moltíssim que et estiguin agradant els post i t'animo a que provis OpenVZ. Veuràs que és increïblement fàcil d'administrar.

      Respecte als teus dubtes, la majoria tenen a veure amb coses que de les que no hem parlat encara. Però et faré una petita introducció per resoldre-les.

      El primer que has de saber és que en OpenVZ hi ha dos tipus de configuracions per a la xarxa. Es pot usar Venet o veth. La primera és similar a una xarxa privada, és a dir, només accessible des dels contenidors i el host físic. A ulls d'altres màquines de la xarxa és com si no existissin. D'altra banda, veth és una targeta de xarxa virtual que fa que el contenidor funcioni com un equip més de la xarxa i pugui ser accedit per altres màquines. A més permet opcions més avançades com l'ús de DHCP o la configuració de xarxa des de dins de l'contenidor.

      Respecte a IPv6, tots dos modes ho suporten. Pots utilitzar la comanda ipadd amb una adreça ipv6 sense problemes. Això sí, amb Venet no funcionen totes les característiques. Atès que la targeta Venet no té una MAC associada, coses com el neighbor discovery o el router advertisements no funcionen.

      Respecte al fet que hagis de configurar les característiques externament, en la meva opinió, és una forma de facilitar la feina dels administradors. Permet canviar les característiques fàcilment i podent automatitzar gairebé sense esforç. I, com esmento en l'article, pots crear el teu propi model de configuració a partir d'què crear les màquines llevant així de molts mals de cap.

      Finalment, pel que fa a la seguretat, utilitzar OpenVZ per a la creació d'honeypot és enormement recomanable. OpenVZ aïlla completament els contenidors de el sistema físic i sembla real a ulls de l'atacant. I tot això amb un consum de recursos baixíssims. I una gran opció per construir honeypots (encara que hi ha opcions més simples i enfocades específicament per a això).

      Espero haver resolt els teus dubtes. Si tens alguna altra o algun tema que t'agradaria que tractés, no dubtis a dir-ho. Ens veiem aviat. Llarga vida i prosperitat.

  3.   Gabriel va dir

    Hola, és molt bona aquesta sèrie de post, et volia consultar el següent: estic intentant restaurar uns backups d'uns contenidors de OpenVZ (uns arxius .tar) que es troben corrent en un host amb Ubuntu Server, els mateixos es realitzen amb el següent comanda:

    vzdump -suspend ID -mailto root -dumpdir / backups / arxiu

    Aquest host té la següent versió: vzctl versió 3.0.22
    Ara la idea seria poder restaurar aquests contenidors en un servidor CentOS 6. A l'crear noves VM no tinc problemes, però no trobo la manera de restaurar aquests backups (al CentOS tinc la següent versió: vzctl version 4.7.2)

    Ei llegit això:
    https://openvz.org/Quick_Installation_CentOS_6
    http://wiki.centos.org/HowTos/Virtualization/OpenVZ
    http://www.howtoforge.com/installing-and-using-openvz-on-centos-6.4-p2
    I per descomptat que aquesta seríe de post 😉 😀

    Pel que vaig veure la majoria parlen d'usar vzrestore, o vzdump -restore, però no aconsegueixo fer que funcioni la restauració. (En CentOS 6 no tinc vzrestore i en tampoc el flag -restore a vzdump) Segurament es em aquesta escapant alguna cosa per la falta d'experiència en el tema 😛

    Aquí vénen les preguntes:
    És possible fer el que desitjo? Algun impediment?
    ¿Quina seria la forma de fer-ho? He instal·lar vzrestore d'alguna manera?
    ¿Recomanació? ¿Lectura?

    Gràcies per les teves aportacions, salutacions

    1.    Kamisama666 va dir

      Hola, gràcies pel teu comentari.

      Respecte a les teves preguntes, en principi no hauria d'haver cap problema. De fet, recordo que amb això ja em vaig topar fa temps i ho vaig solucionar en el seu moment. Però ara mateix no tinc accés a la documentació que em vaig fer i, com fa algun temps que no el toco, no sóc capaç de recordar. Però no desesperis, que vaig a instal·lar-me en un moment una màquina amb OpenVZ i en una estona t'ho soluciono. I així de pas potser reprenc aquesta sèrie de posts, que la tinc una mica abandonada.

      Llarga vida i prosperitat.

      1.    Gabriel va dir

        Gràcies per la teva resposta, realment et agrairia molt si podis veure-ho.
        (A més que segur són de molta utilitat els nous post que poden sortir sobre el tema)

        Una de les coses que em crida l'atenció és que en el CentOS 6.5 que instal aquestes són les eines que em instal:
        vzcalc, vzcptcheck, vzctl, vzdqdump, vzeventd, vzifup-post, vzmemcheck, vznetaddbr, vzoversell, vzquota, vzstats, vzubc, vzcfgvalidate, vzcpucheck, vzdqcheck, vzdqload, vzfsync, vzlist, vzmigra,

        A l'seguir els passos de la documentació oficial: https://openvz.org/Quick_Installation_CentOS_6
        I en els flags que veig en el man de vzdqdump no tinc un flag -restore. També veig que en el man de vzctl tinc alguns flags -snapshot * però no sé si és el que busco o com usar-los exactement.

    2.    Kamisama666 va dir

      Bé, després de barallar-me amb OpenVZ i la insuportable lleugeresa de la seva documentació, crec que per fi ho he esbrinat. Evectivamente necessites fer servir vzrestore, que ve juntament amb vzdump. Però en CentOS no vénen instal·lats i cal fer-ho a mà. El procés és una mica enreversado (el just per donar-te d'cops de cap contra el teclat) així que he improvisat un article en un bloc meu que vaig obrir fa poc.

      la url és: https://kamisama666.github.io/2014/07/instalacion-vzdump-centos6/

      Espero haver-te estat d'ajuda, ja m'explicaràs que tal t'ha anat. Ah, i ja que ho preguntes, l'opció de «snapshot» només serveix per a contenidors de tipus Ploop, que és una forma d'Emmagatzematge diferent a l'habitual en OpenVZ. Més interessant és «suspend» i «restaurar», que són capaços de salvar l'estat d'un contenidor i restaurar-després (però no, no és compatible amb vzdump). En fi, a veure si reauno els posts i parlo d'aquestes coses.

      Llarga vida i prosperitat.

      1.    Gabriel va dir

        No tenes una idea del que et agraeixo aquest post. El Dilluns ho provo i et conte, espero amb moltes ànsies que reanudes una nova sèrie de post sobre el tema. I per descomptat que vaig a compartir la teva post que segur a algun més li resulta d'utilitat 😉 Et conte com em va anar de dilluns, salutacions.

    3.    Kamisama666 va dir

      Me aligro de que te haya servido de ayuda. De hecho, ya que tenía el post hecho, he aprovechado y lo he publicado también en desdelinux para que lo vea más gente. Lo puedes encontrar aquí:

      https://blog.desdelinux.net/vzdump-instalarlo-centos-6-5/

      Llarga vida i prosperitat

  4.   jcrisdre va dir

    Amic, tinc un inconvenient seguint els passos de la configuració, la qüestió és que des de la màquina on es configura és visible la meva nova VM, però des del segment de la xarxa no ho és, per exemple:

    Tinc un segment 1. *, el meu host A té la 1.50 i la nova VM B té la 1.201, des de la la màquina A puc veure la B, però no des d'un altre equip connectat a la mateixa xarxa,

    tu em podries il·lustrar en què estic fallant

  5.   dari va dir

    Excel·lent l'article i em va ajudar molt, ara una consulta, tinc un contenidor ja en producció amb una plantilla de debian-7 i vull actualitzar-lo a debian-8 el mateix contenidor com he de fer?

    1.    Kamisama666 va dir

      Hola, moltes gràcies. Porto un temps desconnectat de OpenVZ però intentaré ajudar-te en el que pugui.

      En primer lloc et diria que, si t'és possible, consideressis crear un nou contenidor que el template de Debian 8 i migrar a poc a poc les dades i la configuració de l'antic contenidor a el nou. Després no tens més que posar la IP de la màquina antiga a la nova i apanyat. És la manera més fàcil i senzilla que hi ha.

      D'altra banda, si això no t'és possible per la raó que sigui, en teoria és possible actualitzar la distro des de dins de l'propi contenidor com ho faries en qualsevol altra màquina amb Debian. Però he sentit de gent a la que això li ha donat problemes, així que abans de res prova-ho amb un altre contenidor qualsevol. I si et dóna problemes aquí hi ha un parell de llocs que parlen de com solucionar-los (en anglès):

      https://www.skelleton.net/2015/05/04/upgrading-debian-guests-on-proxmox-to-jessie/
      http://forum.openvz.org/index.php?t=msg&goto=51280&
      http://justinfranks.com/linux-administration/upgrade-openvz-vps-from-debian-7-wheezy-64-bit-to-debian-8-jessie-64-bit

      Especialment fes una ullada a el primer, que és el més recent i t'ho explica tot pas per pas.

      Això sí, abans de fer cap canvi en la teva contenidor en producció, no cal ni que et digui que facis una còpia de seguretat el contenidor, en fred o en calent segons et convingui, per si qualsevol cosa fos malament.

      Espero haver-te ajudat. Llarga vida i prosperitat.

    2.    Kamisama666 va dir

      Hola, moltes gràcies. Porto una mica de temps desconnectat de OpenVZ però espero poder ajudar-te.

      En primer lloc, si no hi ha res que t'ho impedeixi, et recomano que et creus un nou contenidor amb la template de Debian 8 i vagis migrant tots els configuracions, dades i programari allà. Un cop estigui tot funcionant només has de canviar la IP de l'contenidor antic i posar-la al nou. És la forma més senzilla i ràpida realment.

      Si per alguna raó no t'és possible fer això, en teoria és possible actualitzar sistema des de el propi contenidor. Només has de fer-ho com ho faries amb un màquina amb Debian normal. Però he sentit de gent a la qual li ha donat problemes, encara que no hauria de passar si mantens actualitzat el nucli de l'amfitrió. De tota manera el millor que pots fer és provar a actualitzar amb un altre contenidor amb debian 7 a assegurar-te que no dóna problemes. I si trobes algun, aquí hi ha algunes pàgines que parlen de com solucionar-(en anglès):

      https://www.skelleton.net/2015/05/04/upgrading-debian-guests-on-proxmox-to-jessie/
      http://justinfranks.com/linux-administration/upgrade-openvz-vps-from-debian-7-wheezy-64-bit-to-debian-8-jessie-64-bit
      http://forum.openvz.org/index.php?t=msg&goto=51280&

      Especialment interessant és el primer, que és el més recent i t'ho explica tot pas a pas.

      Així i tot no cal que et digui que, decideixis el que decideixis, no facis res amb el contenidor en producció sense abans haver fet un backup, ja sigui en fred o en calent, per si passés alguna cosa.

      Espero haver-te ajudeu. Llarga vida i prosperitat

      1.    dari va dir

        Gràcies per respondre, boníssima l'ajuda, vaig a llegir l'article i vaig fer un parell de proves i després els explico com va ser la millor, una salutació.

  6.   Ramoncin va dir

    Hola bona, m'ha sorgit un error amb els contenidors de OpenVZ i no aconsegueixo trobar ni lògica. A l'veure aquest bloc amb part de comentaris llanço la consulta aquí per si pogués algú ajudar-me.

    He instal·lat OpenVZ sense problema i creat contenidors sense problema, muntat un servei web simple en un d'ells i accedit.

    El cas és que a l'intentar realitzar un update, per exemple: »apt-get update» aquest m'indica que no té connexió amb les ips dels repositoris i no descarrega res, pel que no puc actualitzar, ni instal·lar nous paquets. Si realitza ping a aquestes ips hi ha alguna cosa que se m'escapi ??

    Gràcies per endavant

    1.    Ramoncin va dir

      Hola de nou.

      He trigat molt a contestar però la solució la vaig trobar fa ja molt i no volia deixar-la a l'aire.

      El problema era majorment en que no sóc molt llest, sol ser la font de la majoria dels meus problemes, tenia un nateo que redirigia tot el que arribava pel port 80 a l'reverse proxy, a l'fer l'apt-get update, el llançava però les respostes es redirigien a aquest equip, configurant bé les iptables se soluciona i tot va com la seda, com és lògic.

      Gràcies per l'aportació sobre OpenVZ, em va ajudar a configurar mitjanament bé

      PD: Vaig aprendre que els updates els fa pel port 80, vaig pensar que faria servir un aleatori a partir de el 1000 ...

      Una salutació.