LXD konteineri kasutamine operatsioonisüsteemiga Ubuntu v. 16.04

Allikas: Imre kasutab arvutit

Sissejuhatus

LXD https://linuxcontainers.org/lxd/ on Canonical Ltd https://www.canonical.com/ poolt väljatöötatud LXC tehnoloogia pealisehitus, mis võimaldab mugavalt kasutada nö tuuma-põhiseid virtuaalseid arvuteid. 2017 aasta alguses on LXD olemas pakendatud kujul Ubuntu v. 16.04 operatsioonisüsteemi jaoks.

Tööpõhimõte

LXD jaoks on olulised süsteemi komponendid

  • LXC toega tuum (kaasaegsetel tuumadel on see olemas)
  • storage - ZFS, LVM või Directory (st tavaline lokaalne failisüsteem)
  • bridge - nt tavaline linux brctl bridge

Virtuaalsete arvutite storage jaoks peaks olema kasutada eraldi plokkseade, nt /dev/sdb.

Tarkvara paigaldamine

Lähtepunktiks on arvutisse paigaldatud Ubuntu v. 16.04 operatsioonisüsteem, see sisaldab vaikimisi LXD tarkvara (pakett lxd), tuleb jälgida, et protsessid töötavad

# systemctl status lxcfs
# systemctl status lxd

Vajadusel öelda

# systemctl enable lxcfs
# systemctl enable lxd
# systemctl start lxcfs
# systemctl start lxd

Lisada grupp ja kasutaja lxc-s

# groupadd lxc-s
# useradd -g lxc-s -G lxd -m -d /opt/lxc-s -s /bin/bash lxc-s

kus

  • lxc-s - kasutajanimi, mille alt virtuaalsete arvutitega tegeledakse, nagu 'lxc service'
  • -g lxc-s - kasutaja primaarne grupp
  • -G lxd - kasutaja täiendav grupp

ZFS storage backend

Enne virtuaalsete arvutite moodustamist tuleb seadistada storage, kõige loomulikum on kasutada ZFS'i. ZFS toe lisamiseks Ubuntule sobib öelda

# apt-get install zfsutils-linux

ning LXD seadistuste muutmiseks

# lxd init
Name of the storage backend to use (dir or zfs) [default=zfs]: 
Create a new ZFS pool (yes/no) [default=yes]? 
Name of the new ZFS pool [default=lxd]: 
Would you like to use an existing block device (yes/no) [default=no]? yes
Path to the existing block device: /dev/sdb
Would you like LXD to be available over the network (yes/no) [default=no]? 
Do you want to configure the LXD bridge (yes/no) [default=yes]? no
LXD has been successfully configured.

Tulemusena

# zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
lxd   29.8G   288K  29.7G         -     0%     0%  1.00x  ONLINE  -

# zfs list
NAME   USED  AVAIL  REFER  MOUNTPOINT
lxd    244K  28.8G    19K  none
$ lxc config show
config:
  storage.zfs_pool_name: lxd

LVM storage backend

ZFS alternatiiviks on LVM backend, selleks tuleb öelda

# apt-get install thin-provisioning-tools

ning analoogilselt ZFS juhtumile öelda

# lxd init

Võrk

Kuna ei ole ambitsiooni LXD'd üle võrgu hallata ega võrgu mõttes keerulist kasutust korraldada, piisab nö tavalisest linux brctl bridge'st. dummy0 seadme tekitamiseks on vajalik lisada faili /etc/modules rida, tundub, et sedasi on loomulikum bridge tekitada

dummy

Linux bridge utiliitide paigaldamiseks sobib öelda

# apt-get install bridge-utils

Sellise seadistusfaili kasutamisel tekib kolm sobivat seadet

# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 10.0.13.64
  netmask 255.255.255.0
  gateway 10.0.13.1
  dns-nameservers 10.0.9.4 10.0.9.5

auto dummy0
iface dummy0 inet manual

auto br0
iface br0 inet static
  bridge_ports dummy0
  address 10.100.13.64
  netmask 255.255.255.0

LXD võrgu seaditamiseks sobib öelda

# dpkg-reconfigure -p medium lxd

kus

  • Would you like to setup a network bridge for LXD containers now? - No
  • Do you want to use an existing bridge? - Yes
  • Bridge interface name: br0

Tulemusena tehakse failis /etc/default/lxd-bridge sellised muudatused

# diff -r /var/tmp/etc/default/lxd-bridge /etc/default/lxd-bridge 
5c5
< USE_LXD_BRIDGE="true"
---
> USE_LXD_BRIDGE="false"
10c10
< LXD_BRIDGE="lxdbr0"
---
> LXD_BRIDGE="br0"

Seadistamine

Kui internet on kasutada üle http/https proxy, sobib öelda

$ lxc config set core.proxy_http http://10.0.9.39:3128/
$ lxc config set core.proxy_https http://10.0.9.39:3128/
$ lxc config show

Käivitamine

Kopeeritakse tõmmis internetist, tekitatakse konteiner 'kontnimi-1' ja käivitatakse

$ lxc launch ubuntu:16.04 kontnimi-1
Creating kontnimi-1
Starting kontnimi-1  

