Creando un nube privada “low cost” con Proxmox VE 3.0

Actualmente existe una oferta muy rica de proveedores de infraestructura o hosting y proveedores de tecnología para sacar el máximo provecho de dicha infraestructura, aún más importante, a un coste razonablemente bajo usando tecnología free y open source.

proxmox-logo

En mi caso, esta infraestructura la usaré para construir una plataforma donde provea servicios alrededor de productos como WSO2 ESB, Liferay Portal, Alfresco ECM, Drupal, etc., para ello he contratado un hosting medianamente decente en Hetzner (repito experiencia) y he empleado Proxmox VE.

I. Por qué Proxmox VE ?

Principalmente, porque ya tenía experiencia previa con Proxmox con las versión 2.0 de años anteriores, aunque actualmente hay productos opensource y más sofisticados como Apache CloudStack, OpenStack y Eucalyptus, pero el conocimiento previo y su sencillez me hizo decidir su uso. Una cosa importante a destacar es el corto tiempo necesario para crear un nuevo servidor, por lo general me toma 10 minutos.

II. Qué servicios ofreceremos desde nuestra nube privada?

Los servicios ofrecidos estarán alrededor del desarrollo de aplicaciones usando el Stack de WSO2, Liferay Portal, Alfresco ECM, Gestión de Identidades con WSO2 IS, etc. En otras palabras, nuestra nube privada será nuestra plataforma base para desarrollar y explotar nuestras aplicaciones construidas con las anteriores tecnologías mencionadas.

III. Por qué no usar WSO2 Stratos, RedHat OpenShift u otro PaaS

Por la naturaleza del tipo de servicios a ofrecer, evidentemente lo mejor era usar algún PaaS stack y la más adecuada era WSO2 Stratos, aunque como indiqué en el punto anterior, el conocimiento previo de Proxmox me hizo decidir como primera opción.

Bueno, una vez puesto mis argumentos, paso a explicar todo el proceso que seguí para tener mi nube privada.

IV. Defina una arquitectura de virtualización o mapa de VMs

Sí, es muy importante planear cómo quedará tu nube privada, IPs, Redes Virtuales, DMZ, Storage vs. Partitions, RAM / VM, Security y Firewalling, etc.

Aquí os muestro mi mapa de VMs.

A example of Private Cloud Architecture with Proxmox

A example of Private Cloud Architecture with Proxmox

Después de planear la arquitectura de tu nube, los siguientes pasos están relacionados a la instalación y post-configuración de tu hosting.

V. Preparando la infraestructura base

Algunos requisitos previos:

  • Debian 7.0 (wheezy) o CentOS 6.4
  • Proxmox VE 3.0
  • IP pública de tu hosting: 144.76.70.175
  • Nuevo SSH port: 4141 y 8181

1. Instalar el S.O.

  • Ir a Robot > Linux y seleccionar Debian 7 – minimal, luego reboot desde ssh:

<h1>shutdown -rf now</h1>

  • Verificar la versión de S.O. por defecto instalada en el Hosting
root@chkry1 ~ # uname -a
Linux chkry1 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 GNU/Linux

2. Preparación básica del S.O. (Debian Wheezy)

1) Cambiar password de root

root@chkry1 ~ # passwd root

2) Actualizar Debian

root@chkry1 ~ # apt-get update

3) Renombrar host


<h1>nano /etc/hostname</h1>

<h1>nano /etc/hosts</h1>

  • Reinicie el servicio

<h1>/etc/init.d/hostname.sh</h1>

  • Verifique los cambios, salga y vuelva a entrar o:

<h1>hostname --fqdn</h1>

4) Cambiar puerto SSH

root@chkry1 ~ # nano /etc/ssh/sshd_config
  • Reemplazar las líneas ‘Port 22’ y ‘Port 222’ por ‘Port 4141’ y añadir ‘AddressFamily inet’ (ipv4)
root@chkry1 ~ # service ssh restart

5) Desabilite IPV6

root@chkry1 ~ # netstat -tunlp |grep p6 |wc -l
 5
  • Actualizar el kernel y hosts para no cargar ipv6
