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
{{:proxmox:seleccion_999_371_.png?200|}}
===== 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:
{{:proxmox:image.png?300|}}
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):
{{:proxmox:seleccion_999_369_.png|}}
{{:proxmox:seleccion_999_370_.png|}}
====== 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