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