root@chkry1 ~ # echo net.ipv6.conf.all.disable_ipv6=1 > /etc/sysctl.d/disableipv6.conf
root@chkry1 ~ # sed '/::/s/^/#/' /etc/hosts >/etc/dipv6-tmp; cp -a /etc/hosts /etc/hosts-backup && mv /etc/dipv6-tmp /etc/hosts
  • Al no tener avahi (multi-cast) instalado, no ejecutar esto:
root@chkry1 ~ # sed '/ipv6=yes/s/yes/no/' /etc/avahi/avahi-daemon.conf > /etc/avahi/dipv6-tmp; cp -a /etc/avahi/avahi-daemon.conf /etc/avahi/avahi-daemon.conf-backup && mv /etc/avahi/dipv6-tmp /etc/avahi/avahi-daemon.conf
  • NTP
root@chkry1 ~ # nano /etc/default/ntp

.. debería quedar así “NTPD_OPTS=’-4 -g'”, luego reiniciar:


<h1>service ntp restart</h1>

  • RPCBIND (rpc.statd, rpc.mountd, verificar tambien HTTP)
root@chkry1 ~ # nano /etc/netconfig

dejarlo así:

udp        tpi_clts      v     inet     udp     -       -
tcp        tpi_cots_ord  v     inet     tcp     -       -
#udp6       tpi_clts      v     inet6    udp     -       -
#tcp6       tpi_cots_ord  v     inet6    tcp     -       -
rawip      tpi_raw       -     inet      -      -       -
local      tpi_cots_ord  -     loopback  -      -       -
unix       tpi_cots_ord  -     loopback  -      -       -
  • Quitar la interface eth0 de ipv6
root@chkry1 ~ # nano /etc/network/interfaces
  • Rebootear y probar si ipv6 aún funciona
root@chkry1 ~ # shutdown -rf now

root@chkry1 ~ # netstat -tunlp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:4141 0.0.0.0:* LISTEN 2340/sshd
tcp6 0 0 :::4141 :::* LISTEN 2340/sshd
udp 0 0 144.76.70.175:123 0.0.0.0:* 2277/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 2277/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 2277/ntpd
  • Si observa que SSH está en ipv6 corriendo en el puerto 4141 (mi nuevo puerto SSH), si no hay nada de ipv6, pues eso quiere decir que ipv6 ha sido desabilitado.

3. Preparación del S.O. para la instalación de Proxmox VE

  • http://www.wepoca.net/node/42

  • Crear una carpeta destinada a alojar los backups (iso, config files, etc.) de PVE (lo haremos desde la Consola Web de Proxmox)

root@chkry1 ~ # mkdir -p /datos_pve_backups (lo configuraremos desde PVE Web)

root@chkry1 ~ # gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.5

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 5860533168 sectors, 2.7 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): B2B420AE-59BE-44E7-ADCE-EA6EB3EB3C63
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 5860533134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            4096        33558527   16.0 GiB    8200
   2        33558528        34607103   512.0 MiB   8300
   3        34607104      2182090751   1024.0 GiB  8300
   4      2182090752      5860533134   1.7 TiB     8300
   5            2048            4095   1024.0 KiB  EF02

y el otro disco:

root@chkry1 ~ # gdisk -l /dev/sdb
GPT fdisk (gdisk) version 0.8.5

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sdb: 5860533168 sectors, 2.7 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 4B205997-E657-433A-8DC7-28B356D3656C
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 5860533134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            4096        33558527   16.0 GiB    FD00
   2        33558528        34607103   512.0 MiB   FD00
   3        34607104      2182090751   1024.0 GiB  FD00
   4      2182090752      5860533134   1.7 TiB     FD00
   5            2048            4095   1024.0 KiB  EF02

y mostrando el disco principal:

S.ficheros                                             Tamaño Usados  Disp Uso% Montado en
rootfs                                                  1016G   260G  705G  27% /
udev                                                      10M      0   10M   0% /dev
tmpfs                                                    3,2G   316K  3,2G   1% /run
/dev/disk/by-uuid/d85c9428-b39f-434c-8140-3e46f0ffe770  1016G   260G  705G  27% /
tmpfs                                                    5,0M      0  5,0M   0% /run/lock
tmpfs                                                    9,5G    22M  9,5G   1% /run/shm
/dev/sda2                                                508M    87M  396M  18% /boot
/dev/sda4                                                1,7T    25G  1,6T   2% /home
/dev/fuse                                                 30M    16K   30M   1% /etc/pve
  • Configurar el idioma:
