

[consul](https://www.consul.io/) はサービスディスカバリツールで、その機能の一つに dns 機能があります。

[code]

    $ dig @127.0.0.1 -p 8600 my-macbook.local.node.consul
    # my-macbook.local.node.consul が 127.0.0.1 に解決されている風のリプライ
    
[/code]

今、 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 として解決できるようにしたい、というモチベーション。


CC BY-SA 4.0
2019-04-26T02:29:01.827
54489
2019-04-26T02:59:19.577
754
question
linux centos dns amazon-linux
amazon linux 2 (centos 7 系) で、 consul の DNS をホスト解決に組み入れたい


EC2 上ではない CentOS 7 ですが、 localhost に立てた dnsmasq に問い合わせるように resolv.conf を設定して、
.consul だったら consul に聞きに行くようにしています。

/etc/resolv.conf

[code]

    nameserver 127.0.0.1
    nameserver xxx.xxx.xxx.xxx
    nameserver xxx.xxx.xxx.xxx
    
[/code]

/etc/dnsmasq.d/consul.conf

[code]

    server=/consul/xxx.xxx.xxx.xxx#8600
    
[/code]

的な。


CC BY-SA 4.0
2019-04-26T02:59:19.577
54492
2019-04-26T02:59:19.577
17037
54489
answer