ROMADay 24

エラー時の備えその3(DNSキャッシュ機能)

More than 3 years have passed since last update.


DNSキャッシュ機能


概要

DNSサーバの情報をキャッシュとしてROMAインスタンスが保存しておく機能

インスタンスがIPアドレスではなくHostName等で作成されている場合の為の機能


  • ( romaA_10001みたいな)
    DNS_cash.png


動き

なんらかの理由で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コマンドを送ることができた!!