root@chkry1 ~ # dpkg-reconfigure locales
  • Configurar la zona horaria:
root@chkry1 ~ # dpkg-reconfigure tzdata
  • Para evitar warnings como este:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "C"
are supported and installed on your system.

.. hay que regenerar los locales:

root@chkry1 ~ # locale-gen es_ES.UTF-8

… o comentar en ‘/etc/ssh/sshd_config’ la siguiente línea ‘AcceptEnv LANG LC_*’

VI. Instalación del software de virtualización

4. Instalación de Promox VE

  • Añadir a la sourcelist de apt lo sgte:
root@chkry1 ~ # echo "deb http://download.proxmox.com/debian wheezy pve" >> /etc/apt/sources.list
root@chkry1 ~ # wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add -
root@chkry1 ~ # apt-get upgrade
root@chkry1 ~ # aptitude upgrade
root@chkry1 ~ # aptitude full-upgrade
root@chkry1 ~ # aptitude install proxmox-ve-2.6.32

[...]
The following packages have unmet dependencies:
pve-firmware : Conflicts: firmware-linux-free but 3.2 is installed.
Conflicts: firmware-realtek but 0.36+wheezy.1 is installed.
The following actions will resolve these dependencies:

Remove the following packages:
1) firmware-linux-free
2) firmware-realtek

Leave the following dependencies unresolved:
3) linux-image-3.2.0-4-amd64 recommends firmware-linux-free (>= 3~)

Accept this solution? [Y/n/q/?] Y

==>> Postfix configuración => NO CONFIGURATION
==>> Finalmente se instalará un Apache con PVE web: https://your-server.com:8006

  • Verificar que no esten abiertos puertos de IPV6

Basta con comentar los protocolos en /etc/netconfig

root@chkry1 ~ # nano /etc/netconfig

VII. Post configuración

5. Configuración de Redes virtuales con Promox VE

1) Crear 2 redes virtuales de tipo Bridge desde la consola de Proxmox.

  • Name: vmbr0
  • IP address: 10.10.10.1
  • Subnet mask: 255.255.255.0
  • Autostart: checked

  • Name: vmbr1

  • IP address: 192.168.0.1
  • Subnet mask: 255.255.255.0
  • Autostart: checked

Reiniciar para que los cambios sean aplicados.

  • vmbr0, representará mi DMZ y estará NATeada. Publicaremos servidores web, balanceadores, proxies, etc.
  • vmbr1, representaráuna red privada y aislada de internet, aquí ubicaremos DB servers, LDAP servers, etc.
  • También es posible hacerlo editando /etc/network/interfaces.
  • Verificar la existencia de 3 interfaces de red después de reiniciar.
root@chkry1 ~ # ifconfig
eth0 Link encap:Ethernet HWaddr 08:60:6e:68:14:cc
inet addr:144.76.70.175 Bcast:144.76.70.191 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:67937 errors:0 dropped:2098 overruns:0 frame:0
TX packets:48468 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:23352396 (22.2 MiB) TX bytes:37412958 (35.6 MiB)
Interrupt:43 Base address:0x2000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:9141 errors:0 dropped:0 overruns:0 frame:0
TX packets:9141 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:6859893 (6.5 MiB) TX bytes:6859893 (6.5 MiB)

vmbr0 Link encap:Ethernet HWaddr da:ec:a5:7f:fa:59
inet addr:10.10.10.1 Bcast:10.10.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:384 (384.0 B) TX bytes:0 (0.0 B)

vmbr1 Link encap:Ethernet HWaddr 52:3d:18:b6:29:0a
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
  • Por cada VM creada en cualquier subred virtual, aparecerá una nueva interfaz de red virtual:
root@chkry1 ~ # ifconfig

tap100i0 Link encap:Ethernet HWaddr da:ec:a5:7f:fa:59
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

2) Verificar y configurar Kernel

root@chkry1 ~ # nano /etc/sysctl.conf

