こんにちは、NOC Team です。
皆様、PyCon JP 2019 はお疲れ様でした。
実りのあるイベントになっていましたら幸いです。
今回のポストでは、PyCon JP 2019 で皆様に利用していただいた、
会場 Wi-Fi について NOC Team よりレポートします。
事前準備・構築
キックオフ(PyCon JP 2019 NOC Meeting)
やったこと
- 自己紹介
- タイムスケジュールの確認
- 決める必要のあることの確認
- SSID: PyConJP_2019
- Pass: NewEra.py
- その他、ログインパスワード等
- ネットワークの設計(PHPカンファレンスから変える所、変えない所を決めたり)
- ピザ+ビール
NOC Team のキックオフが開催されたのは
7月23日にサイバートラスト株式会社さんのオフィスにて。
この日はメンバー初顔合わせということもあり、少々緊張気味。
PyCon JP 2019 のテーマは「Python NewEra」ですが、
NOC Team のテーマは「1000人乗っても大丈夫なWi-Fi」。
どこかで聞いたことがあるようなフレーズをもじって使うのは
NOC Team のみならずともニヤリとするのはエンジニアの典型的な特性かもしれません。
なお、ここでどういう言葉をベースにするかで年齢がバレる(かも)
主な議題は二つ。
一つ目は、基本設計の確認、
二つ目は PyCon JP 2019 NOC Team 最大のテーマである
Wi-Fi 設計に必須のSSIDやパスワード等の決定です。
SSID については事前に Slack で SSID の候補が挙がっていましたが、
最終的に決まったのは「PyCon JP 2019」となりました。
Wi-Fiパスワードは「NewEra」にpythonコミュニティらしく.pyを付けた
「NewEra.py」が覚えやすく好ましいと言うことで最終的に採択されました。
ネットワークの基本構成では PHPカンファレンス と同じ会場で開催されるため
実績のある構成をベースに変更が必要な箇所、不要な箇所を中心に説明がなされました。
こちらも PyCon JP 2019 同様、
1000人を超える参加者を受け入れる為の
DHCP 配布アドレス、 DNS クエリをどのように裁くか?
ということが最大の検討ポイントであり、
それらを考慮した結果がインターネットの出口をクラウド上に設け、
PyCon JP 2019 会場とは VPN によって繋げる構成となっています。
よくある打ち合わせの図。間違いない、これは Pizza と Beer だ。
アーキテクチャ
今回のアーキテクチャを綺麗に書き起こされたのが下の図。
会場のフロア状況に合わせて pfSense <=> IX2105 をそれぞれ配置しています。
ホットステージ
NOC Team の本番は、仕込みから始まる。
ホットステージと呼ばれる準備作業では、
実際にネットワーク機材を利用して相互接続試験完了を目標に5日に渡り実施しました。
こればかりはリモートで行えないので場所を借りて集中的に構築。
ホットステージ会場自体は日中から作業は可能なのですが、
仕事や学校を終えてから参加する人も多いため、作業が深夜まで続くこともしばしば。
NOC エンジニアの1日は長い....。
今回の構成で利用した機材は、物理機材だけで
これだけの量をホットステージ中で用意することになり
各自役割分担の上、作業に取りかかりました。
- Router
- SW
- Cisco Catalyst 3000 シリーズ x8
- NETGEAR SW x8
- PoE インジェクター x 数台
- LAN ケーブル
当初の予定は4日間での構築!....でしたが残念ながら規模が大きくて4日間では終わりきらず。
Let’s extra stage !!
続々と生成されるAPたち。構築作業時は物量、熱量ともに高め。
Extra stage の甲斐あって準備作業は無事に完了。
最終日はネットワーク機器の設定のバックアップなどを取りつつ、
本番当日は効率よく展開できるように用途や位置毎に仕分けながら機材を梱包します。
山積みされた AP たち。これらが当日、各部屋に展開される予定です。
ルータとスイッチ達。 AP とともに PyCon JP 2019 のネットワークを担う重要な子達です。
設営
Day 0 (Sprint Day)
NOC Team の設営は前日から始まる。
会場近くに手配した宿泊所に集結した精鋭によってくみ上げられた
NW 設備は無事にサテライト拠点として設営完了。
これにより安定した深夜メンテが可能になりました。
逆に言えばエンドレス構築が可能という罠。
これが趣味だけでなく本当に役立つ場面が発生するとは、誰も予想だに...
いえ、予想していました。寧ろ「絶対使うだろJK」的な。
「こんなこともあろうかと作っておいたぞ」(C) Futaba Network Service
NOC設営日・Tutorial Day
NOC Team にとっての本番。正常に動作することはもちろんのこと、
Tutorial で使われる会場は Tutorial 開催までに
ユーザが利用可能な状態になっていなければなりません。
開場時間と Tutorial の時間が決まっている以上、
設営に費やせる時間は限られています。
また、開場と同時に全ての部屋が利用可能というわけでもないため、
何時からどこが設営か、ということも考慮しながら設営作業を行うため迅速な行動が求められます。
リーダ、およびベテラン勢の指示の下、ソルジャー達が走る走る
(実際は走りません。機材が重たいし危ないです。)
Tutorial までに設置可能なエリアほぼ全てに設置し終えたところで問題が発生。
「あれ? SW は?」
「図面にはあるのに機材が存在しない」
どうやら当初の想定から設計変更がなされたことが十分に伝わっておらず、
設計と実態に乖離が有った様子。地味にピンチ。
だがしかし、慌てるな。心配ご無用峰打ちでござる。
即座に余剰機器を確認しつつ、SW が有ることを想定して設置されたルータの設定等を確認。
この状況でどのような対応が可能か判断し、
新たな設定を投入することで無事に SW 無し構成ができあがりました。
Conference Day・運用・監視
NOC Team のもう一つの主業務、それが運用と監視。
予めテストをし監視を仕込んではいますが 1000 Client を超える接続を予めテストすることは不可能。
また人がどのように動き、どこに負荷が集中するか?というのも完全に予測することは不可能なので
こればかりはぶっつけ本番。
歴戦の猛者たちはこういう緊張感と戦いながら生き残ってきたのです(?)
監視・モニタリング作業はそれぞれ特性に応じて取捨選択。
今回、採用したプロダクトは Zabbix と Grafana と Prometheus 。
ただし、Prometheus は今回初採用となったことや急ごしらえで作ったこともあり
実運用や展示に使われることはありませんでした。
とはいえ、システムの負荷を確認するなどの結果が得られたので次回以降は
展示できるかもできません。
NOC Team が当日、暇を持て余しているのは正常稼働している証拠。
うむ、順調に伸びているな。大丈夫だ、まだ慌てる時間じゃない。
なお、今回、PyCon JP 2019 の3日間を通してのユニーククライアント、
トータルトラフィックは以下の通りでした。
1000 Client 乗っても大丈夫!のWiFi環境を構築したつもりが実際は1700 Client オーバー。
当日、急遽 AP の増設が必要にこそなりましたが大きなトラブルも無く
参加者の皆様に安定したネットワーク環境を提供できたのでは無いかと思っています。
以下に DHCP サーバや DNS サーバの稼働状況を記載しておきます。
これらは展示物としてもそうですが、記録を残しておくことが重要。
機器の台数見積もりや配置が予想と実態でどの程度、乖離があったか等を振り返り、
次回以降に活かしていきます。
障害対応など
事前に最も懸念されていた
「 AP を守れ(ケーブルを踏まれる、引っ張られる、倒される)」という事は起きることもなく、
参加者の方々には特に支障なくご利用頂けていたと考えていますが、
裏ではこんなことも起きていました。
- syslog サーバの inode 枯渇
- AP のキャパシティ不足による緊急増設
- 朝、起動できない(起きれない NOC メンバー)
当初から syslog サーバには各種 NW 機器から syslog を受ける想定で
十分な容量を割り当てていたつもりでした。
しかし、いくつかの機器が予想とは異なる形でログを転送してきていることが発覚。
予想を大幅に上回る数のファイルが生成されたため
このままの状態では最後までログを受け続けられないことが判明。
初日完了後に即座に例のサテライト拠点でメンテナンスを行い、
inode を増やすことで2日目も乗り切れるようにしました。
AP も会場の定員を基準に設計していた為、
立ち見が出るほど人が集まった時にはキャパシティ不足が危ぶまれる事もありました。
溢れた方々が YouTubeで閲覧をしていたことも AP の負荷を押し上げる要因となり、
講演の合間を縫って AP 増設を行うなどの対応を実施。
機器を持ちケーブルを抱えながら会場を走っている
スタッフを見かけた方もいらっしゃったのでは無いでしょうか。
最後の「朝、起きられない」は敢えて書くほどでも無いほど定番です。
ましてや深夜メンテを行っているのですから当然ですね。
とはいえ、どのチームも連日早朝から深夜まで活動をしているので
自分の持ち場以外でも居る人がその場でカバー。
エンジニアには朝型と夜型、双方の特性を持った人が
バランス良くチームに参加していただけると穴が無くて良いです。
撤収
無事にカンファレンスを終えたら残るは片付け、撤収作業。
「おうちに帰るまでが遠足だ」の通り、まだまだ気を抜けない瞬間です。
設置時は有るべき場所に物が無いとその時点で気づくのですが、撤収時は短時間かつ
「無くなってもその場では発覚しない」為、往々にして物品が行方不明になりがち。
ケーブル1本でも大事な備品なのできちんと持ち帰る必要がありますが
時には AP や SW といった大物(?)機材まで無くなることがあるのが不思議。
恐らくそういう備品は、会場施設の忘れ物コーナーに人知れず置かれ、そして
持ち主不明のまま、処分されてしまうのでしょう。ああ、無情。
とはいえ、傘や服が大半を占めるであろうこの手の会場で
ポツンと Cisco スイッチが「忘れ物」として置かれていたら
さぞかしシュールな光景となるでしょう。
運用報告LT
そんなこんなで準備から片付けまで
終始、忙しい NOC Team ですが、 LT にも参加しておりました。
当日の発表のため、集計できていない物、
片付けの様子などをお話しすることはできませんでしたが、
LTの場においても我々の活動の一端を少しでもお伝えできていたならば幸いです。
NOCメンバーの募集
PyCon JP では2020年度の PyCon JP で NOC Team として活動していただけるメンバーを募集します。
詳しくは後日(来年)、募集を行う予定ですがそれに先立ち、
以下のメンバーも募集しておりますので奮ってご参加いただければ幸いです。
PHPカンファレンス2019 会場ネットワーク構築スタッフ応募 締切:10月6日 (日)