「マイクロサービス」の環境を作ろうとしてきました。主要なコンポーネントの 2 つはDockerとConsulで、どちらも仮想マシン上で実行されます (この VM の作成にはVagrantを使用しました)。VM に SSH で接続すると、digコマンド ライン ツールを使用して、 Consulが提供する DNS インターフェイスにアクセスできます。
問題は、ホスト マシンから DNS インターフェイスにアクセスできるようにしたいということです。VM に静的 IP を割り当てましたが、問題は解決しませんでした。VM のポート 53 も開いていますが、問題は解決しませんでした。
これは、私の vm 用のVagrantセットアップ スクリプトです。
config.vm.define :app1 do |app1|
# Every Vagrant virtual environment requires a box to build off of.
app1.vm.box = "ubuntu/trusty64"
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
app1.vm.network :forwarded_port, guest: 3000, host: 3000
app1.vm.network :forwarded_port, guest: 53, host: 53
app1.vm.network :forwarded_port, guest: 8500, host: 8500
app1.vm.network :forwarded_port, guest: 15672, host: 15672
# Open 32 ports for Docker containers
for port in 32768..32800
app1.vm.network :forwarded_port, guest: port, host: port
end
# Create a private network, which allows host-only access to the machine
# using a specific IP.
app1.vm.network :private_network, ip: "200.0.0.1"
app1.vm.hostname = "server-1"
config.vm.provider "virtualbox" do |v|
v.memory = 1024
end
これは、 ConsulでDocker コンテナーを開始した方法です。
sudo docker run --name consul -h $HOSTNAME -p 0.0.0.0:8300:8300 -p 0.0.0.0:8301:8301 -p 0.0.0.0:8301:8301/udp -p 0.0.0.0:8302:8302 -p 0.0.0.0:8302:8302/udp -p 0.0.0.0:8400:8400 -p 0.0.0.0:8500:8500 -p 0.0.0.0:53:53 -p 0.0.0.0:53:53/udp -d progrium/consul -advertise 200.0.0.1 -server -bootstrap
ホストマシンからのdigで次を使用してみました:
dig @200.0.0.1 someservice.service.consul SRV
これは次のように応答しました。
; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> @200.0.0.1 someservice.service.consul ANY
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
ホスト マシンからConsul DNS インターフェイスにアクセスできるようにする方法はありますか? どんな助けでも大歓迎です。