お名前.com VPSでの安価な負荷分散運用とスナップショット&バックアップ
お名前.com VPS(KVM)ではOS稼働イメージのバックアップ機能として、昨年の11月にスナップショット機能が追加された。これによって実運用でのバックアップや利用方法にも広がりが出てきた。本記事では、実運用で多いと思われる複数台構成例をベースに、レンタルDNSを利用したラウンドロビン構成と、スナップショット機能とLVMスナップショットを使ったVPSのバックアップの一連の手順を解説していく。
レンタルDNSによるラウンドロビン構成
お名前.com VPS(KVM)は安価かつ稼働までが迅速という特徴がある。そこでこれをフロントWebサーバーとして利用し、複数台構成や負荷がかかってきたらVPSをさらに追加するという利用方法が想定できる。この構成をできるだけ安価に構築しようとする場合、DNSのラウンドロビンを利用するという手がある。
お名前.comのドメイン名サービスでドメイン名を取得していれば、レンタルDNSを追加費用なしに利用することが可能だ。レンタルDNSとは、ネットワーク的に独立したプライマリとセカンダリの2つのDNSサーバーを利用できるサービスで、DNSサーバーを新たに設置しなくても、基本的なWebサーバーやメールサーバーの運用が可能となる。基本設定はWebブラウザのUIだけで簡単に行えるのも特徴だ。
このレンタルDNSを組み合わせれば、ドメイン取得費用とVPSの費用だけでWebサイトが運営できる。たとえばメモリ1GBプラン×2台+ドメイン名取得で月額2,000円以内に収まる。
サービス名 | 年間費用 |
---|---|
VPS メモリ1GBプラン | 9,999円/年 |
VPS メモリ1GBプラン | 9,999円/年 |
.com/.net/.org/.biz/.infoドメイン | ~920円/年※ |
合計 | ~20,918円 |
支払方法やキャンペーン時期によって多少前後するが、さらにバックアップやバックエンド処理用にメモリ4GBプランを追加したとしても、VPSの費用は合計で月額5千円台で済んでしまう。この構成をベースに運用に必要な手順を解説していこう。
レンタルDNS設定
2台(もしくは3台)のVPSとドメイン名が用意できたら、まずはレンタルDNSで2台のVPSをラウンドロビンする設定を行う。設定の前にVPS側のコントロールパネルでフロントとなる2台のVPSのIPアドレスを控えておく。お名前.comのドメイン管理ツール「ドメインNavi」にアクセスしたら、「ドメイン設定」のタブをクリックして、4段目にあるネームサーバー設定の「DNS関連機能の設定」をクリックする。
そして次の画面では、「DNSレコード設定を利用する」の「設定する」ボタンを押す。
次の画面で取得したドメインを選択して「入力画面へ進む」のボタンを押すと、DNSサーバーの設定が行える。
ここでのポイントは、VPSごとに2つの設定を入れておくことだ。たとえば、「example.com」を取得し、「192.168.1.1」のVPSがあった場合、入力のところで、TYPEはA、ホスト名が空欄の設定と「*」の設定の2つを追加する。これによって、example.comでWebサーバーにアクセスでき、www.example.comやblog.example.comなどでもアクセスできるようになる。wwwとblogなどのサブドメインの違いによる表示内容の切り替えは、VPSのWebサーバー側で設定する。2台のVPSで運用する場合は、ここで合計4つの設定を追加することになる。
冒頭の2行はDNSサーバー(NSレコード)の設定で、下部の「レンタルDNSレコード設定用ネームサーバー設定確認」のチェックを入れればこのような設定になる。2×2の設定を入力し、チェックを入れたら、「確認画面へ進む」ボタンで設定内容を確認し、「設定する」ボタンを押せば完了である。
DNS設定、正引きの確認
DNSの設定がインターネットに広く伝搬するまでには1日程度の時間がかかる場合があるが、プライマリのDNSサーバーではすでに取得したドメイン名でVPSにアクセスできるようになっているので、ここで設定が正しく機能しているか確認する。使うコマンドは、Linuxクライアントの場合はnslookup、Windowsの場合はnslookup.exeである。両者は多少表示に違いがあるものの、操作方法は同じである。
nslookupコマンドを起動したら、そのプロンプトで「server」コマンドを入力し、利用するDNSサーバーとして前述で設定したプライマリDNSサーバーの「01.dnsv.jp」に変更する。
$ nslookup > server 01.dnsv.jp Default server: 01.dnsv.jp Address: 210.157.1.241#53
続いて、設定したドメイン名を単純に入力する。
> example.com Server: 01.dnsv.jp Address: 210.157.1.241#53 Name: example.com Address: 192.168.1.1 Name: example.com Address: 192.168.1.2
まず2つのIPアドレスが表示されていればOKだ。続いて何度か同じドメイン名入力を繰り返し、2つのIPアドレスの表示順番が適度に変更されているか確認しよう。
> example.com Server: 01.dnsv.jp Address: 210.157.1.241#53 Name: example.com Address: 192.168.1.2 ← 先ほどの2番目のIPアドレスのほうが1番目にきている Name: example.com Address: 192.168.1.1
このようにラウンドロビンでIPアドレスが変更されていればOKだ。また、サブドメインについても同様に、www.example.comなど入力して動作を確認しておく。もし期待した動作をしていないようならば、レンタルDNSの設定に戻って確認しよう。
nslookupコマンドを終了させるには「exit」を入力する。
> exit
WindowsのデフォルトDNSを変更して、Webブラウザなどで動作を確認する
DNS設定変更直後は、設定した内容が普段利用しているDNSサーバーまで伝搬するのに時間がかかるため、実際の動作を想定してクライアントのWebブラウザなどでの動作を確認するには少し時間を置く必要がある。Linuxクライアントであれば一時的に/etc/resolv.confでリゾルバ(デフォルトのDNSサーバー)を変更することで比較的容易に想定できるが、Windowsクライアントの場合は少々手順が複雑である。ここでWindowsクライアントでデフォルトDNS設定を変更する手順を示しておこう。
まずコマンドプロンプトを管理者権限で実行する。スタートメニューからコマンドプロンプトのところで右クリックし、「管理者として実行」を選択する。
コマンドプロンプトが起動したら、WindowsクライアントのDNSサーバーを一時的に変更する。設定したプライマリDNSサーバーは「01.dnsv.jp」なので、このIPアドレスを調べる。
> nslookup.exe 01.dnsv.jp サーバー: google-public-dns-a.google.com ← 普段使っているDNSサーバー Address: 8.8.8.8 権限のない回答: 名前: 01.dnsv.jp Address: 210.157.1.241
この場合、IPアドレスは210.157.1.241とわかるので、これをWindowsクライアントのデフォルトDNSサーバーに設定する。Windowsの標準ネットワークインターフェイスは、有線接続であれば「ローカル エリア接続」、無線接続ならば「ワイヤレス ネットワーク接続」となっているので、netshコマンドでこのインターフェイスにDNSサーバーを設定する。
> netsh interface ip set dns "ローカル エリア接続" static 210.157.1.241 primary もしくは > netsh interface ip set dns "ワイヤレス ネットワーク接続" static 210.157.1.241 primary
Windowsクライアントのリゾルバ(デフォルトDNSサーバー)が変更されたかどうかipconfigコマンドで確認する。また念のため、DNSキャッシュも削除しておく。
> ipconfig /all : : DNS サーバー. . . . . . . . . . . : 210.157.1.241 : : > ipconfig /flushdns Windows IP 構成 DNS リゾルバー キャッシュは正常にフラッシュされました。
これでデフォルトのDNSサーバーがドメイン名を設定したDNSサーバーとなるので、以降はWebブラウザでドメイン名でアクセスして確認することが可能になる。
確認したい作業が完了したら、忘れずに設定を戻しておこう。
> netsh interface ip set dns "ローカル エリア接続" static 8.8.8.8 primary もしくは > netsh interface ip set dns "ワイヤレス ネットワーク接続" static 8.8.8.8 primary
セカンダリDNSサーバーも設定している場合は、setの代わりに「add」で設定を追加する。このとき「static」は不要である。
> netsh interface ip add dns "ローカル エリア接続" 8.8.8.8 もしくは > netsh interface ip add dns "ワイヤレス ネットワーク接続" 8.8.8.8