per la mia situazione di ufficio:
-modificare repo
-modificare hosts
-modificare interfaces
poi
apt-get upgrade apt-get dist-upgrade apt-get install slim xfce4 apt-get install xfce4-terminal apt-get install iceweasel apt-get install drbd8-utils apt-get install ethtool
ethtool server per attivare poi il wol
per un editor leggero usare geany
apt-get install geany
oppure il default text editor per xfce4 è mousepad:
apt-get install mousepad
aggiungere i dischi in modo coerente per dimensione e seguito device
inizializzare il cluster dal primo nodo
pvecm create pvequre
aggiungere il secondo nodo eseguendo dal secondo nodo:
pvecm add ip.primo.nodo.xx
per poter sfogliare la rete bisogna installare il seguente pacchetto:
apt-get install gvfs-backends
Macchine a disposizione:
Server1:
Dell PowerEdge R360
40 x Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.4Ghz (2 Sockets)
5 x 300 GB Disk + 3 x 900 GB Disk
Realizzati 2 VD in raid-5:
prima unità (/dev/sda), 5×300 in raid-5 - 1.1 TB
seconda unità (/dev/sdb) 3×900 in raid-5 - 1.8 TB
Server2:
16 x Intel(R) Xeon(R) CPU E7330 @ 2.4Ghz (4 Sockets)
4 x 146 GB Disk + 4 x 1 TB Disk
Realizzati 2 VD in raid-5:
prima unità (/dev/cciss/c0d0), 4×146 in raid-5 - 410.1 GB
seconda unità (/dev/cciss/c0d1) 4×1 in raid-5 - 2.5 TB
L'installazione viene effettuata specificando per ciascun server 200 GB come spazio di installazione di Proxmox
Di seguito la mappatura iniziale dei dischi per ciascun server:
Disk /dev/sda: 1.1 TiB, 1197759004672 bytes, 2339373056 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 19647CB6-EC57-4DCC-A21E-69096E97B588 Device Start End Sectors Size Type /dev/sda1 2048 4095 2048 1M BIOS boot /dev/sda2 4096 528383 524288 256M EFI System /dev/sda3 528384 419430400 418902017 199.8G Linux LVM Disk /dev/sdb: 1.8 TiB, 1999307276288 bytes, 3904897024 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: DCCDBA40-303A-482D-B8FF-F8E8D18966AA Disk /dev/mapper/pve-root: 49.8 GiB, 53418655744 bytes, 104333312 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/pve-swap: 8 GiB, 8589934592 bytes, 16777216 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/cciss/c0d0: 410.1 GiB, 440345714688 bytes, 860050224 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 9AD3DEF8-C4D5-4598-83FA-9E80C58406A9 Device Start End Sectors Size Type /dev/cciss/c0d0p1 2048 4095 2048 1M BIOS boot /dev/cciss/c0d0p2 4096 528383 524288 256M EFI System /dev/cciss/c0d0p3 528384 419430400 418902017 199.8G Linux LVM Disk /dev/cciss/c0d1: 2.5 TiB, 2700455206912 bytes, 5274326576 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 95B61035-78CA-4ECD-B32F-85BEA368A53D Disk /dev/mapper/pve-root: 49.8 GiB, 53418655744 bytes, 104333312 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/pve-swap: 8 GiB, 8589934592 bytes, 16777216 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
Procediamo quindi alla configurazione delle schede di rete
Ciascun server ha 4 nic di seguito i file /etc/network/interface per ciascun nodo
auto lo
iface lo inet loopback
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.1.117
netmask 255.255.255.0
gateway 192.168.1.254
bridge_ports eno1
bridge_stp off
bridge_fd 0
auto eno2
iface eno2 inet static
address 192.168.2.1
netmask 255.255.255.248
auto eno3
iface eno3 inet manual
iface eno3.1 inet manual
vlan_raw_device eno3
auto vmbr11
iface vmbr11 inet manual
bridge_ports eno3.1
bridge_stp on
bridge_fd 0.0
pre-up ifup eno3.1
post-down ifdown eno3.1
iface eno3.3 inet manual
vlan_raw_device eno3
auto vmbr13
iface vmbr13 inet manual
bridge_ports eno3.3
bridge_stp on
bridge_fd 0.0
pre-up ifup eno3.3
post-down ifdown eno3.3
iface eno3.7 inet manual
vlan_raw_device eno3
auto vmbr17
iface vmbr17 inet manual
bridge_ports eno3.7
bridge_stp on
bridge_fd 0.0
pre-up ifup eno3.7
post-down ifdown eno3.7
iface eno4 inet manual
auto lo
iface lo inet loopback
iface enp6s0 inet manual
auto enp8s0
iface enp8s0 inet static
address 192.168.2.2
netmask 255.255.255.248
auto ens2
iface ens2 inet manual
iface ens1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.1.118
netmask 255.255.255.0
gateway 192.168.1.254
bridge_ports ens1
bridge_stp off
bridge_fd 0
auto ens2
iface ens2 inet manual
iface ens2.1 inet manual
vlan_raw_device ens2
auto vmbr11
iface vmbr11 inet manual
bridge_ports ens2.1
bridge_stp on
bridge_fd 0.0
pre-up ifup ens2.1
post-down ifdown ens2.1
iface ens2.3 inet manual
vlan_raw_device ens2
auto vmbr13
iface vmbr13 inet manual
bridge_ports ens2.3
bridge_stp on
bridge_fd 0.0
pre-up ifup ens2.3
post-down ifdown ens2.3
iface ens2.7 inet manual
vlan_raw_device ens2
auto vmbr17
iface vmbr17 inet manual
bridge_ports ens2.7
bridge_stp on
bridge_fd 0.0
pre-up ifup ens2.7
post-down ifdown ens2.7
inseriamo anche la configurazione del file /etc/hosts
127.0.0.1 localhost.localdomain localhost 192.168.1.117 pvequ1.miodominio.local pvequ1 pvelocalhost 192.168.1.118 pvequ2.miodominio.local pvequ2 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
127.0.0.1 localhost.localdomain localhost 192.168.1.118 pvequ2.miodominio.local pvequ2 pvelocalhost 192.168.1.117 pvequ1.miodominio.local pvequ1 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
A questo punto siamo pronti per creare il cluster
inizializzare il cluster dal primo nodo
pvecm create pvequre
aggiungere il secondo nodo eseguendo dal secondo nodo:
pvecm add ip.primo.nodo.xx
Nel caso di un cluster a due nodi come questo è necessario modificare a manina il seguente file:
modificare il file /etc/pve/corosync.conf nel nodo principale aggiungendo la riga indicata nell'apposita sezione
quorum {
provider: corosync_votequorum
--> two_node: 1
}
Ora accedento tramite interfaccia web ad entrambi i nodi vedremo la consolle di gestione centralizzata dei due nodi.
A questo punto viene aggiunto pacemaker e pcs che serviranno per gestire l'esportazione dello storage drbd in modo tale che venga utilizzato direttamente dalle macchine virtuali windows
apt-get install pacemaker pcs
sarà necessario installare anche il software che gestisce l'implementazione ISCSI-3
apt-get install targetcli-fb
ora è possibile accedere all'interfaccia web per la gestione del cluster con pcs:
http://ipnodocluster:2224
l'utente per accedere è hacluster ma è necessario reimpostare la password su entrambi i nodi per poter accedere:
passwd hacluster
e scegliere la nuova password per l'utente hacluster.
Prima di installare il tool per la gestione dello storage ridondante dobbiamo intervenire sui file dei repositori in quanto noi utilizziamo la versione di proxmox completamente libera e non la parte comprensiva di sottoscrizione a pagamento.
rinominare
mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.disabled
aggiungere ad /etc/apt/sources.list
deb http://download.proxmox.com/debian stretch pve-no-subscription
Poi:
apt-get update
infine:
apt-get install drbd8-tools
ora dobbiamo risistemare i dischi di entrambi i nodi aggiungendo le opportune partizioni secondo lo schema seguente
Server1
Disk /dev/sda: 1.1 TiB, 1197759004672 bytes, 2339373056 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 19647CB6-EC57-4DCC-A21E-69096E97B588 Device Start End Sectors Size Type /dev/sda1 2048 4095 2048 1M BIOS boot /dev/sda2 4096 528383 524288 256M EFI System /dev/sda3 528384 419430400 418902017 199.8G Linux LVM /dev/sda4 419432448 1788861966 1369429519 653G Linux LVM /dev/sda5 1788862464 2339373022 550510559 262.5G Linux filesystem Disk /dev/sdb: 1.8 TiB, 1999307276288 bytes, 3904897024 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: DCCDBA40-303A-482D-B8FF-F8E8D18966AA Device Start End Sectors Size Type /dev/sdb1 2048 3904896990 3904894943 1.8T Linux LVM
server2
Disk /dev/cciss/c0d0: 410.1 GiB, 440345714688 bytes, 860050224 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 9AD3DEF8-C4D5-4598-83FA-9E80C58406A90 Device Start End Sectors Size Type /dev/cciss/c0d0p1 2048 4095 2048 1M BIOS boot /dev/cciss/c0d0p2 4096 528383 524288 256M EFI System /dev/cciss/c0d0p3 528384 419430400 418902017 199.8G Linux LVM /dev/cciss/c0d0p4 419432448 860050190 440617743 210.1G Linux filesystem Disk /dev/cciss/c0d1: 2.5 TiB, 2700455206912 bytes, 5274326576 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 95B61035-78CA-4ECD-B32F-85BEA368A53D Device Start End Sectors Size Type /dev/cciss/c0d1p1 2048 3904896990 3904894943 1.8T Linux LVM /dev/cciss/c0d1p2 3904897024 5274326542 1369429519 653G Linux LVM
modificare il file /etc/lvm/lvm.conf aggiungendo la seguente riga modificata nel modo giusto
nodo1
filter = [ "r|/dev/sdb1|", "r|/dev/sda4|", "r|/dev/disk/|", "r|/dev/block/|", "a|.*/|" ]
nodo2
filter = [ "r|/dev/cciss/c0d1p1|", "r|/dev/cciss/c0d1p2|", "r|/dev/disk/|", "r|/dev/block/|", "a|.*/|" ]
aggiornare i repository
apt-get update
installare drbd
apt-get install drbd8-utils
Di seguito i file fondamentali per drbd ossia il file /etc/drbd.d/global_common.comf che deve essere uguale su entrambi i nodi così come i file risorsa che per la situazione è stato scelto di crearne 2. Quindi due dispositivi DRBD.
# DRBD is the result of over a decade of development by LINBIT.
# In case you need professional services for DRBD or have
# feature requests visit http://www.linbit.com
global {
usage-count yes;
# minor-count dialog-refresh disable-ip-verification
# cmd-timeout-short 5; cmd-timeout-medium 121; cmd-timeout-long 600;
}
common {
handlers {
# These are EXAMPLE handlers only.
# They may have severe implications,
# like hard resetting the node under certain circumstances.
# Be careful when chosing your poison.
# pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
# pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
# local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
# fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
# split-brain "/usr/lib/drbd/notify-split-brain.sh root";
# out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
# before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
# after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
}
startup {
wfc-timeout 60;
degr-wfc-timeout 50;
outdated-wfc-timeout 50;
#wait-after-sb
}
options {
# cpu-mask on-no-data-accessible
}
disk {
# size on-io-error fencing disk-barrier disk-flushes
# disk-drain md-flushes
resync-rate 50M;
#resync-after al-extents
# c-plan-ahead c-delay-target c-fill-target c-max-rate
# c-min-rate disk-timeout
on-io-error detach;
disk-barrier no;
disk-flushes no;
}
net {
protocol C;
#timeout max-epoch-size max-buffers
# connect-int ping-int sndbuf-size rcvbuf-size ko-count
allow-two-primaries;
#cram-hmac-alg shared-secret
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
#always-asbp rr-conflict
# ping-timeout data-integrity-alg tcp-cork on-congestion
# congestion-fill congestion-extents csums-alg verify-alg
# use-rle
}
}
file risorsa:
resource r0 {
#startup {
# become-primary-on both;
#}
on pvequ1 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.2.1:7788;
meta-disk internal;
}
on pvequ2 {
device /dev/drbd0;
disk /dev/cciss/c0d1p1;
address 192.168.2.2:7788;
meta-disk internal;
}
}
resource r1 {
#startup {
# become-primary-on both;
#}
on pvequ1 {
device /dev/drbd1;
disk /dev/sda4;
address 192.168.2.1:7789;
meta-disk internal;
}
on pvequ2 {
device /dev/drbd1;
disk /dev/cciss/c0d1p2;
address 192.168.2.2:7789;
meta-disk internal;
}
}
al momento della creazione dei metadati, al primo avvio del servizio e alla prima sincronizzazione è bene commentare la voce ne file .res in cui dispone l'avvio come primaria della risorsa ( su entrambi i nodi e le risorse).
ora che abbiamo predisposto le risorse creiamo il file dei metadati per ciascun dispositivo:
drbdadm create-md r0
drbdadm create-md r1
rispondiamo yes e confermiamo nel caso venga proposto o controlliamo i dati nel caso venga resitutito un errore.
avviamo il servizio su entrambi i nodi:
systemctl start drbd.service
per controllare la situazione usiamo:
cat /proc/drbd
per effettuare la prima sincronizzazione:
drbdadm -- --overwrite-data-of-peer primary r0
drbdadm -- --overwrite-data-of-peer primary r1
al termine avremo una situazione tipo la seguente:
version: 8.4.7 (api:1/proto:86-101)
srcversion: 4702B0F5608C26F576DF75A
0: cs:SyncTarget ro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
ns:0 nr:1898108168 dw:1897990952 dr:819848 al:8 bm:0 lo:0 pe:7 ua:0 ap:0 ep:1 wo:d oos:0
1: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
ns:0 nr:684756816 dw:684693872 dr:817472 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:d oos:0
ora possiamo abilitare all'avvio il servizio:
systemctl enable drbd.service
e togliere il commento alla sezione dei file .res nella quale si abilita la condizione di primary all'avvio.
Al termine della sincronizzazione possiamo aggiungere i dispositivi drbd come PV (individuare quello giusto)
pvcreate /dev/drbd2
e come VG:
vgcreate nomevg /dev/drbd2
ora dobbiamo esportare attraverso iscsi i device a blocchi (dischi) che saranno utilizzati da windows per esportare i dati e fare il cluster winzoz
pcs resource create r_tgt0 iSCSITarget iqn=iqn.2017-11.lnqu.proto.target0 tid=1 implementation=lio-t pcs resource create r_lun0 iSCSILogicalUnit target_iqn=iqn.2017-11.lnqu.proto.target0 lun=1 path=/dev/drbd0 implementation=lio-t
per attivare un disco CCISS smart array come OSD bisogna modificare il file /usr/share/perl5/PVE/API2/Ceph.pm
e aggiungere alla riga 273 dopo $devname =~ s|/dev/||;
$devname =~ s|cciss/|cciss!|;
Se ci fosse da rifare il cluster seguire le seguenti istruzioni:
#/bin/sh
fermare i vari servizi
systemctl stop pvestatd.service systemctl stop pvedaemon.service systemctl stop pve-cluster.service systemctl stop corosync systemctl stop pve-cluster
Rimuovere dal database del cluster le impostazioni manualmente
$ sqlite3 /var/lib/pve-cluster/config.db
sqlite> select * from tree where name = 'corosync.conf';
254327|0|254329|0|1480944811|8|corosync.conf|totem {
version: 2
[...]
sqlite> delete from tree where name = 'corosync.conf';
sqlite> select * from tree where name = 'corosync.conf';
sqlite> .quit
Rimuovere le directory
pmxcfs -l rm /etc/pve/corosync.conf rm /etc/corosync/* rm /var/lib/corosync/* rm -rf /etc/pve/nodes/*
per diminuire il numero di voti del quorum per togliere nodi:
pvecm expected 2
ad esempio se si vuole ridurre a due i voti del quorum