したいこと
Consulに登録したサービス名で $ host xxx とか、$ curl xxx, $ ping xxx みたいに、Unix OSから普通にアクセスしたい。
note
-
sudoとかは省略してます - Amazon Linux (AWS) で試しています
- 簡単の為
/etc/resolv.confを直接弄っています (あまり良くない) - Amazon Linuxの
/etc/resolv.confはnetwork再起動で元に戻っちゃいます
手順
docker-consul が無いと始まらないので、Runする.
$ docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 --name consul progrium/consul -server -bootstrap -ui-dir /ui
立ち上がったdocker containerのIPを知りたい.
$ docker inspect -f '{{.NetworkSettings.IPAddress}}' consul
172.17.0.1
ConsulのIPを /etc/resolv.conf に nameserver xxx.xxx.xxx.xxx と書く.
Consulが管理するドメインが service.dc1.consul なので、search ... に追記する.
; generated by /sbin/dhclient-script
search ap-northeast-1.compute.internal service.dc1.consul ; service.dc1.consulを追加.
nameserver 172.17.0.1 ; この行を追加.
nameserver 172.31.0.2
Amazon Linuxの場合、ConsulのIPを既存のnameserver
172.31.0.2より先に記述しないと、名前解決できなかった。
アクセスしてみる
$ host any-service-name
any-service-name.service.dc1.consul has address 172.17.0.2
サービスの登録方法は?
ConsulをDNSサーバーとして使う に書いています。