RubyKaigi2011 KaigiFreaks ネットワーク班 番長の小岩です。今回は、RubyKaigi2011 のトラヒックを支えたネットワークについて説明する機会をいただきましたので、簡単ですが設計思想や要素技術などについて解説させていただきます。
RubyKaigi2011 のネットワークは以下の目的のために、7/16-7/18 の 3 日間、練馬文化センターに臨時で敷設されたネットワークです。
上記目的の順番は、そのまま重要度であります。つまり、本ネットワークの第一義の目的はセッションの Usteram 中継をおこなうためであり、特に一番最後の参加者へのインターネットコネクティビティの提供というのは、いわば、おまけに過ぎません。 この目的の重要度付けはネットワークの設計及び運用指針に反映されてます。
RubyKaigi2011 のネットワークにおいては、過去の経緯及び検討より以下の懸念事項があるだろうと考えました。
前項であげた懸念事項やその他の制限事項 (金銭的なもの、準備時間的なもの) を踏まえて、以下のような設計指針を考えました。
以上の設計をもとに作成された本ネットワークの概念図は以下のとおりになります。
Internet
|
fennel (NAT箱) nampla (管理サーバ)
| |
*-+-+-----+------+----------------*サーバセグメント
| |
| RTX1100 (ルータ)
| |
| *--+----+----+-----+-------*小ホールセグメント
| AP AP AP
|
RTX1100 (ルータ)
|
*---+----+----+-----+-------------*大ホールセグメント
AP AP AP
本項では本ネットワークのいくつかの構成要素について、詳細に解説をおこないます。
NAT ルータは、えにしテック提供の ML115G5 改に Vyatta をインストールして構築しました。
ホスト名は fennel です。
Vyatta は Debian GNU/Linux をベースとした、オープンソースソフトウェアを集めて作られたソフトウェアルータ (ディストリビューション) です。Vyatta社が開発しており、「Vyatta Core」と呼ばれる非商用版と、「Vyatta Subscription Edition」と呼ばれる商用版があります。本ネットワークでは、Vyatta Core を利用しました。
Vyatta を NAT ルータとして構築する方法は省略します。ここではおこなったチューニングと設定について説明します。
NATルータとして構築したvyattaに以下のチューニング及び設定をおこないました。
echo 60 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_time_wait
管理サーバは、えにしテック提供の ML115G5 改に Debian GNU/Linux squeeze をインストールして構築しました。
ホスト名は nampla です。
このサーバには以下の機能を実装しました。
or してるかの傾向をつかむためです。
本来この規模であればエンタープライズクラスの無線 LAN AP を用意すべきですが、残念ながらかないませんでしたので、本ネットワークのユーザーサービス部分の無線 LAN については全て民生品の無線 LAN AP を利用しました。用意ができた Buffalo 社や Apple 社の製品を利用しています。 無線 LAN のデザインについて重要なのが、各 AP 間の電波干渉を防ぐことです。本ネットワークでは、小ホール、大ホールに以下の設定の AP を用意しました。
小ホール
202APa01 (802.11a、チャンネル自動)
202APa02 (802.11a、チャンネル自動)
202APa03 (802.11a、チャンネル自動)
202APb01 (802.11b、チャンネル1)
202APb02 (802.11b、チャンネル6)
202APb03 (802.11b、チャンネル11)
大ホール
203APa01 (802.11a、チャンネル自動)
203APa02 (802.11a、チャンネル自動)
203APa03 (802.11a、チャンネル自動)
203APb01 (802.11b、チャンネル1)
203APb02 (802.11b、チャンネル6)
203APb03 (802.11b、チャンネル11)
802.11a と b の各周波数帯において 3 台の AP を用意し、これに対して電波干渉がおきないようチャンネルを設定、各ホール 6 台ずつ合計 12 台の AP を用意しました。11a の AP についてはチャンネル固定の設定がありませんでしたので、自動としています。
1 日目の午後、Ustream の配信がプチプチ切れるという障害が発生しました。切り分けの結果、セグメントルータの RTX1100 の CPU 使用率が高負荷 (80% 超える) になる場合があるということがわかりましたので、セッションの間の休憩時間において Ustream 配信端末の収容セグメントを、大ホールセグメントからサーバセグメントに変更しました。
この変更後、Ustream の配信がプチプチ切れるという事象は発生しなくなりましたので、小ホールのネットワーク構成も同じように変更しました。
各ホールではスタッフも参加者と同じ無線 LAN を利用していましたが、ホールの中の人数が増えてくるとファイルの転送に時間がかかるなどの問題が発生しました。そのため、スタッフ用の無線 LAN AP を別に立てサーバセグメントに収容しました。
一日のイベントが終わった後、ホールの電源が落とされるため、毎朝ネットワークの立ち上げをおこなう必要があります。朝の準備時間は多く時間がとれないため、ネットワークの起動及び確認は素早くおこなう必要があります。そこで、以下の項目をクリアーすればネットワークが正常に起動している、ということにしました
これらのテストをクリアーすることでネットワークの正常起動を確認し、その後の Usteram 配信のテストなどにスムーズに引き継げるようにしました。
RubyKaigi2011 のネットワークを支えた要素技術や設計などについて、簡単ではありますが説明してみました。ネットワーク構築に魔法はなく、ひたすらセオリーを積み重ねていくことで、スタッフやスピーカー、参加者の皆様を支えるインフラを構築していきます。
勉強会やイベントでのネットワーク構築はあまり日が当たらない分野ではありますが、この記事がみなさまの興味をひくきっかけになれば幸いです
北海道でサーバやネットワークのコンサル、提案、構築、運用などをおこなってます。フリーソフトウェアを用いたシステム構築が得意技。ごくたまに、Ruby でスクリプトを書きます。妻と娘と BOYCOMBAT とホッピーとバーボンを愛する、どこにでもいる男です。
株式会社エストコスモ所属、一般社団法人 LOCAL 理事、KaigiFreaks、88nite、奥野一門