スイッチを使ってローカルネットワークを構築してみよう - 「楽しいさくらのクラウド」(5)
連載「楽しいさくらのクラウド」、前回の「サーバを拡張してみよう」では、作成済みサーバのハードウェア構成を変更する方法について解説しました。ハードウェアが仮想化され、これらの構成情報もソフトウェア的に定義されているさくらのクラウドでは、CPUやディスクといった要素ごとに、スペックを変更したり新たな追加が簡単にできるのも大きな魅力のひとつです。
第5回目となる今回は、サーバを複数台用意し、それらを相互にネットワークを介して接続する方法について解説します。いよいよスイッチを作成しクラウド上でネットワーク構築を行う工程が登場しますが、サーバと同様にスイッチやネットワーク回線も仮想化されているので、作成や変更も簡単かつ短時間に行うことが可能です。
今回は、グローバルネットワークから隔離されたローカルネットワークを1つ作成し、このネットワークに複数のサーバを接続する構成を構築します(ルータを使用したり、複数のグローバルIPアドレスを割り当てるネットワーク構築については次回以降に解説する予定です)。また、構築直後はグローバルネットワークから直接操作のできないローカルネットワーク側のサーバの設定を進める必要があるため、コントロールパネル上からコンソール画面の操作が行える「モニタ」機能についても触れておきます。
1. ネットワーク構成を計画する
まず最初に、これまでの連載の通り最終的にどのような構成にしたいかを作図してみます。
前回までに作成したサーバの他に新たなサーバを1台作成し、この2台のサーバをスイッチを介して接続する構成となります。今回からはネットワークの作成も行うので、あらかじめネットマスクや各サーバに割り当てるIPアドレスなどのネットワーク情報も決めておき、構成図に付記しておくと便利です。また、構成図はそれぞれのネットワークが分かりやすいように、上にグローバルネットワーク、下にローカルネットワークを配置しました。
このような構成を採用する例としてよく挙げられるのが、グローバル回線を接続した側のサーバをWebサーバなどのフロントエンドサーバとし、グローバルネットワーク側から直接アクセスができないローカルネットワーク側にデータベースサーバなどのバックエンドサーバを設置するケースです。ネットワーク接続構成が固定されてしまったり、変更の際に手間と時間のかかる従来の物理構成中心のサービスなどでは実現の難しいこのような構成でも、さくらのクラウドであればユーザ側の要求に沿ってすぐに構築することが可能です。
追加が必要なリソース
構成図を元に、新たに作成が必要となるリソースを洗い出します。
- サーバ(1CPU, 1GBメモリ, 20GB SSD, NIC 1枚) 1台
- スイッチ 1台
構築作業の流れ
今回の計画を進めるにあたって必要な情報が揃いましたので、これより構築作業を進めていきましょう。効率よく進めていくため、作業は以下の手順としました。
- 追加するリソースの新規作成
- 作成済みサーバの停止
- コントロールパネルでのネットワーク構成
- 新たに作成したローカルネットワーク用のサーバ設定
このように、さくらのクラウド内の環境では各リソースが仮想化された状態となっているだけで、ネットワーク構成変更の手順としては物理構成の場合と大きな変わりはありません。
2. スイッチを作成する
まずは今回新たに使用するリソース「スイッチ」を作成します。「スイッチ」は仮想化されたEthernetスイッチで、仮想サーバ側のEthernetインタフェースを複数接続し、それぞれのサーバを相互に通信させることが可能となります。
画面上部メインメニュー内の「ネットワーク」をクリックすると、メイン画面に「スイッチ一覧」が表示されます。この一覧画面では、作成済みのスイッチがすべて表示されますが、現在は1台も作成していないので何も表示されません。新たにスイッチを作成するため、右上の「追加」ボタンをクリックします。
ルータ機能のないスイッチの追加画面では、特に設定項目はありません。必要に応じて「名前」や「説明」の項目を記入し、「ルータ」の選択が「いいえ」になっている(作成画面のデフォルトでは「いいえ」)ことを確認し、「作成」ボタンをクリックします。
作成完了後、再度スイッチ一覧画面を表示すると、作成されたスイッチが表示されます。
また、一覧表示されたそれぞれのスイッチをダブルクリックすると詳細画面が表示されます。「情報」タブでの名前や説明の確認と編集ができます。
他にもアプライアンスやブリッジといったタブも表示されますが、これらについては次回以降に触れる予定です。
3. ローカルネットワーク内のサーバを作成する
構成図で計画した通り、ローカルネットワークを作成し、そこにグローバル側回線に接続しないサーバを作成します。ここではサーバの名前を「バックエンドサーバ#1」としました。
サーバ作成時の設定項目は「第3回 サーバを作ってみよう」で解説したものと同様ですが、グローバル側のネットワークには接続しないので、「NIC」の設定項目は「切断」(サーバにNICの取り付けはするがどのネットワークにも接続しない)を選択しておきます。
4. ネットワークを構成する
これまでの手順で、今回必要となる新たなリソースが作成できました。それではいよいよこれらのリソースをネットワークで接続してみましょう。
ネットワーク接続を行うサーバの停止
まずは、ネットワーク接続変更の対象となるサーバを停止します。今回は前回まで作成したサーバ1台について停止作業が必要です。サーバにログインしshutdownコマンドを実行するなどでシャットダウンしておきます。
各サーバのローカルネットワーク用スイッチへの接続
それぞれのサーバのNICをスイッチに接続します。接続するNICは
- Webサーバ#1: eth1
- バックエンドサーバ#1: eth0
となります。さくらのクラウドでは、スイッチに接続したいサーバの詳細画面側から、対象NICをいずれかのスイッチに接続する、という操作となります。まずはサーバ一覧画面を表示します。
今回新規に作成したサーバと共に2台のサーバが表示され、いずれもステータスが「DOWN」(電源が落とされている状態)となっています。まずは前回までに作成した「Webサーバ#1」のNICをスイッチに接続するため、ダブルクリックして詳細画面を表示します。詳細画面上部の「NIC」タブをクリックすると、サーバに取り付けられているNICの一覧が表示されます。前回NICを1枚追加したので、2枚のNICが見えています。
NIC一覧画面の「接続」カラムを見ると、1枚目はグローバルネットワークとなる共有セグメントに接続されていますが2枚目は未接続のままです。この接続先の表示部分がリンクとなっているので、ここをクリックすると設定ダイアログが表示され、接続先を変更したり新たに指定することができます。今回は2枚目のNICをスイッチに接続するため「未接続」のリンクをクリックし、接続先設定ダイアログ画面を表示します。
「NIC」では「スイッチに接続」を選択します。そうすると下のポップアップメニューに作成済みスイッチのリストが表示されるので、接続したいスイッチを選択し、「更新」ボタンをクリックします。リスト画面に戻ると、「接続」カラムに接続先のスイッチ名が表示されます。
同様の操作で、今回作成したローカルネットワーク側サーバのNICもスイッチに接続します。
「マップ」画面を確認する
さくらのクラウドのコントロールパネルでは、サーバやスイッチがどのように接続されているかが一目で確認できる「マップ」機能を備えてます。画面上部メインメニュー内の「ネットワーク」をクリックし、左側のサイドメニューの「マップ」をクリックします。
これまでの構築作業により、最初の構成図通りの接続状態となっていることがわかります。画面上部の「NIC」ボタンをクリックすると各サーバのNICデバイス名が表示されるので、どのスイッチやネットワークに接続したNICが、OS上で何番目のデバイスとして認識されるかも分かります。
また、マップ画面では、ネットワークやサーバなどの要素を自由に移動させたり、拡大や縮小することも可能です。これらの機能を活用し、大規模で複雑なネットワークでも見やすい表示ができます。下の画面は、スイッチや共用ネットワークの要素を移動し、冒頭の構成図に近い形式で表示したものです。
最初の状態に戻す場合は、右上の「リセット」ボタンをクリックします。
なお、サーバやネットワークをクリックすると詳細画面が表示され、サーバでは電源の操作やモニタ画面へのショートカットボタンが表示されます。
サーバの起動
構成図通りのネットワーク構成ができたことを確認後、各サーバを起動します。サーバの起動は、画面上部メインメニューの「サーバ」を選択し、サーバ一覧画面で対象サーバを選択して「起動」ボタンをクリックします。
起動すると、ステータス表示が「UP」状態となります。
5. ローカルネットワークの設定をする
ローカルネットワーク側サーバのコンソール画面を操作する
まずはローカルネットワーク側のサーバから設定を行いましょう。
このサーバはグローバルネットワークに接続されていないため、SSHなどで直接リモート接続をすることができません。そのため、サーバのコンソール画面の表示や操作をコントロールパネル上から行うことができる「モニタ」機能を使用してサーバにログインします。
画面上部メインメニューの「サーバ」を選択し、表示されたサーバ一覧画面でローカルネットワーク側のサーバをダブルクリックします。サーバの情報表示画面の上部に「モニタ」タブがあるので、これをクリックします。そうすると、サーバのコンソール画面の現在の様子が表示されます。ここで左上の「リモートスクリーンに接続」ポップアップメニューより「HTML5モード」を選択すると、表示されたコンソール画面に対してキーボードやマウスでの操作が行えるようになります。
なお、このメニューからは、Javaアプレットを使用して操作を行う「Javaアプレットモード」、お使いのVNCクライアントソフトが使用できる「.vncファイルをダウンロード」の選択も可能ですので、環境に合わせてご利用いただけます。
コンソールに接続すると、キーボード入力がコンソールに反映されます。今回設定したrootパスワードを使用しログインが行えることを確認します。
コンソールに接続した状態になると、コンソール画面上部にIPアドレス(NICにグローバルIPアドレスが割り当てられている場合)送出キーや修飾キー、キーボードのCtrl-Alt-Del押下を送信するキーなどのボタンが表示され、操作している手元のPC側に影響なく接続先へのキー入力操作が行えます。これらはコンソール接続中は必要に応じて使用することが可能です。
また、「キー入力を完了」ボタンのクリックでコンソール側へのキー入力が停止され、ボタンが「キー入力を開始」に変化します。このボタンを相互にクリックすることで、コンソール側へのキー入力の制御ができます。また、コンソール画面への操作を終了し、コントロールパネル内の他の画面へ遷移する場合は「切断」ボタンをクリックし、コンソール画面への接続を停止しておきます。
以降はコンソール画面で操作を進めていきます。
ローカルネットワーク側サーバのネットワーク設定
まずは、サーバに接続されたネットワークインタフェースを確認します。
# ifconfig -a eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:1852 (1.8 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:2 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:98 (98.0 b) TX bytes:98 (98.0 b)
現在IPアドレスが未設定となっているeth0にifconfigコマンドでIPアドレスを設定します。
# ifconfig eth0 192.168.0.2/24
設定後、eth0の設定状況を確認します。
# ifconfig eth0 eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:1852 (1.8 KiB)
正常にIPアドレスとネットマスクが設定されました。
グローバルネットワーク接続側サーバのネットワーク設定
次に、前回までに作成したグローバルネットワークに接続された側のサーバに設定を行います。SSHで接続し、まずはネットワークインタフェースの状況を確認します。
# ifconfig -a eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX inet addr:133.242.xx.xx Bcast:133.242.xx.xx Mask:255.255.255.0 inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1239 errors:0 dropped:0 overruns:0 frame:0 TX packets:217 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:81837 (79.9 KiB) TX bytes:23845 (23.2 KiB) eth1 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:216 (216.0 b) TX bytes:216 (216.0 b)
前回増設されたNICがeth1として認識され、何もIPアドレスが設定されていないことが確認できます。こちらもifconfigコマンドでIPアドレスを設定してみます。
# ifconfig eth1 192.168.0.1/24
eth1の設定状況を確認してみましょう。
# ifconfig eth1 eth1 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1384 (1.3 KiB) TX bytes:468 (468.0 b)
IPアドレス、ネットマスクが正しく設定されていることが確認できます。
サーバ間の疎通の確認
これで2台のサーバにローカルネットワーク接続側NICの設定がされた状態となりました。それでは確認として、ローカルネットワーク接続側サーバへpingを打ってみましょう。
# ping 192.168.0.2 PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data. 64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=1.28 ms 64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.238 ms 64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=0.245 ms
正常に応答があり、問題なくネットワーク設定が行われたことが確認できます。
設定ファイルの編集
最後に、各サーバの設定ファイルを編集し、サーバを起動した際にローカルネットワーク側の設定が自動的に行われるようにします。
グローバルネットワーク接続側サーバ
/etc/sysconfig/network-scripts/ifcfg-eth1ファイルを作成し、以下の内容を記述します。
DEVICE=eth1 BOOTPROTO=static ONBOOT=yes TYPE="Ethernet" NETMASK=255.255.255.0 IPADDR=192.168.0.1
ローカルネットワーク接続側サーバ
/etc/sysconfig/network-scripts/ifcfg-eth0ファイルを以下のように修正します。
DEVICE=eth0 BOOTPROTO=static ONBOOT=yes TYPE="Ethernet" NETMASK=255.255.255.0 IPADDR=192.168.0.2
設定後に一旦リブートし、正常にローカルネットワーク側のネットワーク設定が行われることを確認します。
6. 次回予告
今回は、ローカルネットワークを作成し、そこにサーバを接続することを目標として、さくらのクラウドでの基本的なネットワーク構築方法を学びました。次回はルータを組み合わせ、より大規模なネットワーク構築について解説したいと思います。
▼「楽しいさくらのクラウド」シリーズ・バックナンバー
(1)クラウドってなに?
(2)コントロールパネルをさわってみよう
(3)サーバを作ってみよう
(4)サーバを拡張してみよう
(5)スイッチを使ってローカルネットワークを構築してみよう
(6)ルータ+スイッチを使ったネットワークを構築してみよう
(7)スタティックルーティング機能を使ってVyatta & Linuxルータを構築してみよう
(8)アーカイブ・ISOイメージ機能を活用してみよう