Я настроил многомашинный Vagrant-файл с двумя виртуальными машинами, действующими как мини-отказоустойчивый активно-пассивный кластер.
Поскольку запущенные службы одинаковы и работают на одном порту, Vagrant не позволяет мне перенаправлять один и тот же порт дважды на моем хосте, поэтому я не могу получить к ним доступ, и Vagrant не сможет успешно запустить вторую виртуальную машину. .
Я попытался обойти переадресацию портов, разместив виртуальные машины в моей реальной сети с public_network
вариант (что-то вроде --net=host
в докере? ), но это не решает проблемы.
Правильный поступок:
установите виртуальные машины в физической сети, дайте им статические IP-адреса и установите маска сети также:
config.vm.define "vm1" do |vm1|
vm1.vm.hostname = "vm1"
vm1.vm.network "public_network", ip: "192.168.x.y", bridge: "wlan0", netmask: "255.255.255.0"
end
config.vm.define "vm2" do |vm2|
vm2.vm.hostname = "vm2"
vm2.vm.network "public_network", ip: "192.168.x.y", bridge: "wlan0", netmask: "255.255.255.0"
end
Таким образом, виртуальные машины выглядят как физические серверы в моей сети, и переадресация портов не требуется (как в докере с --net=host
параметр).
Сначала мои сервисы были доступны только с хоста, на котором работал Vagrant, пока я не понял, что мне нужно предоставить маска сети вариант тоже, и бум, после следующего vagrant reload
любое другое устройство в моей локальной сети теперь также может получить доступ к этим службам.
Я нашел решение через это нить.
Я думаю, что официальные документы Vagrant должны быть обновлены, чтобы включить эту опцию, поскольку я не мог найти ее изначально там, и это очень важно.