Como virtualizar un servidor CentOS7 con KVM.
Hace tiempo que tenía este articulo a medio desarrollar, gracias a una petición expresa (Dani) me decido a concluirlo y publicarlo.
En este articulo veremos como crear particiones virtualizadas. Su uso final puede ser de lo más variopinto, por ejemplo…. quieres montar un negocio de reventa de VPS.
Antes de comenzar… tres aclaraciones.
- Usamos exclusivamente herramientas OpenSource.
- Para la creación de este tutorial instalamos CentOS 7.
- Virtualizamos en un server de OVH, pero su instalación es similar en otras compañías, de hecho esta probado en servidores de soyoustart, oneprovider, aruba y hetzner.
Vamos a ello…
Virtualizar un servidor OVH con KVM
Lo primero que debes hacer es asegurarte es que el procesador de tu maquina admite la virtualizacion KVM.
egrep '(vmx|svm)' /proc/cpuinfo
Debes visualizar la extensión «vmx«.
Una vez comprobado, ya sabemos que nuestro servidor admite ser virtualizado.
Ahora procedemos a realizar la instalación desde cero, por tanto vamos a nuestro panel de control y comenzamos.
Panel de control
Pulsa sobre instalar la plantilla Centos 7 64 como sistema operativo, selecciona el idioma del sistema, marca la opción instalación personalizada y pulsar continuar.
En la pantalla de creación de particiones, deja como están las particiónes…
Swap
/
y eliminamos la partición…
/home
Si es necesario puedes ajustar el tamaño de las particiones, quizás seria recomendable que aumentaras la swap, pero todo depende de la potencia del servidor y de su uso final.
En la pantalla siguiente le das un nombre al servidor en el campo host, por ejemplo host.dominio.com
Es necesario para su correcto funcionamiento que marques la opción «Utilizar nucleo de la distribución». Si no la marcas se instalara el kernel de OVH, y no el original de Centos. Nosotros queremos el original, ya que el compilado por OVH nos puede dar algún problema que otro.
Pulsa en siguiente y empieza a instalar.
Se paciente… espera a recibir el mail de confirmación con los datos de acceso.
Una vez recibidos, accede vía SSH y comenzamos.
Trabajando el sistema
Una vez en la consola, lo primero que debes hacer es cambiar el puerto ssh, tal como te indico en este articulo.
Después la pass del root.
passwd
inserta tu pass y repitela.
Reinicia el servidor.
reboot
Ingresa de nuevo vía ssh, e instala los repositorios epel…
yum -y install epel-release
y remi tal como te indico en este manual anterior.
Seria recomendable que también instalaras el repo IUS, pero no es obligatorio.
Actualizamos el sistema y reiniciamos.
yum update reboot
Para manejar este servidor usaremos «Webmin«, aunque tienes otras opciones.
Creamos el repo.
nano /etc/yum.repos.d/webmin.repo
Copia y pega.
[Webmin] name=Webmin Distribution Neutral #baseurl=http://download.webmin.com/download/yum mirrorlist=http://download.webmin.com/download/yum/mirrorlist enabled=1
guarda y cierra el editor.
Instala psmisc.
yum install psmisc
Instalamos la key de Webmin.
cd /root/ wget http://www.webmin.com/jcameron-key.asc rpm --import jcameron-key.asc
Instalamos las herramientas de desarrollo de Centos.
yum -y groupinstall "Development Tools"
Instalamos la VPN, el KVM y Webmin.
yum -y install at pptp openvpn kvm fetchmail telnet ftp wbm-jailkit subversion python-virtinst glibc-headers glibc-devel kernel-headers kernel-devel qemu-kvm libvirt virt-install bridge-utils binutils qt gcc make patch nginx libgomp dkms webmin
Ahora el Cloudmint.
wget http://cloudmin.virtualmin.com/gpl/scripts/cloudmin-kvm-redhat-install.sh
modifica permisos de ejecución e instala.
chmod +x cloudmin-kvm-redhat-install.sh ./cloudmin-kvm-redhat-install.sh
Reinicia el servicio de red.
service network restart
Instalamos Virtualmin.
cd /root/ wget http://software.virtualmin.com/gpl/scripts/install.sh chmod +x install.sh ./install.sh
Instalamos herramientas y extensiones adicionales para nuestros clientes.
yum -y update yum -y install mlocate iptables-services mailman php-devel postgresql-server php-mcrypt* yum-plugin-replace yum -y install php-soap libmemcached-devel php-pecl-memcached php-pecl-memcache tcl-devel libpng-devel libjpeg-devel ghostscript-devel bzip2-devel freetype-devel libtiff-devel libssh2-devel libsphinxclient libsphinxclient-devel libnghttp2 libjpeg-turbo-devel yum -y install php-aws-sdk python-pip ruby-devel cpan curl-devel libmcrypt-devel libtomcrypt libtomcrypt-devel libtool-ltdl-devel python-devel python-pip python-setuptools yum -y install mutt msmtp showmount nfs-utils nfs-utils-lib rpcbind wkhtmltopdf python-html2text cmake re2c php-mbstring erlang nodejs npm composer mod_perl mod_dav_svn php-odbc php-snmp perl-DBD-Pg poppler-utils gperf fontconfig-devel libicu-devel sqlite-devel GeoIP-devel lib2-devel php-pecl-geoip gmp-devel boost mod_geoip yum -y install perl-Razor-Agent spamassassin-iXhash2 Xvfb xorg-x11-fonts* libqt4-webkit libqt4-dev qtwebkit-devel qt-devel rkhunter pwgen lvm2 qemu libvirt-client virt-manager virt-viewer guestfish libguestfs-tools virt-top mod_security mod_security_crs
También te recomiendo que instales las siguientes, pero es a tu elección, depende del uso del servidor.
- IMAGEMAGICK
yum -y install ImageMagick ImageMagick-devel php-pecl-imagick php-magickwand ImageMagick-perl
pecl install imagick
echo “extension=imagick.so” > /etc/php.d/imagick.ini - APC
pecl install apc
echo “extension=apc.so” > /etc/php.d/apc.ini - SPHINX
pecl install sphinx
echo “extension=sphinx.so” > /etc/php.d/sphinx.ini - MONGO
pecl install mongo
echo “extension=mongo.so” > /etc/php.d/mongo.ini - SSH2
pecl channel-update pecl.php.net
pecl install -f ssh2
echo “extension=ssh2.so” > /etc/php.d/ssh2.ini - XATTR
sudo pecl install xattr
echo “extension=xattr.so” > /etc/php.d/xattr.ini
Particiones primarias tipo LVM
Vemos los discos.
fdisk -l
Seleccionamos el que nos interese particionar, por ejemplo:
fdisk /dev/sda
Seguimos estos pasos.
1 – Pulsamos n “Nueva particion”
2 – Tipo de particion: p “Primaria”
3 – Numero de particion: 3
4 – Sector de inicio, miramos en el fdisk -l de antes donde acaba el ultimo sector y sumamos 1
5 – Sector final, enter, para todo el discos
6 – Pulsamos t “Cambiar el tipo de particion”
7 – Hex code, escribimos 8e que es LVM
Pulsa w para guardar la tabla de particiones.
En el caso que uses varios discos que no estén en raid, debes repetir el mismo proceso en cada uno.
Reinicia el sistema.
reboot
Una vez reiniciado el sistema accede a Webmin o tu herramienta preferida.
Si tienes dos discos y quieres poner las particiones que hemos creado anteriormente accede a RAID1 Webmin > Hardware > Linux Raid.
Crear RAID y selecciona RAID1.
En particiones en RAID selecciona la A y la B, todo lo que crees se duplicará en la otra de forma automática y transparente.
Dependiendo del sistema y del tamaño de los discos puede tomar su tiempo, incluso horas.
Al acabar con el RAID o si no se quiere utilizar, se debe pulsar sobre Webmin > Hardware >Logical Volume Management.
Pulsa sobre Añadir un nuevo grupo de volumen, dale un nombre y selecciona la partición creada, al guardar aparece el Volumen.
Crea un volumen lógico, para ello pulsa sobre la pestaña volúmenes lógicos y crear en uno de los discos.
Nombre del volumen Isos, asigna el tamaño que desees. Cuando este creado pulsa sobre el mismo y selecciona New linux Native ext4 y crea el filesystem con el botón de la parte inferior, monta el volumen en /var/isos, pulsa en montar.
Haz lo mismo en KVM.
Ahora desde la consola ssh apuntamos el directorio por defecto de kvm al volumen logico que hemos creado.
cd / rm -rf kvm ln -s /var/kvm/ kvm
Otra vez en el panel, ahora en la parte superior Cloudmin > Host Systems > KVM Host Settings, cambia el directorio base por /var/kvm.
Una vez llegado a este punto, ya puedes instalar las máquinas virtuales.
cd /var/isos wget http://mirror.checkdomain.de/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso