目次

「これは2015年5月17日以前にアカウント登録されたお客様向けの記事です。」

STEP1

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

ConoHaのローカルネットワークは大きな特徴としてご紹介しています。改めてではありますがこのテーマを取り上げたいと思います。

構成

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

STEP2

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

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

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

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


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

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

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

構築してみよう

VPSの追加

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

STEP3

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

STEP4

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

STEP5

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

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

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

STEP6

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

STEP7

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

STEP8

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

STEP9

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

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

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

STEP10

STEP11

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

STEP12

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

STEP13

VPSを起動する

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

STEP14

サーバの設定

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

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

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

VPSにログインする

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

 ・SSH・リモートデスクトップ接続情報

 ・SSH接続設定例:TeraTerm

 ・SSH接続設定例:Poderosa

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

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

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

ip link

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

3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether fa:16:3e:3c:e0:c1 brd ff:ff:ff:ff:ff:ff

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を使っていますが、もちろん他のエディタでも問題ありません)

# ディレクトリ移動
cd /etc/sysconfig/network-scripts

# ファイルをコピー
cp ifcfg-eth0 ifcfg-eth1

# 編集開始
vim ifcfg-eth1

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

DEVICE="eth1"
BOOTPROTO="none"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR="[IPアドレス]"
NETMASK="255.255.255.0"

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

service network restart

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

ip addr

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

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether fa:16:3e:3b:f6:31 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.12/24 brd 192.168.0.255 scope global eth1
    inet6 fe80::f816:3eff:fe3b:f631/64 scope link tentative dadfailed
       valid_lft forever preferred_lft forever

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

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

ping [IPアドレス]

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

[root@vps]# ping -c 5 192.168.0.11
PING 192.168.0.11 (192.168.0.11) 56(84) bytes of data.
64 bytes from 192.168.0.11: icmp_seq=1 ttl=64 time=0.027 ms
64 bytes from 192.168.0.11: icmp_seq=2 ttl=64 time=0.047 ms
64 bytes from 192.168.0.11: icmp_seq=3 ttl=64 time=0.064 ms
64 bytes from 192.168.0.11: icmp_seq=4 ttl=64 time=0.050 ms
64 bytes from 192.168.0.11: icmp_seq=5 ttl=64 time=0.045 ms

--- 192.168.0.11 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.027/0.046/0.064/0.014 ms

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

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

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

STEP15

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

SSHの設定で回避する

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

Host [フロントエンドサーバのグローバルIPアドレス]
  IdentityFile ~/.ssh/conoha.key

Host [バックエンドサーバのグローバルIPアドレス]
  Hostname [バックエンドサーバのプライベートIPアドレス]
  IdentityFile ~/.ssh/conoha.key
  ProxyCommand ssh -W %h:%p [フロントエンドサーバのグローバルIPアドレス]

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

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

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

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

ssh [バックエンドサーバのグローバルIPアドレス]

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

[root@vps]# last
root     pts/1        192.168.0.11     Mon Jan 19 18:05 - 18:08  (00:02)

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

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

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

# ディレクトリ移動
cd /etc/sysconfig/network-scripts

# 編集開始
vim ifcfg-eth0

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

DEVICE="eth0"
BOOTPROTO="dhcp"
DHCPV6C="yes"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
NM_CONTROLLED="yes"
ONBOOT="no"
TYPE="Ethernet"

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

service network restart

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

ip addr

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

[root@vps]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether fa:16:3e:3c:e0:b0 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether fa:16:3e:3c:e0:b1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.12/24 brd 192.168.0.255 scope global eth1
    inet6 fe80::f816:3eff:fe3c:e0b1/64 scope link tentative dadfailed
       valid_lft forever preferred_lft forever

おわりに

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

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

まだ試したことがない方は是非使ってみてください。

問題は解決できましたか?

お役立ち情報

ConoHaではサポートコンテンツの他にも以下のようなお役立ち情報をご用意しております。ぜひご活用ください。