Table of Contents

Instalamos servidor en RAID:

http://matarosensefils.net/wiki/index.php?n=Proxmox.DebianJessieNetinstall

En resumen, en cada disco creo 3 particiones:

32 Gb / y RAID
4 Gb swap
Lo que sobre para glusterfs

Y hacemos RAID en / con opción boot

Configuración de RED

Hacemos un bonding y encima un bridge con las dos tarjetas.

/etc/network/interfaces
auto lo
iface lo inet loopback

iface eth0 inet manual

iface eth1 inet manual

auto bond0
iface bond0 inet manual
    slaves eth0 eth1
    bond-mode 802.3ad
    bond-miimon 100

auto vmbr0
iface vmbr0 inet static
        address  192.168.2.1
        netmask  255.255.252.0
        gateway  192.168.1.1
        bridge_ports bond0
        bridge_stp off
        bridge_fd 0

En el switch tenemos que activar port trunk. En mi caso es un tplink tl sg 1024de y entro a la configuración en 192.168.0.1

Configurado red containers

/etc/pve/lxc/101.conf

net0: name=eth0,bridge=vmbr0,gw=192.168.0.1,hwaddr=6A:7F:40:EE:21:43,ip=192.168.0.101/24,type=veth
net1: name=eth1,bridge=vmbr1,gw=10.91.168.1,hwaddr=4A:72:61:FF:FF:59,ip=10.91.168.101/24,type=veth

Instalación Proxmox

Fuente: http://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Jessie#Adapt_your_sources.list

Asegurarse que el valor que resuelva hostname lo tenga en el /etc/hosts. Por ejemplo:

127.0.0.1 localhost
192.168.1.100 proxmoxescorxador

Añadimos repositorios de proxmox:

echo "deb http://download.proxmox.com/debian jessie pvetest" > /etc/apt/sources.list.d/pve-install-repo.list
wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add -
apt-get update && apt-get dist-upgrade
apt-get install proxmox-ve ntp ssh postfix ksm-control-daemon open-iscsi

Vemos que cambia el kernel al reiniciar:

Linux proxmox02 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux
Linux proxmox02 4.1.3-1-pve #1 SMP Thu Jul 30 08:54:37 CEST 2015 x86_64 GNU/Linux

Configuramos la red así:

auto vmbr0
iface vmbr0 inet static
	address  192.168.1.100
	netmask  255.255.255.0
	gateway  192.168.1.1
	bridge_ports eth0
	bridge_stp off
	bridge_fd 0

Cluster Proxmox

Desde el primer nodo que será master

root@proxmox1:~# pvecm create clusterproxmox
Corosync Cluster Engine Authentication key generator.
Gathering 1024 bits for key from /dev/urandom.
Writing corosync key to /etc/corosync/authkey.
root@proxmox1:~# pvecm status
Quorum information
------------------
Date:             Mon Sep 12 22:37:19 2016
Quorum provider:  corosync_votequorum
Nodes:            1
Node ID:          0x00000001
Ring ID:          1/4
Quorate:          Yes

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

Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 192.168.2.1 (local)

Desde el segundo nodo lo añadimos poniendo la ip del primero

root@proxmox2:~# pvecm add 192.168.2.1
The authenticity of host '192.168.2.1 (192.168.2.1)' can't be established.
ECDSA key fingerprint is 3a:17:aa:ca:c4:1b:55:2a:12:bb:fe:b4:ed:af:1e:af.
Are you sure you want to continue connecting (yes/no)? yes
root@192.168.2.1'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 'proxmox2' to cluster.

Ahora vemos que ya hay dos miembros:

root@proxmox1:~# pvecm status
Quorum information
------------------
Date:             Mon Sep 12 22:47:44 2016
Quorum provider:  corosync_votequorum
Nodes:            2
Node ID:          0x00000001
Ring ID:          1/12
Quorate:          Yes

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

Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 192.168.2.1 (local)
0x00000002          1 192.168.2.2

Borrar nodo cluster

Si al borrar un nodo da error, le decimos que espere (e=expected) solo un nodo:

root@proxmox01:/var/log# pvecm delnode proxmox02
cluster not ready - no quorum?
root@proxmox01:/var/log# pvecm e 1
root@proxmox01:/var/log# pvecm delnode proxmox02

Gluster:

