お申込み

技術ブログ


ローカルネットワークを使って複数台構成を作ってみよう

20150115-14

こんにちは、ひろのぶ(@hironobu_s)です。

今回はConoHaのローカルネットワークを使って、フロントサーバ1台とバックエンドサーバ1台という構成を作ってみます。今や広く使われている構成でもあり、典型的なのはフロントにWebサーバ、バックエンドにDBサーバという構成です。ConoHaはリリースされた当初から、この構成がVPSで構築できることを特徴の一つとしてお話ししてきました。

私もイベントやセミナーでは、ConoHaのローカルネットワークは大きな特徴としてご紹介しています。ただ、実は技術ブログで構築方法や設定方法などを詳しくご紹介したことがありません。そんなご指摘をいただいたこともありまして(笑)、改めてではありますがこのテーマを取り上げたいと思います。

構成

今回構築するシステムは下記の図のようなものです。一応WebサーバとDBサーバという想定ですが、ネットワークの設定を中心に紹介するので、WebサーバとDBサーバの設定は解説を省略します。

20150115-0

この構成の特徴は、データを格納するDBサーバをインターネット側から切り離すことで、外部からDBサーバへの直接アクセスを防ぎセキュリティを高めることができることです。また、WebサーバとDBサーバを別のサーバで動かすのは、運用上のメリットもあります。

例えばWebサイトを運用してしばらくすると、トラフィックが増えてその負荷対応をする必要が出てくるということがよくあります。その際に、WebサーバとDBサーバが分かれていると、それぞれに適切な対応をとりやすいのです。

スケールアウトとスケールアップ

サーバの性能を向上させるときに、スケールアウトとスケールアップと言う考え方があります。

用語 意味
スケールアップ サーバの性能(CPU、メモリなど)を強化することで、より高い負荷に対応できるようにする手法
スケールアウト サーバの数を増やすことで、より高い負荷に対応できるようにする手法

一般的な話をすると、Webサーバはスケールアウトで対応することが多く、DBサーバはスケールアウトしづらいためスケールアップで対応するケースが多いです。DBサーバ(特にRDBMSの場合)は、強力な排他制御やトランザクション処理を保証する必要があるため、スケールアウトのようなサーバを分散するアプローチが取りにくいためです。

このように、WebサーバとDBサーバでは負荷対応をするときのアプローチが変わってきます。これはそのまま、WebサーバとDBサーバを分けて構築する理由になります。

構築してみよう

では構築してみましょう。

VPSの追加

まずConoHaコントロールパネルからVPSを2台追加します。

20150115-1

追加すると以下のようになります。VPSのステータスが「稼働中」になっていますが、ローカルネットワークを割り当てるためVPSを一度停止します。VPS左側のチェックを入れ「シャットダウン」をクリックしてください。

20150115-2

以下のようにVPSのステータスが「停止」になります。

20150115-3

ローカルネットワークの作成

NOTE: 既にローカルネットワークをご利用中のお客様は、このステップを飛ばしてください。

次にローカルネットワークを追加します。メニューから「サービス」→「ローカルネットワークを選択します」。

20150115-4

「ローカルネットワークの追加」を選択します。

20150115-5

セグメントはどれを選んでも構築できますが、今回は「192.168.0.0/24」を選択します。

20150115-6

ローカルネットワークが作成されました。しばらくすると設定が完了します。

20150115-7

ローカルネットワークを割り当てる

次にVPSにローカルネットワークを割り当てます。

ConoHaではVPSを起動すると、デフォルトでグローバル側(インターネット側)のネットワークは自動的に割り当てられますが、ローカルネットワーク側はユーザが選択して個別に設定する必要があります。

20150115-8

20150115-9

割り当てるローカルネットワークを選択する画面になります。一つしかありませんので、そのまま「確認」->「決定」と進めてください。

20150115-10

ローカルネットワークが「設定済」になりました。これを両方のVPSで行います。

20150115-11

VPSを起動する

これでコントロールパネルから行う設定はすべて完了です。VPSを起動しましょう。

20150115-12

サーバの設定

さぁ、いよいよサーバの設定に移ります。

最初に書いたとおり、今回はネットワークの設定に絞ってご紹介します。WebサーバやDBサーバをインストールする方法は割愛します。

NOTE: ネットワークの設定を誤ると、VPSへのSSH接続ができなくなることがあります。その場合はConoHaのコントロールパネルにあるコンソールを使えば接続ができます。慌てず設定を確認して復旧してください

VPSにログインする

まずSSHで2台のサーバにログインしましょう。以下のガイドを参考にしてください。

ネットワークインターフェイスが追加されていることを確認します。

先ほどコントロールパネルからローカルネットワークの設定をしましたが、ちゃんとVPSに反映されているかを確認します。

以下のコマンドを実行してみましょう。

以下のようにeth1が表示されればOKです。

eth1にネットワークの設定を行う

