DNSキャッシュ機能
概要
DNSサーバの情報をキャッシュとしてROMAインスタンスが保存しておく機能
インスタンスがIPアドレスではなくHostName等で作成されている場合の為の機能
動き
なんらかの理由でDNSサーバとのアクセスが出来なくなった場合、IPアドレスでもFQDNでもない名前のinstanceの場合、ROMAが別サーバにあるinstanceにアクセスできなくなってしまう
↓
これを防ぐため、ROMA起動時にDNSの情報をキャッシュとして各instanceに保持し、このデータを基に通信を行う
↓
不足の事態でDNSサーバがダウンしてもROMAのinstance間の通信は担保される!!
使い方
configで設定する方法
DNS_CAHINGの値をtrueにする
config.rb
.
.
# lookup hostname to the nameserver everytime or only first time.
# if set true, the result of lookup will keep.
DNS_CACHING = true
.
.
動的変更コマンド
ROMA起動後にROMAを止めずに変更したい場合は、以下のコマンドを実行
> switch_dns_caching [on|off]
Example
条件
- IPアドレスでもFQDNでもない名前でインスタンスを作成する (今回は以下のように作成)
- インスタンス
- vm1_20001
- vm1_20002
- vm2_20001
- vm2_20002
- サーバ
- vm1( 192.168.223.2 )
- vm1( 192.168.223.3 )
- /etc/hosts
以下のように追記
192.168.223.2 vm1
192.168.223.3 vm2
確認
DNSキャッシュ機能offの場合
vm1サーバにて
# vi /etc/hosts
###以下の行を削除する
192.168.223.3 vm2
$ telnet vm1 20001
> balse
{"vm1_20002"=>"BYE", "vm2_20001"=>nil, "vm2_20002"=>nil, "vm1_20001"=>"BYE"}
自サーバ内のvm1のサーバはbalse(クラスター終了コマンド)を受け取っているが、vm2は送り先がわからずnilになっている
DNSキャッシュ機能onの場合
vm1サーバにて
# vi /etc/hosts
###以下の行を削除する
192.168.223.3 vm2
$ telnet vm1 20001
> balse
{"vm1_20002"=>"BYE", "vm2_20001"=>nil, "vm2_20002"=>nil, "vm1_20001"=>"BYE"}
/etc/hostsを削除したが、instance自体にDNS情報を保存しているのでその情報に基づいてvm2にも正常にbalseコマンドを送ることができた!!