Shell pääsemine

$ lxc exec kontnimi-1 bash
root@kontnimi-1:~#

Olemasoleva konteineri stop ja start

$ lxc stop kontnimi-1
$ lxc start kontnimi-1

Kustutamine

$ lxc delete kontnimi-1

Ümbernimetamine, konteiner peab samal ajal seisma

$ lxc move vana-nimi uus-nimi

Konteinerite nimekirja esitamine

$ lxc list
+--------------+---------+------+------+------------+-----------+
| NAME         |  STATE  | IPV4 | IPV6 |    TYPE    | SNAPSHOTS |
+--------------+---------+------+------+------------+-----------+
| kontnimi-1   | RUNNING |      |      | PERSISTENT | 0         |
+--------------+---------+------+------+------------+-----------+

Tõmmiste nimekiri, lokaalne cache

$ lxc image list
+-------+--------------+--------+---------------------------------------------+--------+----------+-------------------------------+
| ALIAS | FINGERPRINT  | PUBLIC |                 DESCRIPTION                 |  ARCH  |   SIZE   |          UPLOAD DATE          |
+-------+--------------+--------+---------------------------------------------+--------+----------+-------------------------------+
|       | 683cdd393870 | no     | ubuntu 16.04 LTS amd64 (release) (20170113) | x86_64 | 145.57MB | Jan 22, 2017 at 11:53pm (UTC) |
+-------+--------------+--------+---------------------------------------------+--------+----------+-------------------------------+

Isandate nimekiri

$ lxc remote list
+-----------------+------------------------------------------+---------------+--------+--------+
|      NAME       |                   URL                    |   PROTOCOL    | PUBLIC | STATIC |
+-----------------+------------------------------------------+---------------+--------+--------+
| images          | https://images.linuxcontainers.org       | simplestreams | YES    | NO     |
+-----------------+------------------------------------------+---------------+--------+--------+
| local (default) | unix://                                  | lxd           | NO     | YES    |
+-----------------+------------------------------------------+---------------+--------+--------+
| ubuntu          | https://cloud-images.ubuntu.com/releases | simplestreams | YES    | YES    |
+-----------------+------------------------------------------+---------------+--------+--------+
| ubuntu-daily    | https://cloud-images.ubuntu.com/daily    | simplestreams | YES    | YES    |
+-----------------+------------------------------------------+---------------+--------+--------+

Misc

  • ZFS backed storage puhul paistavad virtuaalsete arvutite ressursid nii
# zfs list
NAME                                                                          USED  AVAIL  REFER  MOUNTPOINT
lxd                                                                           558M  28.3G    19K  none
lxd/containers                                                                206M  28.3G    19K  none
lxd/containers/ans2                                                          95.1M  28.3G   379M  /var/lib/lxd/containers/ans2.zfs
lxd/containers/cache                                                          104M  28.3G   388M  /var/lib/lxd/containers/cache.zfs
lxd/containers/ns                                                            6.44M  28.3G   351M  /var/lib/lxd/containers/ns.zfs
..
  • LVM backed storage puhul paistavad virtuaalsete arvutite ressursid nii
# df -h
Filesystem               Size  Used Avail Use% Mounted on
..
/dev/lxd/ans2            9.8G  728M  8.5G   8% /var/lib/lxd/containers/ans2
/dev/lxd/imretest1       9.8G  777M  8.5G   9% /var/lib/lxd/containers/imretest1
/dev/lxd/imretest2       9.8G  770M  8.5G   9% /var/lib/lxd/containers/imretest2
/dev/lxd/ns              9.8G  728M  8.5G   8% /var/lib/lxd/containers/ns
  • Debian v. 8 Jessie konteineri tekitamine
# lxc launch debian/jessie kont-deb-8

Tekkinud konteineri iseärususeks on, et seal on väga vähe tarkvara sees ning kulub nii 20 sekundit alates käivitamisest, et protsessid käivituksid (sh võrguseadistused kehtestuksid)

Klaster + LXD

Üks võimalik LXD kasutusala on koos Corosync ja Pacemaker klastrihalduse tarkvaraga. Olgu kolm host (füüsilist) arvutit

              internet

                ...
               ..... 
               
  ---|--------------------------------|------------------|-----
     |                                |                  |
   __|__  eth0 - 10.204.62.113      __|__  eth0 - 10.204.62.114       __|__  eth0 - 10.204.62.115
  |     |                          |     |                           |     |
  |     | dummy0                   |     | dummy0                    |     | dummy0
  |_____|                          |_____|                           |_____|
          br0 - 10.100.62.113              br0 - 10.100.62.114               br0 - 10.100.62.115


   pm-1                pm-2               pm-3

   pm-1-unbound        pm-2-unbound       pm-3-unbound
   pm-1-squid          pm-2-squid         pm-3-squid

kus

  • pm-N - füüsilised arvutid
  • pm-N arvutites töötavad virtuaalsed arvuti unbound ja squid, igas oma eksemplar
  • kõik virtuaalsed arvutid on võimalised pidevalt teenust pakkuma, iseasi, kas klastrihaldus kasutajad nende juurde parasjagu toob
  • virtuaalsete

Kasulikud lisamaterjalid