JANOG52 振り返り
JANOG52 にNOCの一員として参加してきたので,その振り返りを残しておきます.主観です.
NOCに参加した理由
B4の時に所属していた研究室 (江崎・落合研究室) が過去のJANOGに参加していて,NOCメンバー募集のお知らせを共有してくださったことがJANOGを知ったきっかけである.確か3月下旬のことだったと思う.
3月上旬に別の場所でNOCをやって自分の力不足を痛感していたため,修行の意味で応募した.
選考があったらしいが詳細は不明である.多分研究室の名前の強さで通ったんだろうな.
チーム分け
NOCは以下のチームで構成されていた.
バックボーン:IXと接続したりピアリングしたりして上流帯域を確保する
L2L3:会場内ネットワークの設計
AP/監視:アクセスポイントの配置戦略・運用とホスト・デバイスの監視
ケーブリング:ケーブル作成,会場内のケーブル配線設計,実際の配線
サーバ:サーバ基盤構築,サーバ構築,その他
Linuxを日常的に使用していてサーバ構築の経験も多少あったので,一番貢献できそうなサーバチームを第一希望に設定した.
タイムライン
サーバチームのリーダーを務めてくださった佐々木さんの振り返り記事にて詳細に記述されているので,ここでは省略する.
ちなみに,これは私のことである.詳しくは後述する.
やったこと
サーバチームの任務はネットワークに必要なサーバ,具体的にはDHCPサーバとDNSサーバを提供することであり,それ以外は好きにしてよいということだった.
私が行った作業のすべてを記すことは不可能なので,とりわけ大きな仕事だけ記録しておく.なお,チームメンバーの助けを大いに借りて達成した仕事であることをことわっておく.
DNSロードバランサ
私はDNS担当となり,主にキャッシュサーバの構築に取り組んだ.
JANOG52のネットワークでは,dnsdistという,DNSクエリを下流のサーバに振り分けるロードバランサを採用した.
下流には4つのサーバを用意し,それぞれBIND, PowerDNS Recursor, Knot Resolver, Unboundの4つのDNSソフトウェアを動かした.
クライアントからはdnsdistがnameserverとして見えていて,dnsdistは受け取ったクエリをラウンドロビンで4台のサーバに振り分けるようにした.
図示すると以下のようになる.
Elastic Stack
Elastic Stack は,Elastic社が提供するソフトウェアコンポーネント群のことである.
先述したDNSロードバランスシステムと組み合わせて,キャッシュサーバのソフトウェアごとの性能評価を行うことに挑戦した.
使用したコンポーネントとその役割は以下の通り.
Filebeat
dnsdistのsyslogのうち,lookup time (名前解決に要した時間) を示す行を処理用サーバに転送する.
Logstash
Filebeatからデータを受け取り,加工してElasticsearchに送信する.
Elasticsearch
Kibanaのバックエンドデータストア
Kibana
Elasticsearch上のデータの可視化,分析
DNSクエリのqnameに対してwordcloudを作ったのと,lookup timeの平均値・中央値をグラフにしてサーバごとの性能を比較したりした.
DoH対応
DoH (DNS over HTTPS) でクエリを暗号化することで,クライアントのプライバシーを守ることができる.
今回のネットワークではクライアントとdnsdistの間の通信をHTTPSで暗号化した.
dnsdistと下流のサーバとの間もDoHで暗号化しようとしたが,PowerDNS RecursorがDoHに非対応だったため断念した.あと,DoHに必要な証明書を下流のサーバに発行するのが面倒だった.
Web公開
NOCメンバー向けに作成されていた監視用ダッシュボード (AP,DHCPサービス) やIPAM (nautobot) を,read-onlyで会場外にも公開した.
JANOG52用に構築した権威サーバにドメインを登録し,nginxでリバースプロキシを構築して来場者が閲覧できるようにした.
その他
サーバチームの取り組みはNOC発表資料にまとめられているので,ぜひご覧になっていだきたい.
https://www.janog.gr.jp/meeting/janog52/wp-content/uploads/2023/06/janog52-j52noc-onizuka_r.pdf
学び
あとで書くためのフックポイントとして箇条書きしておく.
チームの結束・士気を高める方法について
新技術の検証
情報共有,進捗やToDoの可視化
ハッカソンでガリガリ開発する中でわかったこと
納期を守ることの大切さ
ミーティングの意義って何
参加者が自走できる状態にすることが必要
課題の共有,議論
最後に
辛いことも多かったが,非常に実りの多い時間だったと思う.
ネットワークエンジニアとしてだけではなく人間としても成長できた実感がある.
とはいうものの,自分の能力不足に起因するトラブルのせいでNOCの皆さんには多大なご迷惑をおかけしてしまった.
まだまだ足りないところがたくさんあるな,と感じた日々だった.