したいこと
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サーバーとして使う に書いています。