Software">
Prox Mox
Prox Mox
Prox Mox
0
Antonio López Camacho
IES Ciudad Jardín
05/04/2022
4.1.2 OS ....................................................................................................................................... 34
1.1.1 VMware
Tal vez se trate del sistema de virtualización más conocido y de mayor difusión
empresarial. La mayoría de las herramientas distribuidas por VMware son de pago.
Principales herramientas:
• WMware vSphere: Sistemas de virtualización completo (similar a Proxmox) que
permite la ejecución de servidores virtuales, con una consola de gestión
centralizada que simplifica tareas de administración como creación y gestión de
máquinas virtuales, copias de seguridad, etc.
• WM Workstation Pro: Sistema de virtualización local. Ideal para crear y ejecutar
sistemas operativos en segundo plano, ya sea con fines de laboratorio o como
puesto de trabajo
• WM Workstation Player: Herramienta gratuita, similar a la anterior, para uso no
comercial.
1.1.2 Hyper-V
Programa de virtualización de Microsoft incluido en las versiones Pro a partir de
Windows 8, y como rol a partir de Windows Server 2008 R2.
Resulta una alternativa cómoda tanto a nivel local, con un Windows cliente, como a nivel
de servidores. Lógicamente nos obliga a tener una licencia del Sistema Operativo Host.
1.1.3 KVM
Kernel-based Virtual Machine o Virtualización basada en núcleo, se trata de un sistema
de virtualización completo con Linux. Está basado en un módulo de núcleo (kvm.ko) y
dotado de una serie de herramientas de software libre.
Con cualquier distribución Linux, hoy día podemos realizar virtualización de máquinas
completas. Sin una interfaz adecuada, se requiere de gran habilidad para crear y
gestionar dichas máquinas, siendo complicado y a la vez muy potente su manejo
mediante línea de comandos.
A día hoy, hay muchos sistemas que, a través de una interfaz sencilla, permiten un
cómodo despliegue de aplicaciones utilizando Docker. Ejemplos:
- QNAP: https://www.qnap.com/solution/container_station/es-es/
- Synology: https://www.synology.com/es-es/dsm/feature/docker
- Plesk: https://www.plesk.com/extensions/docker/
1.1.6 Otros
Hay más sistemas de virtualización como:
• VirtualBox: Hypervisor de Oracle, gratuito, similar a VMware Workstation Pro
• QEMU: La versión anterior de KVM
• Parallels: Hypervisor de pago, también similar a VMware Workstation Pro
• Xen: Programa de código abierto de virtualización completa.
• Citrix Xenserver: Interfaz de Citrix para gestión de Xen
1.2 Proxmox
PVE (Proxmox Virtual Enviroment) consiste en una distribución de Linux basada en
Debian que agrupa una serie de herramientas de virtualización KVM y LXC, con una
interfaz web sencilla basada en roles, un potente CLI, y una API REST para dar soporte a
terceros, entre otras características.
Requisitos mínimos
A la hora de virtualizar necesitaremos:
• Memoria RAM suficiente para alojar el sistema operativo host, y el resto de los
sistemas operativos que queremos virtualizar. Además, recomendamos que sea
lo más rápida posible. Podemos trabajar bien a partir de 16 GB RAM DDR4 ECC.
• Procesador multi-núcleo y multi hilo con extensiones de virtualización, de gran
potencia. Recomendamos al menos Xeon E3
• Almacenamiento rápido para las imágenes de disco: recomendable SSD / SAS en
RAID HW 1 o 5. Aquí un listado de compatibilidad de tarjetas RAID
• Almacenamiento externo para copias de seguridad mediante NAS
• Es recomendable NIC de gran velocidad (SFP+), aunque dependerá de cómo
diseñemos nuestro sistema y del uso que le demos, con una simple interfaz
gigabit puede ser suficiente.
• También, para una gestión de red adecuada, es recomendable switch
gestionable para sincronizar VLANs para distintas máquinas virtuales
Disco de instalación: Como hemos indicado, recomendamos RAID HW, con discos SSD o
SAS. Por defecto Proxmox creará varios volúmenes. Es posible modificar el tamaño de
los volúmenes e incluso crear una partición ZFS.
En cualquier caso, tendremos acceso a los repositorios oficiales, lo cual nos dará la
oportunidad de actualizar el sistema Proxmox en sus versiones estables. Tener la
suscripción no es necesario para actualizar el Debian sobre el que está basado Proxmox,
pero esto lo veremos en el apartado 3.1.3 - Actualizaciones.
Una vez que nos hayamos registrado y pagado la suscripción, recibiremos un email con
la “Subscription Key”. Ésta la debemos ingresar en nuestro servidor y activarla.
Y pulsar Reissue:
Tan sólo tenemos que introducir nuestra key en el nuevo servidor y quedará activo al
instante.
Cuando gestionamos una instalación de Proxmox por primera vez, siempre tendremos
un Datacenter por cada instalación. Más adelante veremos cómo podemos “unir” esos
nodos en un solo Cluster.
3.1.2 Configuración
La configuración del Datacenter tiene los siguientes elementos:
- Cluster: Permite crear un cluster o unirnos a uno ya existente
- Ceph: Sistema de almacenamiento de apoyo al Cluster Proxmox
- Options: Opciones básicas de configuración
- Storage: Permite gestionar el almacenamiento del Datacenter
- Backup: Gestión de copia de seguridad de las máquinas virtuales o contenedores
del Datacenter
- Replication: Permite gestionar replicación de datos entre nodos en caso de tener
un Cluster
- Permissions: Gestión de usuarios, grupos, roles de Proxmox
3.1.3 Actualizaciones
Las actualizaciones en Proxmox se realizan igual que en cualquier otro Debian, pero con
la salvedad de poder actualizar o no los paquetes de Proxmox. Por defecto no podremos,
salvo que tengamos una suscripción o modifiquemos los repositorios de Proxmox a los
de desarrollo, lo cual no es recomendable si trabajamos en un entorno en producción.
Las actualizaciones las podemos hacer tanto desde el CLI como desde el entorno gráfico.
Actualización básica:
apt-get update
apt-get upgrade
apt-get dist-upgrade
pveversion
Por el momento vamos a crear un cluster y ver los distintos aspecto de configuración
que tiene.
Podemos crear el cluster tanto con CLI como con la interfaz gráfica:
CLI:
GUI:
Igual que al crear un cluster, podemos unir nodos tanto mediante CLI o GUI:
CLI:
Accedemos en la consola del nodo que queremos agregar, e indicamos la IP del cluster,
al realizarlo nos pedirá las credenciales de root del cluster:
pvecm add IP-ADDRESS-CLUSTER
GUI:
Una vez que hemos unido un nodo al cluster, el acceso a través de la interfaz gráfica es
exactamente la misma para ambos, es decir, no accedemos a un nodo, sino a un cluster,
a través de un nodo.
A partir de ahora podemos realizar una serie de acciones con nuestras máquinas
virtuales, como por ejemplo migrar una máquina de un nodo a otro.
Desde la consola:
Una vez realizado, si deseas reinstalar ese nodo en el cluster es necesario reinstalar
Proxmox.
3.3 Almacenamiento
El almacenamiento en Proxmox es muy flexible, permitiendo distintos tipos de
almacenamiento. Dependiendo de las necesidades e infraestructuras que tengamos,
elegiremos el que más nos convenga, para ello es necesario conocer cuáles son las
posibilidades que tenemos:
En nuestro caso, utilizamos una NAS para realizar copias de seguridad y almacenar tanto
ISOs como templates. También hemos añadido una SSD local para almacenar las
imágenes de forma que el acceso a disco sea mucho más rápido, y dejamos el Sistema
Operativo en HDD.
Hay que tener en cuenta que en Storage hemos definido un límite de copias. En el
ejemplo hay un límite de 6 copias, y por eso nos da un error:
Tal como indica en el error, debemos eliminar una copia o aumentar el límite de copias
en eses almacenamiento.
Por último, en caso de almacenar las copias en local, la ruta estará en /var/lib/vz/dump:
Para crear usuarios navegamos en el Datacenter hasta Permissions > Users, y elegimos
el tipo de usuario que queremos:
En nuestro caso hemos creado dos usuarios, uno Linux y otro Proxmox:
Al crear el token genera una clave que debemos almacenar para poder utilizarla más
adelante:
Los pools se gestionan desde Datacenter > Permissions > Pools. También es posible
modificar un pool ya creado desde el mismo pool en el árbol de navegación principal.
En Proxmox hay una serie de roles predefinidos en Datacenter > Permissions > Roles:
Aunque es posible crear nuevos roles pulsando en Create. A priori, con los que ya están
predefinidos debería ser suficiente para un trabajo normal.
Para asignar los roles a los usuarios, es posible hacerlo desde el Datacenter >
Permissions:
Al añadir un permiso debemos indicar a quien se lo damos, sobre qué recursos, y con
qué permisos. Por ejemplo, vamos a darle permisos a alopez_proxmox para que pueda
gestionar por completo la máquina virtual 100:
En Datacenter > HA, en la sección Status, tenemos el estado de nuestro cluster HA.
3.6.1 Resources
Los recursos o resources son las máquinas virtuales o contenedores que queremos
gestionar mediante HA, tan sólo tenemos que añadirlos al panel para que sean
gestionados. Los podemos dar de alta en Datacenter > HA, sección Resources:
3.6.2 Groups
Podemos especificar un grupo de nodos con una serie de condiciones para ejecutar
máquinas virtuales dentro del mismo. Los Groups se gestionan en Datacenter > HA >
Groups. Al crear un grupo tenemos las siguientes opciones:
- Nodes: Indicamos qué nodos pertenecen al grupo, y con qué prioridad
- Restricted: Indica si los nodos asignados al grupo podrán ejecutarse en otros
nodos que no pertenezcan al grupo
- Nofailback: Las máquinas se ejecutan en el nodo con mayor prioridad. Si
activamos esta opción, las máquinas no cambiarán de nodo una vez que están
funcionando
Por ejemplo, vamos a cambiar el disco dónde se almacena una máquina virtual del HDD
a la SSD:
4.1 Creación
Para crear una máquina virtual desde el GUI, pulsamos en Create VM, y tendremos un
asistente que nos ayudará a elegir los componentes necesarios para crear nuestra
máquina virtual.
4.1.3 System
Son una serie de parámetros internos que condicionarán el funcionamiento de la VM.
Es importante elegirlos con precaución.
- Graphic card: Es la tarjeta gráfica que tendrá el sistema. Hay que tener en cuenta
que accederemos a la máquina virtual mediante una consola, por lo general vía
VNC, y que no tiene mucha más utilidad. Lo recomendable es dejar el valor por
defecto, y una vez tengamos la VM funcionando implementar algún tipo de
acceso remoto, por ejemplo, RDP o SSH.
4.1.7 Network
En esta sección configuramos la interfaz de red inicial que tendremos en nuestra
máquina virtual.
- No network device: Podemos no configurar la red.
4.1.8 Confirm
Nos queda revisar la configuración y podemos iniciar la máquina una vez creada:
4.2 Gestión
Una vez que la máquina virtual está creada, tenemos una gran variedad de opciones
sobre ella. En resumen, podremos modificar la máquina, acceder a una consola, realizar
copias de seguridad y por supuesto, gestionar la forma en que se ejecuta.
- Pause, Reboot, Hibernate, Stop, Reset, Shutdown: Son las distintas llamadas
ACPI que podemos enviar a la máquina virtual.
- Migrate: Sirve para cambiar el nodo que queremos que ejecute nuestra máquina
virtual. En caso de no estar ubicado el disco en un almacenamiento de red
compartido, será necesario trasladar toda la información del disco a la otra
máquina virtual, llevando por tanto un tiempo en realizar la tarea.
- Clone: Realiza una copia exacta de la máquina. Esto es muy útil si vamos a instalar
por ejemplo varios Windows Server. Tan sólo tenemos que instalar uno,
- More > Remove: Opción para eliminar la máquina virtual, nos pedirá
confirmación indicando el ID de la máquina que deseamos eliminar. Para
eliminar la máquina es necesario que esté detenida.
4.2.2 Summary
Es el panel de control de la máquina virtual seleccionada. En Summary tenemos una
visión global del estado de la máquina:
4.2.4 Hardware
Son los componentes que tiene la máquina virtual. Cuando hemos creado la máquina ya
los configuramos de inicio. Ahora podremos modificarlos, eliminarlos, añadir nuevos.
El texto aparece en rojo mientras no se hagan efectivos los cambios, si nos arrepentimos,
podemos revertir los cambios pulsando Revert.
4.2.5 Cloud-Init
Cloud-Init es un programa que se ejecuta en la máquina virtual, y que sirve para
inicializar dicha máquina con una serie de parámetros. Actualmente está funcional para
máquinas Linux, y con algunas reservas.
Es algo que no vamos a trabajar en este curso. Pensamos que merece más la pena
trabajar con templates de contenedores LXC.
4.2.6 Options
Son una serie de opciones que pomodes configurar en el comportamiento de la máquina
virtual:
4.2.8 Monitor
Se trata de una consola dedicada a la máquina virtual. Si ejecutamos el comando help,
podemos ver todos los comandos disponibles. Por ejemplo, podemos ver información
sobre la CPU escribiendo “info cpus”:
4.2.10 Replication
La replicación nos permite tener una copia de la máquina virtual en otro nodo. Para ello
se genera una tarea que realizará un backup en forma de snapshot en el intervalo que
configuremos. Es por ello que, para utilizar la replicación, debemos tener almacenada la
máquina en un sistema de ficheros que nos permita realizar un snapshot:
Hay que tener en cuenta que si el sistema de ficheros donde guardamos el disco de la
máquina virtual no soporta snapshot no podremos realizarlas.
Si hacemos Rollback sobre test_alopez, vamos que cambiar la posición de la que cuelga
NOW:
4.2.12 Firewall
Aquí podemos establecer reglas en el firewall sobre una máquina en concreto. El
funcionamiento es el mismo que podemos configurar desde el Datacenter o desde el
nodo Proxmox.
4.2.13 Permissions
Aquí podemos añadir o quitar permisos tal como ya vimos en los permisos configurados
en el Datacenter, pero esta vez sobre la máquina virtual seleccionada:
5.1 Creación
Para crear un contenedor LXC desde el GUI pulsaremos en el botón Create CT arriba a la
derecha. Tendremos un asistente que nos ayudará a crear el contenedor con las
opciones apropiadas:
5.1.1 General
En General, debemos indicar una serie de opciones:
- Node: Es el nodo en el que vamos a crear el contenedor desde un inicio.
- CT ID:El ID del contenedor. No puede coincidir con el ID de una máquina virtual.
El sistema nos dará uno por defecto, aunque podemos cambiarlo.
- Hostname: Aquí elegimos el nombre que tendrá la máquina. Sí, estamos
configurando el /etc/hostname del sistema operativo Linux que vamos a instalar.
- Unprivileged container: Por defecto crearemos un contenedor sin privilegios.
Esta es la opción más segura de cara a evitar futuros exploits en el nodo Proxmox,
aunque nos hemos encontrado alguna situación en que ha sido necesario darle
privilegios para funcionar. En caso de realizarlo, que sea en condiciones seguras.
- Resource Pool: Podemos agregar el contenedor a un Pool.
- Password/Confirm password:
- SSH public key / Load SSH Key File: Nos permite cargar nuestra clave pública de
SSH para acceder mediante SSH sin contraseña.
5.1.2 Template
En esta sección elegimos que plantilla queremos instalar:
También podemos gestionar las plantillas con el comando pveam desde el CLI:
5.1.4 CPU
En CPU configuramos cuántos núcleos tendrá disponibles el contenedor y podemos
limitar el uso de estos:
Con el comando “pct cpusets” podemos comprobar qué núcleos se han asignado a cada
contenedor.
5.1.5 Memory
En Memory indicamos el tamaño de la memoria y de la partición de Swap:
5.1.7 DNS
Cerramos la configuración con la DNS del sistema:
5.1.8 Confirm
Por último, podemos revisar los parámetros escogidos y pulsar en crear nuestro
contenedor:
Por otro lado, una vez configurado el contenedor, tendremos nuestro sistema operativo
configurado en muchos aspectos, sin tener que instalarlo: interfaz de red, nombre de
máquina, etc.
5.2 Gestión
Vamos ahora a repasar las opciones de configuración sobre el contenedor. Hay que
tener en cuenta que además de su configuración, realizaremos acciones directamente
sobre el sistema operativo del contenedor. Por ejemplo, en una máquina virtual
podemos añadir o quitar interfaces de red; en el contenedor podemos establecer la IP
de las interfaces de red.
5.2.2 Summary
El panel de control del contenedor es también muy similar al de la máquina virtual. En
este caso tenemos un dato más que antes no teníamos: el estado de la partición de
swap:
Otra opción muy interesante para acceder a la consola es desde el CLI, utilizando el
comando “pct enter ID” desde cualquiera de los nodos. Accederemos sin necesidad de
credenciales como root:
Tanto Root disk, como cualquier otro punto de montaje que establezcamos, podemos:
- Resize disk: Nos permite ampliar el tamaño del espacio de almacenamiento.
Nunca reducirlo
- Move Volume: Cambiar la zona de almacenamiento.
- Remove: Eliminarlo. Esta opción no está disponible para Root disk
5.2.5 Network
El funcionamiento es muy similar a Resources. Podemos modificar la interfaz de red
actual, eliminarla, o añadir una nueva:
5.2.6 DNS
En DNS simplemente Podemos modificar los parámetros DNS de nuestro contenedor:
- Protection: Por defecto el valor es falso. Sirve para establecer mayor seguridad
en el contenedor de cara a eliminación o modificación de los discos.
- Unprivileged container: Por defecto el valor es verdadero. Si lo ponemos a falso
podremos realizar más operaciones en nuestro contenedor, a cambio de
comprometer el sistema host.
- Features: Son una serie de características que, combinadas con el contenedor
con privilegios, nos permitirán realizar una serie de acciones en el contenedor.
5.2.9 Backup
Mismas funciones que con las máquinas virtuales. Gestión de las copias de seguridad.
5.2.10 Replication
Mismas funciones que con las máquinas virtuales. Gestión de replicación.
5.2.12 Firewall
Mismas funciones que con las máquinas virtuales. Gestión de cortafuegos.
5.2.13 Permissions
Mismas funciones que con las máquinas virtuales. Gestión de permisos.
El objetivo de esta guía es realizar una instalación de Windows Server con el mejor
rendimiento y estabilidad posible. Hay que tener en cuenta que, al virtualizar, tenemos
un abanico muy extenso de posibles dispositivos a emular, y que dicha emulación podría
cambiar de un nodo a otro, o ser exportada a un Datacenter.
Cuando creamos una máquina virtual para producción el objetivo es que tenga un
funcionamiento del 100% de tiempo efectivo, y para ello, además de una infraestructura
hardware con garantías, debemos disponer de un soporte de virtualización fiable y
flexible.
Vamos a realizar la instalación creando una máquina virtual con una serie de
parámetros. Hay que indicar que siempre es posible ajustarlos a una configuración más
optima, en función del entorno de trabajo, pero con estos parámetros no debemos
equivocarnos.
4. En Hard Disk, el disco de sistemas debemos cambiarlo a SCSI. Esto nos dará una
mejora I/O muy importante respecto a los discos IDE. Será necesario instalar el
driver durante la instalación del Sistema Operativo. Por otro lado, si además
instalamos el sistema en un volumen que permita Snapshots, dispondremos de
mayor flexibilidad de cara al mantenimiento del sistema:
10. Ahora sí, iniciamos la máquina virtual. Cuando lleguemos al paso de seleccionar
el disco donde queremos instalar el sistema, nos encontraremos que no se
reconoce ningún disco, ya que el disco SCSI VirtIO no es conocido por Windows
Server 2019.
Con ello hemos instalado un nuevo servicio que nos rexportará correctamente
la memoria RAM:
En esta ocasión, vamos a añadir un disco SSD a un nodo Proxmox. Para ello debemos
gestionar el disco utilizando las herramientas de Debian y el CLI de Proxmox.
Este método funciona, y nos permite trabajar con máquinas virtuales perfectamente,
pero si queremos, por ejemplo, realizar Snapshots, no vamos a poder. Además, aunque
se realizar de forma nativa con el sistema operativo Debian en el que se aloja Proxmox,
no es la forma más sutil de realizarlo.
1. Una vez instalado el disco físicamente tenemos que localizarlo con “fdisk -l”
§Y pasamos al GUI
• vgs -v (es lo mismo que ver los volúmenes en el GUI)
• vgdisplay ssd2 (ídem)
o Accedemos al Datacenter, desde la IP del nodo que tiene el disco físico:
Datacenter > Storage > Add LVM-thin: Seleccionado el Volume group que
hemos creado en la consola y le damos un ID. Ojo con los nodos:
A continuación, añadimos el recurso en Datacenter > Storage > Add NFS, introducimos
los datos al recurso NFS, e indicamos qué queremos almacenar en él:
En nuestro caso, vamos a añadir un dispositivo, pensando que es muy importante que
sea ese pendrive, y no otro, el que necesitamos para dar un servicio en concreto.
Vemos que aparece n rojo nuestro nuevo dispositivo, por tanto, tenemos que apagar y
encender la máquina:
Para nuestro ejemplo, simplemente vamos a utilizar 2 máquinas virtuales con Windows
10: W10 y W10-2. En un primer ejemplo, ambas máquinas están sin ningún tag, por
tanto, están accesibles en la red de ejemplo: 10.22.90.0/24
W10:
W10-2:
En ambos casos, y tras desactivar el Firewal (estamos en red pública), podemos hacer
ping entre las máquinas, sin necesidad de indicar ningún tag en los Sistemas Operativos:
OVH ofrece una serie de servicios para gestionar este servidor, entre otros, el poder
añadir una serie de IP y poder asignar esas IPs a una serie de MACs. Será mediante la
asignación de MAC, que podremos indicar que una máquina virtual de nuestro
Datacenter, tiene una IP pública en concreto.
De esta forma podemos, por ejemplo, montar un servidor web con LXC de Debian, o un
servidor de SQL Server con Windows Server.