質問: consul はサービスディスカバリツールで、その機能の一つに dns 機能があります。 ``` $ dig @127.0.0.1 -p 8600 my-macbook.local.node.consul # my-macbook.local.node.consul が 127.0.0.1 に解決されている風のリプライ ``` 今、 consul を aws にデプロイしていくことを考えると、 「サーバー上のホスト解決は、 consul が解決できるホスト名については(xxxxx.consul) は consul dns に問い合わせて、それ以外は今まで通り通常のホスト解決を行う」ことをやりたくなりました。 ただ、これを実現するにあたって、一体そもそもどういう構成をとって、 ec2 サーバー上でどのような設定を行えばこれが実現できるのかが、不明瞭であると思っています。 原理的には、 ec2 サーバーに consul 自体をインストールして、(そして consul 自体の設定はおいおいやっていくとして)、あとは ec2 の OS 設定まわりをいじれば、これができるのではないかと思っているのですが、そもそもその設定箇所はどこなのだろう、と思っています。 ### 質問 amazon linux 2 (つまりは、だいたい centos 7) 上で、そのホスト解決の一部分(xxxx.consul)を consul dns から取得するようにするための設定は、どのようになりますでしょうか? * consul 自体はサーバー自体にインストールする予定 * 他のアプリが、たとえば `db_host: mysql.service.consul` みたいな形で、ホスト URL として解決できるようにしたい、というモチベーション。
回答: EC2 上ではない CentOS 7 ですが、 localhost に立てた dnsmasq に問い合わせるように resolv.conf を設定して、 .consul だったら consul に聞きに行くようにしています。 /etc/resolv.conf ``` nameserver 127.0.0.1 nameserver xxx.xxx.xxx.xxx nameserver xxx.xxx.xxx.xxx ``` /etc/dnsmasq.d/consul.conf ``` server=/consul/xxx.xxx.xxx.xxx#8600 ``` 的な。