Я начинаю с Vagrant и пытаюсь создать кластер с входным узлом и двумя другими узлами. Должно получиться так:

                   --------      eth1            -------- 
           eth0   |        |  17.6.17.10        |        |
 internet ------->| master |-------|------------| slave1 |
                  |        |       | 17.6.17.2  |        |
                   --------        |   eth0      --------
                                   |             
                     17.6.17.0/24  |   eth0      --------
                                   | 17.6.17.3  |        |
                                   |------------| slave2 |
                                                |        |
                                                 --------

Мой Vagrantfile это:

Vagrant.configure("2") do |config|
        config.vm.box = "generic/ubuntu1604"

        config.vm.define "master", primary: true do |master|
                master.vm.network "private_network", ip: "17.6.17.10"
                master.vm.hostname = "master"            
        end 

        config.vm.define "slave1" do |slave1|
                slave1.vm.network "private_network", ip: "17.6.17.2"
                slave1.vm.hostname = "slave1"
        end 

        config.vm.define "slave2" do |slave2|
                slave2.vm.network "private_network", ip: "17.6.17.3"
                slave2.vm.hostname = "slave2"
        end
end

Моя конфигурация создает три машины с общей сетью, и все они подключены к Интернету. Я хочу изолировать slave1 и slave2 и использовать master в качестве шлюза для интернет-соединений. Как мне это сделать?

0
Javier Benitez 6 Янв 2018 в 13:55

2 ответа

Лучший ответ

Вам просто нужно удалить сетевые маршруты по умолчанию для каждого хоста и добавить свои собственные, которые соответствуют желаемой конфигурации маршрутизации, см. примеры в этой статье.

Например, чтобы изолировать ведомое устройство и направить трафик через ведущее устройство, вам необходимо сделать что-то вроде следующего:

config.vm.define "slave1" do |slave1|
  slave1.vm.network "private_network", ip: "17.6.17.2"
  slave1.vm.hostname = "slave1"
  slave1.vm.provision "shell", run: "always", inline: "route del default"
  slave1.vm.provision "shell", run: "always", inline: "route add default gw 17.6.17.10"
end 

Для окончательной конфигурации вам необходимо настроить балансировщик нагрузки и, возможно, адаптировать правила маршрутизации, добавить дополнительный интерфейс и т. Д. На ведущем устройстве, я думаю, это зависит именно от того, что вы хотите сделать.

1
Christoffer Soop 1 Окт 2019 в 20:52

Я нашел ответ здесь.

Вероятно, невозможно изолировать, потому что Vagrant нуждается в этом интерфейсе.

0
Javier Benitez 13 Янв 2018 в 13:28