https://www.howtoforge.com/high-availability-storage-with-glusterfs-3.2.x-on-debian-wheezy-automatic-file-replication-mirror-across-two-storage-servers

Instalamos versión 3.7 que es la estable:

http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/Debian/jessie/

Instalamos:

wget -O - http://download.gluster.org/pub/gluster/glusterfs/LATEST/rsa.pub | apt-key add -
echo deb http://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/jessie/apt jessie main > /etc/apt/sources.list.d/gluster.list 
apt-get update
apt-get install glusterfs-server

Queremos montar lo siguiente:

En el /etc/hosts añadimos los dos servidores:

root@proxmox1:~# cat /etc/hosts
127.0.0.1	localhost
192.168.2.1	proxmox1

192.168.2.2     proxmox2

Conectamos los dos servidores. Desde el server1:

root@proxmox1:~# gluster peer probe proxmox2

Vemos que están conectados:

root@proxmox1:~# gluster peer status
Number of Peers: 1

Hostname: proxmox2
Uuid: 62eecf86-2e71-4487-ac5b-9b5f16dc0382
State: Peer in Cluster (Connected)

Y desde el server2 igual

root@proxmox2:~# gluster peer status
Number of Peers: 1

Hostname: proxmox1
Uuid: 061807e7-75a6-4636-adde-e9fef4cfa3ec
State: Peer in Cluster (Connected)

Creamos las particiones y formateamos en xfs


Montamos las particiones en /gluster/brick1 y /gluster/brick2

# blkid
/dev/sda3: UUID="6afd599f-ea83-4c19-bc71-8ebfce42a332" TYPE="xfs"
/dev/sdb3: UUID="bd39fa7a-6b23-4b43-89e0-693b61ba4581" TYPE="xfs"

Fichero /etc/fstab

#brick 1
UUID="6afd599f-ea83-4c19-bc71-8ebfce42a332" /glusterfs/brick1  xfs rw,inode64,noatime,nouuid 0 1

#brick 2
UUID="bd39fa7a-6b23-4b43-89e0-693b61ba4581" /glusterfs/brick2 xfs  rw,inode64,noatime,nouuid 0 1

Creamos el volúmen. Mejor un volumen grande que dos pequeños:

gluster volume create volumen_gluster replica 2 transport tcp proxmox1:/bricks/disc1/brick1 proxmox2:/bricks/disc1/brick1 proxmox1:/bricks/disc2/brick2 proxmox2:/bricks/disc2/brick2

volume create: volumen_gluster: success: please start the volume to access data

Lo iniciamos:

root@proxmox1:~# gluster volume start volumen_gluster
volume start: volumen_gluster1: success

Miramos el estado:

# gluster volume status
Status of volume: volumen_gluster
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick proxmox1:/bricks/disc1/brick1         49152     0          Y       8938 
Brick proxmox2:/bricks/disc1/brick1         49154     0          Y       7721 
Brick proxmox1:/bricks/disc2/brick2         49153     0          Y       8957 
Brick proxmox2:/bricks/disc2/brick2         49155     0          Y       7740 
Self-heal Daemon on localhost               N/A       N/A        Y       8977 
Self-heal Daemon on proxmox2                N/A       N/A        Y       7760 
 
Task Status of Volume volumen_gluster
------------------------------------------------------------------------------
There are no active volume tasks

Conectar como cliente

#mount -t glusterfs proxmox1:/volumen_gluster /glusterfs

/etc/fstab

proxmox1:/volumen_gluster /glusterfs glusterfs defaults,_netdev 0 2

Almacenamiento compartido Proxmox

De momento los containers no soportan GlusterFS directamente desde proxmox, las VMs si.

Montamos /glusterfs y lo ponemos como almacenamiento de Containers (y también de VMs):

NFS

Montamos el recurso por nfs en el servidor de proxmox. En los containers los montamos por bind:

En la carpeta /etc/pve/lxc editamos los ficheros *.conf

Nota: No poner / delante de container/folder

lxc.mount.entry: /host/folder container/folder  none bind,create=dir,optional 0 0

Fuente: https://pve.proxmox.com/wiki/LXC_Bind_Mounts Ejemplo:

lxc.mount.entry: /mnt/pelis mnt/pelis  none bind,create=dir,optional 0 0
lxc.mount.entry: /mnt/series mnt/series  none bind,create=dir,optional 0 0