Ero sivun ”Debian homelab(opennebula, drbd, linstor ja ocfs2)” versioiden välillä

Siirry navigaatioon Siirry hakuun
Ei muokkausyhteenvetoa
(42 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 homelabpool <disk-id>
  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 64: Rivi 68:
  sdk install gradle 8.7
  sdk install gradle 8.7


Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot  
'''HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] '''
 
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:


  cd ~ && mkdir drbd && mkdir drbd-utils && mkdir -p linstor/server && mkdir -p linstor/client && mkdir -p linstor/python && mkdir drbd-linstor-debs
  cd ~ && mkdir drbd && mkdir drbd-utils && mkdir -p linstor/server && mkdir -p linstor/client && mkdir -p linstor/python && mkdir drbd-linstor-debs
Rivi 103: Rivi 109:


  sudo apt install python3-natsort && sudo dpkg -i *.deb
  sudo apt install python3-natsort && sudo dpkg -i *.deb
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:
sudo reboot
Ja pakettien uudelleenasennus:
cd ~/drbd-linstor-debs/ && sudo dpkg -i *.deb
Jos vieläkään ei asennu niin komento:
sudo dmesg
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus "puhtaaseen tauluun".


== Luodaan DRBD/Linstor klusteri ==
== Luodaan DRBD/Linstor klusteri ==
'''Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.'''
Käynnistetään ja kytketään linstor-controller päälle:
sudo systemctl enable --now linstor-controller
Lisätään palvelimet klusteriin:
linstor node create control 192.168.1.200 --node-type combined
linstor node create node-1 192.168.1.201
linstor node create node-1 192.168.1.202
Komennolla:
linstor node list
Tulostuu seuraavaa:
{| class="wikitable"
|-
! Node !! NodeType !! Addresses !! State
|-
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online
|-
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online
|-
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online
|}
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 ....


334

muokkausta

Navigointivalikko