Comunicación entre máquinas en un entorno multi-máquina


Comunicación entre máquinas en un entorno multi-máquina

Comunicación entre máquinas en un entorno multi-máquina
oscar Escrito por oscar 27 April 2025 74 0

En este post aprenderás a realizar la comunicación entre máquinas en un entorno multi-máquina, donde configuraremos los host y realzaremos un test con ping

📡 Comunicación entre máquinas en Vagrant

Cuando tienes varias máquinas en un Vagrantfile, pueden comunicarse entre ellas si cumplen estas condiciones:

Comunicación ente máquinas virtuales
Comunicación ente máquinas virtuales
  • Están en la misma red privada (private_network) o red pública (public_network).
  • Tienen IPs asignadas y pueden resolverse entre ellas.

Esto simula una red real, como si fueran dos PCs conectadas a un switch.

🛠️Crear un proyecto

Procedemos a crear un proyecto en vagrant como lo explico en primeros pasos con vagrant, creamos un directorio llamado proyecto-vagrant y ejecutamos:

vagrant init

Esto creara en el directorio el archivo proyecto-vagrant vagrantfile el cual vamos a agregar el box "ubuntu/bionic64" de momento, nos deberá quedar de la siguiente forma:

Vagrant.configure("2") do |config| 
  config.vm.box = "ubuntu/bionic64"
end

Iniciamos vagrant

vagrant up

Vemos que ha creado la maquina virtual en virtualbox y vemos que por defecto a dejado las siguientes caracteristicas en esta máquina virtual.

🧱 Ejemplo práctico

Procedemos a editar el vagrantfile creado, para mas información revisar el post Configuración de múltiples máquinas en un solo Vagrantfile 

Vagrant.configure("2") do |config| 
  config.vm.define "web" do |web| 
    web.vm.box = "hashicorp/bionic64" 
    web.vm.hostname = "webserver" 
    web.vm.network "private_network", ip: "192.168.56.10" 
  end 
  config.vm.define "db" do |db| 
    db.vm.box = "hashicorp/bionic64" 
    db.vm.hostname = "dbserver" 
    db.vm.network "private_network", ip: "192.168.56.11" 
  end 
end

✅ Aquí:

  • La máquina web tiene IP 192.168.56.10
  • La máquina db tiene IP 192.168.56.11
  • Ambas están en la misma red privada.

🔥 ¿Cómo se comunican?

Levantas las máquinas:  

vagrant up

Te conectas a una máquina (por ejemplo web):  

vagrant ssh web

Desde dentro de web, puedes hacer ping o conectarte a db:  

ping 192.168.56.11

Si el dbserver tiene servicios corriendo (como MySQL o PostgreSQL), la webserver puede conectarse usando esa IP.

🎯 Mejorar la comunicación usando nombres (hostnames)

Además de IPs, puedes configurarlo para que resuelvan nombres de host.
En Linux, puedes editar el archivo /etc/hosts automáticamente o manualmente.

Vagrant no edita /etc/hosts por defecto, pero puedes usar el plugin vagrant-hostmanager para facilitarlo.

Por ejemplo, instalarlo:  

vagrant plugin install vagrant-hostmanager

Y luego agregar en el Vagrantfile:

config.hostmanager.enabled = true 
config.hostmanager.manage_host = true 
config.hostmanager.include_offline = true

Así, desde web podrías hacer:  

ping dbserver

¡Y resolvería automáticamente!

🧠 ¿Qué puedes montar en un entorno multi-máquina?

  • Servidor Web (Apache, Nginx)
  • Base de Datos (MySQL, PostgreSQL)
  • Servidor de Aplicaciones
  • Balanceador de Carga
  • Ambiente de Microservicios

Cada máquina cumple un rol y se comunican como si estuvieras montando una infraestructura real.

⚡ Resumen de pasos

Paso Acción
1 Definir IPs privadas en el Vagrantfile
2 Levantar las máquinas (vagrant up)
3 Conectarse entre ellas por IP o nombre (usando ping, curl, bases de datos, etc.)
4 (Opcional) Usar plugins como vagrant-hostmanager para facilitar la resolución de nombres

Comentario

Debe aceptar antes de enviar