Comunicación entre máquinas en un entorno multi-máquina
Comunicación entre máquinas en un entorno multi-máquina
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:
- 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 |