Nykyinen versio |
Oma tekstisi |
Rivi 16: |
Rivi 16: |
| * 2 kpl(node 1 ja 2) 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 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. |
|
| |
|
| Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa. | | Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa. |
Rivi 58: |
Rivi 58: |
| Asennetaan Debian SDK | | Asennetaan Debian SDK |
|
| |
|
| sudo apt -y install devscripts build-essential dkms | | sudo apt install devscripts build-essential dkms |
|
| |
|
| Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla. | | Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla. |
|
| |
|
| SDKMAN: | | SDKMAN: |
| sudo apt -y install curl zip && curl -s "https://get.sdkman.io" | bash | | curl -s "https://get.sdkman.io" | bash |
|
| |
|
| Ja sen jälkeen Gradle: | | Ja sen jälkeen Gradle: |
Rivi 189: |
Rivi 189: |
| linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3 | | linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3 |
|
| |
|
| | Luodaan volume-ryhmä: |
| | |
| | linstor volume-group create homelabrg |
|
| |
|
| Luodaan looginen tallennustila: | | Luodaan looginen tallennustila: |
Rivi 236: |
Rivi 239: |
| '''<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>''' | | '''<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 == | | == OCFS2-tiedostojärjestelmän asennus ja käyttöönotto == |
|
| |
|
| Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa. | | Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa. |
Rivi 287: |
Rivi 290: |
| name = node-2 | | name = node-2 |
|
| |
|
| '''HUOM! Debian 11 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:''' | | '''HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy 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 | | 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: | | Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne komennolla: |
|
| |
|
| sudo mkdir /dlm && sudo mkdir /config && sudo mount -t ocfs2_dlmfs none /dlm && sudo mount -t configfs none /config | | sudo mkdir /dlm && sudo mkdir /config |
|
| |
|
| Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta: | | Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta: |
|
| |
|
| sudo /etc/init.d/o2cb restart && sudo /etc/init.d/o2cb status | | 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: | | Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen: |
Rivi 330: |
Rivi 333: |
| Jossa -b block size, -C cluster size, -N node count, -L label | | 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/datastores- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla: | | Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla: |
|
| |
|
| sudo mkdir -p /var/lib/one/datastores && sudo mount /dev/drbd1000 /var/lib/one/datastores | | sudo mkdir /var/lib/one && sudo mount /dev/drbd1000 /var/lib/one |
|
| |
|
| Tarkistetaan lsblk -f komennolla: | | Tarkistetaan lsblk -f komennolla: |
Rivi 348: |
Rivi 351: |
| Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi: | | Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi: |
|
| |
|
| /dev/drbd1000 50G 0,1G 50G 1% /var/lib/one/datastores | | /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 [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==
| |
|
| |
|
| Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:
| |
|
| |
|
| sudo apt -y install bridge-utils qemu-system libvirt-daemon-system
| | To be continued .... |
|
| |
|
| [[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
| |
|
| |
| Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille
| |
|
| |
| sudo nano /etc/network/interfaces
| |
|
| |
| [[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:
| |
| # The loopback network interface
| |
| auto lo
| |
| iface lo inet loopback
| |
| # The primary network interface
| |
| allow-hotplug enp0s25
| |
| iface enp0s25 inet manual
| |
| #Bridge br1 network configurations
| |
| auto br1
| |
| iface br1 inet dhcp
| |
| bridge_ports enp0s25
| |
| bridge_stp off # disable Spanning Tree Protocol
| |
| bridge_waitport 0 # no delay before a ort becomes available
| |
| bridge_fd 0 # no forwarding delay
| |
|
| |
|
| |
| Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:
| |
|
| |
| # The loopback network interface
| |
| auto lo
| |
| iface lo inet loopback
| |
| # The primary network interface
| |
| allow-hotplug enp0s25
| |
| iface enp0s25 inet manual
| |
| #Bridge br1 network configurations
| |
| auto br1
| |
| iface br1 inet static
| |
| address 192.168.1.200
| |
| netmask 255.255.255.0
| |
| gateway 192.168.1.1
| |
| bridge_ports enp0s25
| |
| bridge_stp off # disable Spanning Tree Protocol
| |
| bridge_waitport 0 # no delay before a ort becomes available
| |
| bridge_fd 0 # no forwarding delay
| |
|
| |
| == 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ä libvirt ja docker-ryhmiin
| |
|
| |
| sudo adduser oneadmin docker && sudo adduser oneadmin libvirt
| |
| | | |
|
| |
| 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 https://<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:
| |
| sudo apt install augeas-tools libnbd-bin ruby-sqlite3 ipset rsync ruby jq vlan
| |
| 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.
| |
|
| |
| HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.
| |
|
| |
| OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.
| |
|
| |
| ==Huomiota==
| |
| * Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu.
| |
|
| |
| * Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.
| |
|
| |
| * Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa
| |
|
| |
| * Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.
| |
|
| |
| * Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]
| |
|
| |
| * Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.
| |
|
| |
| ==Erittäin tärkeää==
| |
|
| |
| * Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&sca_esv=ee520a4c543f855e&sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&ei=oAotZrQLpY3A8A_v4JCoDg&udm=&oq=split+brain+dr&gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].
| |
|
| |
| ==Viritysvinkkejä==
| |
|
| |
| *Useissa netistä löytyvissä ohjeissa suositellaan tai jopa käsketään konffata kahta verkkokorttia käyttäen. Siinä tietysti puolensa, koska helpompaa tehdä kahdella verkkoliitynnällä. Mutta vaikka asennetaan kaks verkkokorttia niin kannattaa bondata verkkoyhteydet ja [[vlan]]ia hyödyntäen niillä verkkoyhteydet koneille, niin on aina maksimit käytössä, eikä replikointi vie kaikkea kaistaa kotiverkossa olevilta muilta koneilta.
| |
| *Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.
| |
| *Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa
| |
| *Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri toimii ja DRBD-osioilta saa tiedot vaikka vain kaksi konetta olisi päällä niin kun menee tilttiin niin kaikki tieto on vaarassa hävitä.
| |
| *OpenNebula control ja Linstor controlleria voi ajaa vaikka pöytäkoneella Docker-konteissa ja WakeOnLan:illa käynnistää klusterin koneet vain silloin ja sitä mukaa kun niitä tarvii, niin se näkyy kyllä kodin sähkölaskussa. Etenkin jos klusterissa on vaikka 8 kpl servereitä, kuten tämän artikkelin alkuperäisellä kirjoittajalla on artikkelin kirjoittamisen aikaan.
| |
|
| |
| ==Aiheesta muualla==
| |
| *[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]
| |
| *[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]
| |
| *[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]
| |
| *[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]
| |
| *[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]
| |
| *[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]
| |
| *[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]
| |
| *[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]
| |
| *[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]
| |
| *[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]
| |
| *[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]
| |
| *[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]
| |
| *[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]
| |
| *[https://docs.opennebula.io/6.0/installation_and_configuration/containerized_deployment/architecture_deployment.html Frontend node Docker/Podman kontissa(englanniksi)]
| |
|
| |
| [[Luokka:Verkko]]
| |
| [[Luokka:Tiedostojärjestelmät]]
| |
| [[Luokka:Ohjeet]] | | [[Luokka:Ohjeet]] |
| [[Luokka:Debian GNU/Linux]] | | [[Luokka:Debian GNU/Linux]] |
| [[Luokka:Palvelimet]] | | [[Luokka:Palvelimet]] |
| [[Luokka:Emulaattorit ja virtuaalikoneet]] | | [[Luokka:Emulaattorit ja virtuaalikoneet]] |
| [[Luokka:Pilvipalvelut]]
| |