Help us understand the problem. What is going on with this article?

エラー時の備えその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コマンドを送ることができた!!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away