如何隔离Vagrant集群上的节点?

时间:2018-01-06 10:56:00

标签: vagrant vagrantfile libvirt

我从Vagrant开始,我正在尝试设计一个带有入口节点和其他2个节点的集群。它应该看起来像:

                   --------      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作为Internet连接的网关。我该怎么办?

2 个答案:

答案 0 :(得分:1)

您只需要删除每个主机的默认网络路由,并添加与您想要的路由配置相对应的自己的网络,请参见。 examples in this writeup

例如,要隔离从站并通过主站路由流量,您需要执行以下操作:

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 :(得分:0)

我找到了回复here

很可能无法隔离,因为Vagrant需要该接口。

相关问题