ネットワークインターフェイスは認識されていますが、IPアドレスが設定されていないので、このままではIP通信ができません。設定を変更してIPアドレスを割り当てましょう。

ConoHaのローカルネットワークで使用できるIPアドレスレンジは、以下のドキュメントにあります。xxx.xxx.xxx.11からxxx.xxx.xxx.254までが利用できます。1〜10は管理用に予約されていて、使用できませんので注意してください。

今回はVPSが2台なので、特にこだわりが無ければ192.168.0.11と192.168.0.12を使えば良いでしょう。

ローカルネットワーク設定例(標準プラン)

ConoHaの標準OSはCentOSなので、設定ファイルは/etc/sysconfig/network-scripts/の配下にあります。ifcfg-eth0をifcfg-eth1にコピーして、内容を編集します。(ここではエディタとしてvimを使っていますが、もちろん他のエディタでも問題ありません)

以下のようにします。IPアドレスはサーバ毎に別々の値を入れます。

設定ファイルを記述したらネットワークをリスタートします。

これでIPアドレスが割り当てられたので、確認してみましょう。ipコマンドに引数addrをつけると、インターフェイス毎にIPアドレスなどが表示されます。

以下のようにinetのところにIPアドレスが表示されていればOKです。

ローカルネットワークの疎通確認をする

ネットワークの設定はできました。ちゃんと通信できるでしょうか? おなじみのpingで確認してみましょう。

なお、自分自身へのpingと相手サーバへのping、両方を確認しましょう。以下のようにpingが通れば設定完了です。

バックエンド側のサーバにSSH接続する

これでローカルネットワークで2台のVPSが接続されました。次のステップとして、バックエンドサーバとして使うVPSの、グローバル側(インターネット側)のネットワークインターフェイスを切断します。

しかし、こうすることで一つ問題が出てきます。バックエンドとして使うサーバに、インターネット側からSSHでログインできなくなってしまいます。なので、バックエンドサーバにSSH接続するには、まずフロントエンドサーバにSSHでログインして、そこからさらにバックエンドサーバにSSH接続を行うようにします。

20150115-13

バックエンドサーバにSSH接続する際は、プライベートIPアドレスを指定することに注意してください。

SSHの設定で回避する

このままでも問題は無いのですが、バックエンドサーバへの接続に2回もsshコマンドを叩くのはやや面倒です。OpenSSHを使用する場合は、~/.ssh/configファイルに以下のように記述すると、一度でバックエンドサーバに接続ができます。

(秘密鍵ファイルが~/.ssh/conoha.keyにあるものとしています)

ProxyCommandと言うディレクティブが出てきました。これはProxy先のサーバ(今回の場合はバックエンドサーバ)に接続するために使用されるコマンドを指定します。%hと%pは接続先ホストの情報に置換され、今回の場合はバックエンドサーバのプライベートIPアドレスに置換されます。詳しくはマニュアルをご確認ください。

SSH_CONFIG (5)

この設定を行うことで、バックエンドサーバに対し、フロントエンドサーバ経由のローカルネットワーク接続でSSH接続ができます(文章にするとややこしいですが・・・)。

以下のコマンドを実行してみてください。

無事にログインできたらlastコマンドを実行してみてください。

接続元IPアドレスが、ローカルネットワークになっていることが確認できます。

バックエンドサーバのグローバル側ネットワークを切断する

ローカルネットワーク経由でバックエンドサーバに接続ができました。最後にバックエンドサーバのグローバル側ネットワークを切り離します。設定ファイルは/etc/sysconfig/network-scriptsのifcfg-eth0です。

ファイルの内容を以下のようにします。といっても、変更部分はONBOOT=”yes”となっている部分を”no”に変更するだけです。

設定ファイルを記述したらネットワークをリスタートします。

これでグローバル側のネットワークインターフェイスが無効になりました。ipコマンドで確認してみましょう。

以下のようにeth0が無効になっていて、IPアドレスも割り当てられていません。

おわりに

ローカルネットワークはConoHaの大きな特徴の一つで、オンプレミスのような環境をVPSでも構築することができます。ネットワーク帯域も(ベストエフォートではありますが)1Gbpsなので、高速な通信が可能です。

また、あまり知られていませんが、ローカルネットワークは2セグメントまで作成することができます。ConoHaで複数のシステムを運用する場合に、別々のローカルネットワークを組むことができます。

なんと言っても無料でお使いいただけます:) まだ試したことがない方は是非使ってみてください。

執筆者紹介: ひろのぶ @hironobu_s (テクニカルエバンジェリスト)

フロントの開発したり、デーモン書いたり、Linux弄ったり、サーバの面倒見たり、イベントの企画したり、いろいろ屋さんです。現職で社内システムの開発運用や、自社プロダクトの開発業務に従事してきました。

 

1,500円分の無料クーポン付いてくる ConoHa のご入会はこちらから

アカウント登録(無料)
ConoHa byGMO