<h3>Hetzner Online AG installimage</h3>

<h1>sysctl config</h1>

net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.all.proxy_arp=1
net.ipv4.conf.default.proxy_arp=1

3) Configurar hostname, hosts y DNS

nano /etc/hostname
nano /etc/hosts
nano /etc/resolv.conf (también es posible modificarlos desde Proxmox)

6.  Seguridad y Firewall

1) Instalar ShoreWall

root@chkry1 ~ # apt-get install shorewall

2) Configurar ShoreWall para auto-inicio

root@chkry1 ~ # nano /etc/default/shorewall

Cambiar:
    startup = 0
a:
    startup = 1

<strong>3) Continuar configurando ShoreWall</strong>


root@chkry1 ~ # nano /etc/shorewall/shorewall.conf

Cambiar:
IP_FORWARDING=Keep
DISABLE_IPV6=No
a:
IP_FORWARDING=On
DISABLE_IPV6=Yes

4) Configurar las Zones en ShoreWall

root@chkry1 ~ # nano /etc/shorewall/zones

<h1>http://linux.die.net/man/5/shorewall-zones</h1>

#ZONE TYPE OPTIONS IN OUT

<h1>OPTIONS OPTIONS</h1>

fw firewall
net ipv4
loc ipv4
dmz ipv4

5) Configurar las Interfaces en ShoreWall

root@chkry1 ~ # nano /etc/shorewall/interfaces

<h1>http://linux.die.net/man/5/shorewall-interfaces</h1>

#ZONE INTERFACE BROADCAST OPTIONS
net eth0 detect logmartians,tcpflags,nosmurfs
dmz vmbr0 detect logmartians,bridge,routefilter
loc vmbr1 detect logmartians,bridge,routefilter

6) Configurar Policy en ShoreWall

root@chkry1 ~ # nano /etc/shorewall/policy

<h1>http://linux.die.net/man/5/shorewall-policy</h1>

#SOURCE   DEST   POLICY   LOG   LEVEL   LIMIT:BURST

<h1>1. fw - loc</h1>

fw        loc    ACCEPT
loc       fw     ACCEPT

<h1>2. fw - dmz</h1>

fw        dmz    ACCEPT
dmz       fw     DROP     info

<h1>3. fw - net</h1>

fw        net    ACCEPT
net       fw     DROP     info

<h1>4. dmz - net</h1>

dmz       net    ACCEPT
net       dmz    DROP     info

<h1>5. loc - dmz</h1>

loc       dmz    ACCEPT
dmz       loc    DROP     info

<h1>6. loc - net</h1>

loc       net    ACCEPT
net       loc    DROP     info

<h1>THE FOLLOWING POLICY MUST BE LAST</h1>

all       all    REJECT   info

7) Configurar las Rules en ShoreWall

root@chkry1 ~ # nano /etc/shorewall/rules

<h1>http://linux.die.net/man/5/shorewall-rules</h1>

#ACTION    SOURCE    DEST   PROTO     DEST     SOURCE    ORIGINAL    RATE

<h1>PORT     PORT(S)   DEST        LIMIT</h1>

#

<h1>Accept particular connections from Internet</h1>

#

<h1>Permit access to SSH port 4646</h1>

##ACCEPT     net       fw     tcp       22      -         -          6/min:5
ACCEPT     net       fw     tcp       8080      -         -          6/min:5
ACCEPT     net       fw     tcp       4646      -         -          6/min:5

#

<h1>Permit access to Proxmox Manager and Console</h1>

ACCEPT     net       fw     tcp       443,5900:5999,8006

#

<h1>PING Rules</h1>

Ping/ACCEPT all      all

#

<h1>Permit traffic to - certain - VMs in DMZ (via DNAT)</h1>

DNAT        net      dmz:$MY_PROXYWEB_IP   tcp    80
DNAT        net      dmz:$MY_PROXYWEB_IP   tcp    443

#

<h1>LAST LINE -- DO NOT REMOVE</h1>

8) Configurar NAT en ShoreWall

root@chkry1 ~ # nano /etc/shorewall/masq

<h1>implements SNAT on vmbr0</h1>

#INTERFACE SOURCE ADDRESS PROTO PORT(S) IPSEC MARK
eth0 10.10.10.0/24

