Proxmox VE 4.x

Allikas: Kuutõrvaja
Redaktsioon seisuga 11. oktoober 2016, kell 16:34 kasutajalt Jj (arutelu | kaastöö) (Proxmoxide vahelise clustri loomine)

Sissejuhatus

Proxmox on ideaalne vabavarale ehitatud serverite virtualiseerimistarkvara, millega on mugav luua virtualiseerimis clustreid ja mis sisaldab lihtsat aga võimekat haldusliidest. Hetkel on versioonis 4 võimalik kasutada KVM põhiseid virtuaalmasinaid ja LXC konteinereid.

Miinustena pole võimalik proxmoxis siduda omavahel mitut erinevast geograafilises lokatsioonis asuvad virtuaalmasinate clustrit ning ka võrkude haldus tuleb teha käsitsi mistõttu paljude vlanide ja eri võrkude puhul on see üsna tülikas. Ka puudub proxmoxis automaatne resursihaldus (ehk liiga suure ühe node koormuse korral ei mängita virtuaalmasinaid ümber). Sellegipoolest on tegemist hea alternatiiviga vmwarele väiksemasse ja keskmise suurusega asutusse. Mis puutub täpsematesse mahtudesse siis 15-20 masinaline cluster koos ligikaudu 200~ virtuaalmasinaga on täiesti tehtav. Suuremate andmekeskuste puhul on ilmselt mõtekas vaadata juba openstacki suunas.

Install

Kõige lihtsam tundub endiselt paigaldada puhas debian ja installida sinna peale vajalikud paketid. Nodede masspaigalduseks võib kasutada preseedi.

Veebiliides

Pöördudes https://192.168.0.10:8006 aadressile peaks avanema veebiaken kus saab virtuaalseid masinaid luua ja hallata. Veebiliidese administraatori kasutajaks on "root" ja parooliks sama mis süsteemsel root kasutajal.

Võrguseadistus

Proxmox kasutab virtuaalmasinate nii omavaheliseks võrku ühendamiseks, kui interneti lülitamiseks linux bridge või openvswitch lahendust. Linuxi bridge on seejuures küll primitiivse aga selle seadistus ja haldamine on lihtsam mistõttu tasuks eelistada väiksemates süsteemides just seda. Linuxi bridge kujutab enda omeluselt virtuaalset switchi kuhu on võimalik ühendada virtuaalservereid enda virtuaalsete liidestega või füüsilisi arvuti küljes olevad ethX porte.

Kõige tüüpilisem on olukord kus meil on serveril üks võrgukaart ning tahame omistada sellele avaliku IP aadressi (192.168.0.10), lisaks aga ka teha üle selle virtuaalsete serveriteni bridge (silla) millekaudu pääsevad võrku ka kõik serveris resideeruvad virtuaalmasinad.

Sellejaoks avame faili /etc/network/interfaces

auto vmbr0
iface vmbr0 inet static
        address  192.168.0.10
        netmask  255.255.255.0
        gateway  192.168.0.254
        bridge_ports eth0 
        bridge_stp off
        bridge_fd 0

Ja ongi valmis. Server on ligipääsetav ip aadressilt 192.168.0.1 ning edaspidi virtuaalmasinaid luues saame määrata neile võrguseadmeks vmbr0 seadme ja omistada masinatele 192.168.0.0/24 võrgus olevaid aadresse. Kui võrgus on olemas DHCP server saavad nad need juba automaatselt.

Juhul kui masinas on veel teinegi võrgukaart nimega eth1, mis asub eraldi switchi taga saame tekitada täiendava bridge ilma IP aadressita. Selleks lisame interfaces faili järgneva (kasutades võtit manual)

auto vmbr1
iface vmbr1 inet manual
        bridge_ports eth1
        bridge_stp off 
        bridge_fd 0

Peale võrguseadistuse muutmist tuleb teha kas restart või käivitada käsk:

# /etc/init.d/network restart

Bridgesid saab seejuures tekitada ka töötavas süsteemis nö lennult käsurea vahenditega. Näiteks tekiame uue bridge nimega vmbr300 ja lisame sinna eth2 seadme

# brctl addbr vmbr300
# brctl addif vmbr10 eth2

Bridgest võrguseadme eemaldamiseks

# brctl delif vmbr300 eth1

Vmbr seadme käsureal ümbernimetamine on samuti võimalik, selleks

# ip link set vmbr0 down; ip link set dev vmbr0 name vmbr10;  ip link set vmbr10 up

