2016-12-30 12 views
0

consulをAWS EC2にインストールしました.3台のサーバーと1台のクライアントがあります。リモートでconsulにアクセスするためのDNS設定

サーバIP = 11.XX.XX.1,11.XX.XX.2,11.XX.XX.3。 クライアントIP = 11.XX.XX.4

consul設定:

Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address   Foreign Address   State  PID/Program name 
tcp  0  0 127.0.0.1:8400   0.0.0.0:*    LISTEN  29720/consul  
tcp  0  0 0.0.0.0:22    0.0.0.0:*    LISTEN  1006/sshd  
tcp  0  0 127.0.0.1:8600   0.0.0.0:*    LISTEN  29720/consul  
tcp6  0  0 :::8301     :::*     LISTEN  29720/consul  
tcp6  0  0 :::8302     :::*     LISTEN  29720/consul  
tcp6  0  0 :::8500     :::*     LISTEN  29720/consul  
tcp6  0  0 :::22     :::*     LISTEN  1006/sshd  
tcp6  0  0 :::8300     :::*     LISTEN  29720/consul 

curl:サーバー上の

{ 
    "bootstrap": false, 
    "server": true, 
    "datacenter": "abc", 
    "advertise_addr": "11.XX.XX.1", 
    "data_dir": "/var/consul", 
    "log_level": "INFO", 
    "enable_syslog": true, 
    "addresses": { 
    "http": "0.0.0.0" 
    }, 
    "start_join": ["11.XX.XX.2", "11.XX.XX.3"] 
} 

netstat出力/etc/consul.d/server/config.jsonリモートマシンから正常に動作していますが、はローカルマシン上でのみ動作しています。

; <<>> DiG 9.9.5-3ubuntu0.6-Ubuntu <<>> @127.0.0.1 -p 8600 web.service.consul 
; (1 server found) 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40873 
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; WARNING: recursion requested but not available 

;; QUESTION SECTION: 
;web.service.consul.  IN A 

;; ANSWER SECTION: 
web.service.consul. 0 IN A 11.XX.XX.4 

;; Query time: 0 msec 
;; SERVER: 127.0.0.1#8600(127.0.0.1) 
;; WHEN: Fri Dec 30 08:21:41 UTC 2016 
;; MSG SIZE rcvd: 52 

しかしは、リモートマシンから作業していません。

dig @11.XX.XX.1 -p 8600 web.service.consul 

; <<>> DiG 9.9.5-3ubuntu0.6-Ubuntu <<>> @11.XX.XX.1 -p 8600 web.service.consul 
; (1 server found) 
;; global options: +cmd 
;; connection timed out; no servers could be reached 
----------------------------- 

それを動作させるには?

答えて

0

デフォルトでは、consulはインスタンスループバックデバイス上のDNS接続だけをリッスンします。ベストプラクティスでは、領事DNSを使用することを望むリモートマシンにクライアントをインストールするように求められます。これは必ずしも実用的ではありません。

私が見ている人はそうのような領事の設定JSON経由ですべてのインターフェイス上のDNS(領事ポート8600)を露出:

{ 
    "server": true, 
    "addresses": { 
    "dns": "0.0.0.0" 
    } 
} 

あなたはまた、すべてのポートがJSONまたはパスでCLIENT_ADDRフィールドでループバックをリッスンして公開することができますそれにコマンドライン経由:

https://www.consul.io/docs/agent/options.html

consul agent -client 0.0.0.0 

微調整するために利用できるより多くのコントロールとノブは(ドキュメントを参照)があります

+0

すべてのインターフェイスでDNSを公開すると、それはどういう意味ですか? –

+0

AWSが上書きするので、resolv.confに問題があると思います。 –

+0

ループバックインターフェイス上のすべてのものは、実行中のマシンでのみ使用できます。デフォルトでは、Consul DNSはループバックデバイスでのみリッスンします。そのため、他のインスタンスからのdigでDNSにアクセスすることができません。すべてのインターフェイスでDNSを公開するとConsulアプリケーションに、すべてのインターフェイス(制限付きループバックデバイスだけでなく)の受信DNS要求をリッスンするように指示します。これにより、他のインスタンスは通常のIPを使用してこのインスタンスと通信できます。もちろん、これは2つのインスタンス間のファイアウォールや接続の問題を排除しています。 – thun

関連する問題