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 11.24
, 28. huhtikuuta 2024ei muokkausyhteenvetoa
Ei muokkausyhteenvetoa |
|||
(18 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
Rivi 261: | Rivi 261: | ||
sudo o2cb register-cluster homelabcluster | 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. | |||
==Huomiota== | |||
*Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -ympäristö valmis, | |||
*Ajettaessa Linstoria 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. | |||