9) Definir la variable o parámetro MY_PROXYWEB_IP

root@chkry1 ~ # nano /etc/shorewall/params

MY_PROXYWEB_IP=10.10.10.11
#LAST LINE -- DO NOT REMOVE

10) Validar y habilitar la configuración de ShoreWall

Es muy útil para probar antes de aplicarlo permanentemente.

  • Verificar la configuración
root@chkry1 ~ # shorewall check
  • Habilitar la configuración de ShoreWall por 120 segundos
root@chkry1 ~ # shorewall try /etc/shorewall 120s

11) Si todo está OK, reiniciar el servidor o Shorewall

root@chkry1 ~ # shorewall stop
root@chkry1 ~ # shorewall start
root@chkry1 ~ # shorewall restart

VIII. Virtualizando con Proxmox VE

7. Crear una primera VM (Proxy Web)

Previamente hay que descargar una ISO del S.O. de la VM que vamos a crear.

root@chkry1 ~ # cd /var/lib/vz/template/iso/
root@chkry1 /var/lib/vz/template/iso # wget http://ftp.cica.es/CentOS/6.4/isos/x86_64/CentOS-6.4-x86_64-minimal.iso

1) Configurar Red de la VM

[root@chky-apache1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
HWADDR=0a:98:a1:3b:9a:48
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED="yes"
BOOTPROTO=none
IPADDR=10.10.10.11
PREFIX=24
GATEWAY=10.10.10.1
DNS1=213.133.99.99
IPV6INIT=no

2) Configure default gateway y hostname

[root@soadev1 ~]# vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=chky-apache1
GATEWAY=10.10.10.1

3) En el GUEST verificar que la MACs esté asociada a la interface eth0

por ejemplo:

[root@chky-apache1 ~]# nano /etc/udev/rules.d/70-persistent-net.rules

<h1>PCI device 0x8086:0x100e (e1000) (custom name provided by external tool)</h1>

SUBSYSTEM==&quot;net&quot;, ACTION==&quot;add&quot;, DRIVERS==&quot;?<em>&quot;, ATTR{address}==&quot;0a:98:a1:3b:9a:48&quot;, ATTR{type}==&quot;1&quot;, KERNEL==&quot;eth</em>&quot;, NAME=&quot;eth0&quot;

3) Reinicie las interfases de red o la VM

[root@chky-apache1 ~]# /etc/init.d/network restart

4) Instalar Apache

root@chky-apache1 ~]# yum install httpd

5) Set the apache service to start on boot

root@chky-apache1 ~]# chkconfig --levels 235 httpd on

6) Habilite name-based virtual hosting on port 80

No es necesario para proxy web:

“Open the httpd configuration file located at /etc/httpd/conf/httpd.conf
Un-comment the line containing the text NameVirtualHost *:80
Save the file”

7) Restart the Apache HTTP Server daemon

root@chky-apache0 ~]# service httpd restart
  • Ignore the “NameVirtualHost *:80 has no VirtualHosts” warning for now.

8) Añadir la regla a iptables para aceptar tráfico HTTP

[root@chk-apache1 ~]# nano /etc/sysconfig/iptables

…deberia quedar así:


<h1>Firewall configuration written by system-config-firewall</h1>

<h1>Manual customization of this file is not recommended.</h1>

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

9) Reiniciar iptables

[root@chk-apache1 ~]# /etc/init.d/iptables restart

10) Ahora desde un navegador probar lo sgte:

http://your-server.com

11) Configura Apache HTTP como Proxy Web

Finalmente, deberías configurar este Apache HTTP para que haga de Proxy Web a las otras VM que expongan una interfase HTTP

8. Crear una segunda VM (Liferay Portal)

Esta segunda VM será un clone de la primera VM, es posible configurar la RAM, HD, NICs, etc.  fácilmente desde la Consola Web de Proxmox.

1) Instalar Jdk

[root@chk-lfry1 ~]# yum list *java-1* | grep open