Proxmoxide vahelise clustri loomine

Proxmoxi täisvõimekus tuleb välja alles mitme masina koos kasutamisel. Proxmoxi cluster võimaldab virutaalmasinaid ilma katkestusteta mööda clustrit migreerida, suudab ühe node katkestuse korral masinad teisele nodele ümber kolida ja lisaks on proxmoxi clustri üheks suureks boonuseks keskse haldusliidese ehk nn "singel point of failure" puudumine.

Kõik proxmoxile virtuaalmasinatele olulised konfiguratsioonid on koondatud /etc/pve kausta mis on replikeeritud kõikidele clustri nodedele.

Jagatud storage

Clustri korral on vaja korraldada kõigile nodedele üheaegselt kättesaadev kettapind. Ilma selleta kaotab cluster suuresti enda mõtte (migreerimine pole võimalik)

Jagatud andmehoidla kasutamine kõigist masinatest on üldiselt kõige kergem ja jõudlusesõbralikum iSCSI/FC abil Näiteks teha nii, et FC/iSCSI storage on jagatud kõigile masinatele korraga. Nt on lõigatud storagest 20TB suurune tükk ja võetud külge kõigile kümnekonnale nodele. Sellele viilakale on tehtud omakorda LVM ja sellel LVMil on kokku nii umbes 200+ virtuaalmasinat.

Proxmox on ise üsna tark, et ta oskab lvmi viilaka kus virtuaalmasin on aktiveerida vaid õigel nodel kus masin parasjagu töötab ja kõigis teistes nodedes samal ajal deaktiveerida. Kui teed virtuaalmasinale migreerimise ühelt nodelt teisele siis peale mäluseisu kopeerimist teeb proxmox lvm viilakale kus masin asub antud nodes deativate ja uues nodes kuhu migreeritakse activate. Nii saavad kõik noded sõbralikult üht sama välja jagatud ketast jagada ja migreeruda mööda clustrit.

Clustri loomiseks võib sisestada suvalises nodes

# pvecm create minginimi

Ja ülejäänud noded saab lisada andes käsu pvecm add ja lisades parameetriks node nime kus sai käivitatud clustri loomise käsk või hiljem suvaline node, mis on juba clustrisse ühendatud.

# pvecm add node1
root@jagaja's password: 
copy corosync auth key
stopping pve-cluster service
backup old database
waiting for quorum...OK
generating node certificates
merge known_hosts file
restart services
successfully added node 'node2' to cluster.

Staatuse vaatamiseks

# pvecm nodes
Membership information
----------------------
    Nodeid      Votes Name
         5          1 node1
         1          1 node2 (local)
         6          1 node3

Täpsem info

# pvecm status
Quorum information
------------------
Date:             Tue Oct 11 16:32:36 2016
Quorum provider:  corosync_votequorum
Nodes:            3
Node ID:          0x00000001
Ring ID:          5/129076
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   3
Highest expected: 3
Total votes:      3
Quorum:           2  
Flags:            Quorate 

Membership information
----------------------
   Nodeid      Votes Name
0x00000005          1 192.168.1.15
0x00000001          1 192.168.1.16 (local)
0x00000006          1 192.168.1.17

iSCSI kasutamine

iSCSI kasutamiseks tuleb installida pakett open-iscsi

# apt-get install open-iscsi

Ja seejärel tuleb mõned teenused käivitada-taaskäivitada

# /etc/init.d/open-iscsi start
# /etc/init.d/pvedaemon restart

Iscsi targeteid saab edaspidi külge haakida juba otse veebiliidesest.

Kui iSCSI server mingil põhjusel enam ei suhtle siis veebiliidese kaudu iscsi kettaid lahti haakida pole võimalik. Sellisel juhul tuleb logida käsureale ja kustutada need manuaalselt failist /etc/pve/storage.cfg

Masina initatori nime näeb failist /etc/iscsi/initiatorname.iscsi

NB! LVMi ja iSCSi puhul ei tööta PVE linked clone funktsionaalsus!

Virtuaalmasinate tekitamine

Virtuaalmasina loomisel tasub tähele panna järgnevat:

  • VM ID tuleb automaatselt
  • Nimi pane arusaadav ja eristatav."
  • CPU type jäta kindlasti kvm64 (default) muidu erinevate protsessoridega nodede puhul kaob ära migreerimise võimekus.
  • Mälu kasuta ka fikseeritud suuruses
  • Kui virtuaalmasinas (KVM) kasutatav operatsioonisüsteem seda toetab siis tasub kasutada võimalikult palju virtio seamdmeid (võrk, ketas), nendepoolt tekitatud väiksema overheadi tõttu sest siis pole vaja virtuaalserveril emuleerida mingit konkreetset rauda.

Virtuaalmasinate seadistusfailid asuvad kaustas

Seadistusfailid asuvad kaustas /etc/pve/qemu-server/

Näiteks virtuaalmasina 101 konf asub failis /etc/pve/qemu-server/101.conf ja näeb välja järgnev:

name: testikas
bootdisk: ide0
vlan1: rtl8139=42:D5:BD:2C:EC:79
ostype: other
memory: 2024
sockets: 1
ide0: disk1:0.0.0.scsi-14945540000000000ebaf87d4e8aadc8f7c7cbd9b9b75a514

Ketta lisamisel on võimalik lülitada sisse io threads? milleks see on hea? netist sai leidud näide

io=native (vaikimisi) on sobilik blokkseadmetel asetsevatele VMidele, näiteks LVMil asuvatele.
io=threads tasub sisse lülitada failisüsteemis asuvatel suurel failidel asuvatel VMidel

Upgrade 3.x versioonilt 4-le

# Upgrade to latest clean PVE version
apt-get update && apt-get dist-upgrade

# Remove node from cluster
pvecem delnode NODE_NAME

# Remove PVE
apt-get remove proxmox-ve-2.6.32 pve-manager corosync-pve openais-pve redhat-cluster-pve pve-cluster pve-firmware

# Remove backports
sed -i '/backports/d' /etc/apt/sources.list

# Add pve no-sub repo
echo "deb http://download.proxmox.com/debian jessie pve-no-subscription" >> /etc/apt/sources.list 

# Update distribution in sources and update
sed -i 's/wheezy/jessie/g' /etc/apt/sources.list
sed -i 's/wheezy/jessie/g' /etc/apt/sources.list.d/pve-enterprise.list
apt-get update

# Find and install latest kernel version and firmware package
apt-cache search pve-kernel | sort
apt-get install pve-kernel-4.4.18-1-pve pve-firmware 
 
# Find and install latest kernel headers, matching to the installed pve-kernel
apt-cache search pve-headers | sort
apt-get install pve-headers-4.4.18-1-pve

# Upgrade base system and reboot
apt-get upgrade
apt-get dist-upgrade
shutdown -r now

# Install PVE
apt-get install proxmox-ve

Ceph

Esiteks tuleb tunnistada, et hetkeseisuga on proxmoxil pakutav vaikeceph väga vana, ehk versioon 0.80 kui olemas juba 10.2.2 seega on mõistlik panna uuem ja rohkemate võimaluste-parandustega.

echo deb https://download.ceph.com/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
apt-get update
apt-get install -y ceph 
ceph -v
ceph version 10.2.3 (ecc23778eb545d8dd55e2e4735b53cc93f92e65b)

Probleemid

Virtuaalmasinate taastamine ilma HA olemasoluta

Kui clustris pole HA seadistatud ja üks clustri õlgadest peaks riknema siis kuidas startida töötavas masinas üles virtuaalmasinad, mis asusid katki läinud serveril?

/etc/pve/nodes kaust on sünkroniseeritud pmxcfs abil ning sisaldab igas clustri masinas kõigi nodede virtuaalide konfiguratsioone. Näiteks clustris, kus on kolm node ja kolm virtuaalserverid näeb selle kausta struktuur välja selline

/etc/pve/nodes/node1/qemu-server
100.conf
/etc/pve/nodes/node2/qemu-server
101.conf
/etc/pve/nodes/node3/qemu-server
102.conf

Kui node1 on seiskunud saab startida vm-100 virtuaalmasina suvalisel teisel srveri logides ühte allesjäänud õlga ja liigutades konfiguratsiooni töötava serveri kausta. Näiteks node2 peale

# mv /etc/pve/nodes/node1/qemu-server/100.conf /etc/pve/nodes/node2/qemu-server/100.conf. 

Peale seda on võimalik startida vm-100 juba läbi veebiliidese. Või siis käsurealt

# qm start 100

Clustri parandus

Kui clustrisse on jäänud liiga vähe nodesid alles siis võib pve kaust minna read-only, selle vastu saab öelda mis on minimaalne töötava clustri nodede arv

pvecm expected 2