Ero sivun ”Debian homelab(opennebula, drbd, linstor ja ocfs2)” versioiden välillä
Siirry navigaatioon
Siirry hakuun
Debian homelab(opennebula, drbd, linstor ja ocfs2) (muokkaa)
Versio 28. huhtikuuta 2024 kello 02.10
, 28. huhtikuuta 2024→Asennetaan OpenNebula
(36 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
Rivi 13: | Rivi 13: | ||
== Ohjelmistovaatimukset == | == Ohjelmistovaatimukset == | ||
* 1 kpl Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita. | * 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita. | ||
* 2 kpl Debian 12 tuoreella minimaalisella asennuksella. | * 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. | ||
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska se onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti. | Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska se onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti. | ||
Rivi 43: | Rivi 43: | ||
Luodaan varanto tulosteesta saadusta disk-id:stä | Luodaan varanto tulosteesta saadusta disk-id:stä | ||
Debian 11: | |||
sudo zpool create | sudo zpool create controltank <disk-id> | ||
Debian 12 node-1 | |||
sudo zpool create nodetank1 <disk-id> | |||
Debian 12 node-2 | |||
sudo zpool create nodetank2 <disk-id> | |||
== Asennetaan [[DRBD]] ja [[Linstor]] == | == Asennetaan [[DRBD]] ja [[Linstor]] == | ||
Rivi 124: | Rivi 128: | ||
'''Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.''' | '''Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.''' | ||
Käynnistetään ja kytketään linstor- | Käynnistetään ja kytketään linstor-controller päälle: | ||
sudo systemctl enable --now linstor-controller | sudo systemctl enable --now linstor-controller | ||
Rivi 133: | Rivi 137: | ||
linstor node create node-1 192.168.1.201 | linstor node create node-1 192.168.1.201 | ||
linstor node create node-1 192.168.1.202 | linstor node create node-1 192.168.1.202 | ||
Komennolla: | |||
linstor node list | linstor node list | ||
Rivi 139: | Rivi 144: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Node !! NodeType !! Addresses !! State | ! Node !! NodeType !! Addresses !! State | ||
Rivi 150: | Rivi 154: | ||
|} | |} | ||
Luodaan tallennusvaranto: | |||
linstor storage-pool create zfs control homelabpool controltank | |||
linstor storage-pool create zfs node-1 homelabpool nodetank1 | |||
linstor storage-pool create zfs node-2 homelabpool nodetank2 | |||
Komennolla: | |||
linstor storage-pool list | |||
Tulostuu jotakuinkin seuraavaa: | |||
{| class="wikitable" | |||
|- | |||
! StoragePool !! Node !! Driver !! PoolName !! FreeCapacity !! TotalCapacity !! CanSnapshots !! State !! SharedName | |||
|- | |||
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool | |||
|- | |||
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool | |||
|- | |||
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool | |||
|- | |||
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool | |||
|- | |||
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool | |||
|- | |||
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool | |||
|- | |||
|} | |||
Luodaan resurssiryhmä ja määritellään tallennustila sille: | |||
linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3 | |||
Luodaan volume-ryhmä: | |||
linstor volume-group create homelabrg | |||
Luodaan looginen tallennustila: | |||
linstor resource-definition create homelabdisk0 | |||
linstor volume-definition create homelabdisk0 40G | |||
linstor resource create control homelabdisk0 --storage-pool homelabpool | |||
linstor resource create node-1 homelabdisk0 --storage-pool homelabpool | |||
linstor resource create node-1 homelabdisk0 --storage-pool homelabpool | |||
Tarkistuskomento: | |||
linstor resource-definition list | |||
Tulostaa jotakuinkin seuraavaa: | |||
{| class="wikitable" | |||
|- | |||
! ResourceName !! Port !! ResourceGroup !! State | |||
|- | |||
| homelabdisk0 || 7000 || DfltRscGrp || ok | |||
|- | |||
|} | |||
Ja jos kaikki meni oikein niin tarkastuskomento: | |||
linstor resource list | |||
Tulostaa jotakuinkin seuraavaa: | |||
{| class="wikitable" | |||
|- | |||
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON | |||
|- | |||
| homelabdisk0 || control || || Unused || Ok || UpToDate || 2024-04-26 17:55:13 | |||
|- | |||
| homelabdisk0 || node-1 || || Unused || Ok || UpToDate || 2024-04-26 17:58:13 | |||
|- | |||
| homelabdisk0 || node-2 || || Unused || Ok || UpToDate || 2024-04-26 17:59:13 | |||
|} | |||
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi: | |||
linstor controller drbd-options --allow-two-primaries yes | |||
'''<big>Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.</big>''' | |||
== OCFS2-tiedostojärjestelmän asennus ja käyttöönotto == | |||
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa. | |||
Asennetaan komennolla: | |||
sudo apt install ocfs2-tools | |||
Luodaan klusteri: | |||
sudo o2cb add-cluster homelabcluster | |||
Lisätään palvelimet klusteriin: | |||
sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0 | |||
sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1 | |||
sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2 | |||
Rekisteröidään klusteri: | |||
sudo o2cb register-cluster homelabcluster | |||
Tarkistetaan klusterin asetustiedosto: | |||
cat /etc/ocfs2/cluster.conf | |||
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste: | |||
cluster: | |||
name = homelabcluster | |||
heartbeat_mode = local | |||
node_count = 3 | |||
node: | |||
cluster = homelabcluster | |||
number = 0 | |||
ip_port = 7777 | |||
ip_address = 192.168.1.200 | |||
name = control | |||
node: | |||
cluster = homelabcluster | |||
number = 1 | |||
ip_port = 7777 | |||
ip_address = 192.168.1.201 | |||
name = node-1 | |||
node: | |||
cluster = homelabcluster | |||
number = 2 | |||
ip_port = 7777 | |||
ip_address = 192.168.1.202 | |||
name = node-2 | |||
'''HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:''' | |||
sudo mount -t ocfs2_dlmfs none /dlm && sudo sudo mount -t configfs none /config | |||
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla: | |||
sudo mkdir /dlm && sudo mkdir /config && sudo mount -t ocfs2_dlmfs none /dlm && sudo mount -t configfs none /config | |||
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta: | |||
sudo /etc/init.d/o2cb start && sudo /etc/init.d/o2cb status | |||
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen: | |||
o2cb.service - LSB: Load O2CB cluster services at system boot. | |||
Loaded: loaded (/etc/init.d/o2cb; generated) | |||
Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago | |||
Docs: man:systemd-sysv-generator(8) | |||
Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS) | |||
Tasks: 1 (limit: 9371) | |||
Memory: 236.0K | |||
CPU: 73ms | |||
CGroup: /system.slice/o2cb.service | |||
`-45942 o2hbmonitor | |||
Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot.... | |||
Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs... | |||
Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin "o2cb": OK | |||
Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem "ocfs2_dlmfs": OK | |||
Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK | |||
Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack "o2cb": OK | |||
Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster "homelabcluster": OK | |||
Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK | |||
Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting | |||
Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot.. | |||
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon. | |||
'''Seuraava komento annetaan ainoastaan Debian 11 control nodessa:''' | |||
sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000 | |||
Jossa -b block size, -C cluster size, -N node count, -L label | |||
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla: | |||
sudo mkdir /var/lib/one && sudo mount /dev/drbd1000 /var/lib/one | |||
Tarkistetaan lsblk -f komennolla: | |||
lsblk -f | |||
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi: | |||
zd0 drbd v09 | |||
└─drbd1000 | |||
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty: | |||
df -h | |||
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi: | |||
/dev/drbd1000 50G 0,1G 50G 1% /var/lib/one | |||
Ja jos kaikki meni oikein niin linstorin tarkastuskomento: | |||
linstor resource list | |||
Tulostaa nyt jotakuinkin seuraavaa: | |||
{| class="wikitable" | |||
|- | |||
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON | |||
|- | |||
| homelabdisk0 || control || || InUse || Ok || UpToDate || 2024-04-26 17:55:13 | |||
|- | |||
| homelabdisk0 || node-1 || || InUse || Ok || UpToDate || 2024-04-26 17:58:13 | |||
|- | |||
| homelabdisk0 || node-2 || || InUse || Ok || UpToDate || 2024-04-26 17:59:13 | |||
|} | |||
== Asennetaan KVM, Qemu, libvirt ja Docker == | |||
[[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla: | |||
sudo apt install qemu-system libvirt-daemon-system | |||
[[Docker]] asennetaan seuraavasti: | |||
sudo apt update | |||
sudo apt -y install ca-certificates curl | |||
sudo install -m 0755 -d /etc/apt/keyrings | |||
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc | |||
sudo chmod a+r /etc/apt/keyrings/docker.asc | |||
echo \ | |||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ | |||
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ | |||
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null | |||
sudo apt update && sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | |||
== Asennetaan [[OpenNebula]] == | |||
'''Nämä komennot vain Debian 11 control node.''' | |||
Lisätään pakettivaraston avain ja pakettivarasto: | |||
sudo -i | |||
wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg | |||
echo "deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula" > /etc/apt/sources.list.d/opennebula.list | |||
exit | |||
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö: | |||
sudo apt update && sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula | |||
Lisätään asennuksen luoma oneadmin käyttäjä docker-ryhmään | |||
sudo adduser oneadmin docker | |||
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana: | |||
sudo -u oneadmin /bin/sh | |||
echo 'oneadmin:vaihdaminut123' > /var/lib/one/.one/one_auth | |||
Kytketään ja käynnistetään OpenNebula: | |||
sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow | |||
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen http://<debian11_control_ip-osoite>:9869 | |||
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin. | |||
'''Nämä komennot vain Debian 12 koneissa.''' | |||
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti: | |||
mkdir opennebula && cd opennebula | |||
wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb | |||
wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb | |||
wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb | |||
sudo dpkg -i *.deb && sudo apt -f install | |||
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi. | |||
Ja oma henkilökohtainen pilvi on nyt lähes valmis. | |||
To be continued .... | To be continued .... | ||