java-1.6.0-openjdk.x86_64 1:1.6.0.0-1.62.1.11.11.90.el6_4 updates
java-1.6.0-openjdk-demo.x86_64 1:1.6.0.0-1.62.1.11.11.90.el6_4 updates
java-1.6.0-openjdk-devel.x86_64 1:1.6.0.0-1.62.1.11.11.90.el6_4 updates
java-1.6.0-openjdk-javadoc.x86_64 1:1.6.0.0-1.62.1.11.11.90.el6_4 updates
java-1.6.0-openjdk-src.x86_64 1:1.6.0.0-1.62.1.11.11.90.el6_4 updates
java-1.7.0-openjdk.x86_64 1:1.7.0.25-2.3.10.4.el6_4 updates
java-1.7.0-openjdk-demo.x86_64 1:1.7.0.25-2.3.10.4.el6_4 updates
java-1.7.0-openjdk-devel.x86_64 1:1.7.0.25-2.3.10.4.el6_4 updates
java-1.7.0-openjdk-javadoc.noarch 1:1.7.0.25-2.3.10.4.el6_4 updates
java-1.7.0-openjdk-src.x86_64 1:1.7.0.25-2.3.10.4.el6_4 updates
[root@chk-lfry1 ~]# yum install java-1.6.0-openjdk.x86_64

2) Verificar instalación de JDK

[root@chky-apache0 ~]# java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.11.90) (rhel-1.62.1.11.11.90.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

3) Instalar liferay 6.1.1ga2

[root@chk-lfry1 tempo-files]# wget http://sourceforge.net/projects/lportal/files/Liferay%20Portal/6.1.1%20GA2/liferay-portal-tomcat-6.1.1-ce-ga2-20120731132656558.zip

4) Añadir la regla a iptables para aceptar tráfico HTTP en el puerto 8080, 8009

[root@chk-lfry1 ~]# nano /etc/sysconfig/iptables

…deberia quedar así:


<h1>Firewall configuration written by system-config-firewall</h1>

<h1>Manual customization of this file is not recommended.</h1>

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8009 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

4) Reiniciar IPtables

[root@chk-lfry1 ~]# /etc/init.d/iptables restart

9. Crear una tercera VM (MySQL Server)

De igual forma que la segunda VM, esta tercera VM es, o podría ser, un clone de la primera VM, evidentemente con tamaño de HD diferente, RAM, CPUs/Cores, IP (privada y no en la DMZ), … unas configuraciones fácilmente de hacerlas a través de la Consola Web de Proxmox.

1) Instalar MySQL

[root@chk-mysql1 ~]# yum install mysql-server mysql

2) Hacer que inicie cuando bootee la VM

[root@chk-mysql1 ~]# chkconfig --levels 235 mysqld on

3) Iniciar y acceder a MySQL

service mysqld start
mysql -u root
  • Defina un password para el usuario root para todos los dominios locales:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('piscosour!!');
SET PASSWORD FOR 'root'@'localhost.localdomain' = PASSWORD('piscosour!!');
SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('piscosour!!');
  • Borre el “any user”:
DROP USER ''@'localhost';
DROP USER ''@'localhost.localdomain';
  • Salga de MySQL:
exit

4) Añadir la regla a IPtables para aceptar tráfico MySQL desde chk-lfry1

[root@chk-mysql1 ~]# nano /etc/sysconfig/iptables

…deberia quedar así:


<h1>Firewall configuration written by system-config-firewall</h1>

<h1>Manual customization of this file is not recommended.</h1>

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

4) Reiniciar iptables

[root@chk-mysql1 ~]# /etc/init.d/iptables restart

10. Referencias

  • Disabilitar IPV6:  http://forums.debian.net/viewtopic.php?f=16&t=85551

  • Disabilitar SSH sobre IPV6: http://ubuntu-tutorials.com/2008/01/12/disabling-ssh-connections-on-ipv6/

  • Instalar Proxmox en Hetzner EX4 Server: http://www.wepoca.net/node/42

  • Instalar Apache HTTP: http://dev.antoinesolutions.com/apache-server

  • Instalar MySQL: http://dev.antoinesolutions.com/mysql

@Chilcano

Tagged with: , , , , ,
Posted in Cloud, Linux, PaaS
One comment on “Creando un nube privada “low cost” con Proxmox VE 3.0
  1. sergio says:

    Buen trabajo!!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
%d bloggers like this: