この記事は,TUT Advent Calendar 2025 10日目 の記事です.昨日は,ニッコーくんの「美味しいチャイを作るチャイよ〜^^」でした.
% ここに記事を貼る
はじめに
音楽技術部4年目の小野寺です。B1(2022年)の10月頃に音楽技術部の前身の総合文化部音楽技術部門に入部し、以来技術班として活動していました。
音楽技術部技術班では,技科大祭でネットワーク・サーバ基盤の運用を行っており,この記事ではその再構築作業をご紹介します.
(技科大祭でのテクノ部ブース入口では概要を展示していました!)
DJライブシステムの裏側、展示あります #ユートーン
おことわり:前提知識がなくても読めるように厳密な言葉の定義とは異なる説明をしている部分があるかもしれないですが,温かい目で見てください.
宣伝
以前に書いたTechnoTUT関連の記事を置いておきます.
去年の記事
一昨年の記事
音楽技術部のネットワーク・サーバ基盤とは?
音楽技術部では「The Utopia Tone」というDJイベントを学内のコモンズ1という場所で不定期にやっています.
「The Utopia Tone」を開催するにあたって前日の夜中にコモンズ1を魔改造するわけですが,当然全てを自分たちで設営する必要があります.
びふぉー
あふたー
暗幕を取り付けて,ステージを作って,DJシステムを設置して,照明を取り付けて,プロジェクタやディスプレイを取り付けて,カメラもたくさん置いて,ミキサーで音を調整してというのを一夜の間に行います.
お客さんから見えるところにあるのは,DJシステム・スピーカー・照明・スクリーン・ディスプレイあたりですが,暗幕の裏側,通称「Techブース」にはこれらを制御したり連携したりする装置がたくさん置いてあります.
Techブースは,「照明」・「メディア」・「ネットワーク」の大きく3つの分野から構成されています.
照明
同期のSくんがTouchDesignerで開発した照明制御ソフトウェアで,制御信号をLANケーブル・光ファイバー(IPネットワーク)を介してサーバに送り,サーバで別の制御信号に変換してライトの色や明るさを変えています.ムービングライトという首が回るライトには加えて回転角度とかを伝えてます.
加えて,LANケーブル・光ファイバー(IPネットワーク)でDJシステムからサーバを介してBPM(曲のテンポ)を引っこ抜いてきたり,DJシステムから出ている音を取ってきて音声信号の解析をすることで,自動で色情報などを生成し自動制御ができるようになっているみたいです.実際に技科大祭では無人稼働をしているときもありました.すごい!
こちら開発しました(してます) touchdesigner上でスペクトラムのデータで色を取得し、色んな手段で取得したBPM設定で拍数ごとの動作を制御しています
メディア
会場内にカメラを置いていろいろな画角で撮った映像や,DJ裏の映像を集約し,リアルタイムで映像を加工しながら会場内のスクリーン・DJブースのブースディスプレイに送ったり,録画を行ったりしています.映像のやりとりには,HDMIといった映像ケーブルを一切使っておらず,LANケーブル・光ファイバー(IPネットワーク)のみでやっています.
#ユートーン メディアブースです。ここでVJブースや各カメラからリアルタイムで流れてくる映像のミックスやルーティングを行っています。 部員に声をかけていただければ見学可能です。
どうしてLANケーブル・光ファイバー(IPネットワーク)で映像をやりとりするかというと,安く作れるからですね.テレビ局とかで使っているような映像機材は数万・数十万・数百万円ととんでもなく高価ですが,中古のネットワーク機器は1台3000円程度で買うことができます.
ケーブルもLANケーブルは安価で100mまで通信できますが,長距離のHDMIケーブルは高価です.
同じ30mのケーブルでもLANケーブルは1700円,HDMIケーブルは21600円します.
某LEDの先輩から「機材が高価なら自分たちで自作すればいいじゃない!」という教育を受けているので,LANケーブル・光ファイバー(IPネットワーク)で映像をやりとりするためのあれこれも用意しています.
8万円くらいの機材と似たようなことを余っているPCを活用して25~110円ほど(DVD代)でできるようになっています.
ネットワーク基盤とコンピュート基盤
照明・メディアのところで「LANケーブル・光ファイバー(IPネットワーク)」というのがたびたび出てきたと思いますが,この本体の部分がネットワーク基盤です.会場内の機器同士が相互にお話しして連携できるようにします.
各機器がお話しし合えることで,照明の例のように自動制御ができるようになりますし,VJさんのBPM(テンポ)を自動操作してお助けすることもできたり,PAさんのiPadとミキサーの会話をできるようにしたり,メディアブースで出てきた映像のやりとりも安価にできるようになります.
いろいろな機器が連携をとることで演出が一体となり,お客さんはより没入感のある音楽体験を楽しめるようになります.
コンピュート基盤は,このネットワーク基盤に接続されていて,会場内の機器に様々な情報を提供します.
DJシステムから曲情報(BPM・曲名・アーティスト名・波形など)を引っこ抜いてきたり,照明信号の変換,カメラ映像の中継,伝送映像の接続管理,故障機器がないかの監視,さらにはネットワーク基盤の基盤の部分(名前解決,DNS)をやっています.部員が開発したアプリケーションを動かすこともできます.
【#ユートーン の裏側解説①】 音楽技術部では、VJの自動補助・照明機器の自動制御・映像伝送の接続管理・映像配信・ネットワークサービスのためにコンテナ基盤(Kubernetesクラスタ)を構築しました。
ラックの上に載っているのは東京・秋葉原にある神田明神のITお守りです.
ネットワーク基盤とコンピュート基盤の再構築
技科大祭に向けて9月末にネットワーク・サーバ装置の大規模な再構築作業を行っていました.
何を変えたの?
一言で言えばコンピュート基盤を全てKubernetesに移行しました!
よくわからないですね.
もともとはサーバが2台あって,それぞれ別々の方式(Proxmox VEとKubernetes)で動いていました.それを一度全て破壊して,サーバを1台増やして,3台全てを同じものに統一してしまおうという計画です.ついでにせっかく再構築をするのでネットワークも全て破壊して,興味ある人集めて作り直そうというのをやりました.
作業の様子
部室での作業はB1・B3の若人たちと8人くらいで3日かけて行いました.
Day 1はオンラインで集まってネットワークトポロジの設計,Day 2は機器の分解メンテナンスから入って,ネットワーク機器へのコマンド投入,サーバへのLinuxのインストールをやりました.
Day 3はKubernetesのインストール・クラスタリングとこれまで動かしていたアプリケーションのクラスタへの投入をやって,後日少し大変な既存機能の移行を私と部員Hとでやってました.
Day1: 設計(オンライン)
Day 2: 機器を取り外して,
ラック整備
そして分解清掃 (これはレイヤ3スイッチの内部)
ごっつい電源と最近話題のMicronのメモリが載っていますね
組み立て完了
設定投入(イメージ)
コマンドを投入していって,ネットワークを分けたり(VLANを切ったり),住所(IPアドレス)を振って疎通がとれることを確認してます.あとは動的経路制御(RIP・BGP)とかをやってます.
(豊橋駅から栄駅に行くのに,「名古屋方面の列車に乗らないといけない」という情報を知っていないと静岡方面・飯田方面にとりあえず行ってみるかその場で床になるかで迷子になりますよね.それを名古屋駅や金山駅が「栄駅はうちの近くにあるよ〜」と豊橋駅にお話しして,東海道線を使うか新幹線を使うか名鉄名古屋本線を使うか,または名古屋駅と金山駅のどちらで乗り換えるのが良いのかを,最適経路を計算して勝手に案内してくれる,みたいなことをやっています.仮に車が橋桁にぶつかって運転を見合わせても,別の迂回経路に切り替わります.)
コマンドと聞くと難しそうに聞こえるかもしれないですが,日本語のコマンドリファレンスを読みながらポチポチ入れていくので,3系必修の講義でやるIPネットワークの基礎知識が分かれば難しくないです.難しい内容についてはちゃんと解説もしてくれています.
最終的に出来上がったネットワークを図に起こしたのがこれです.
Day 3: サーバーの構築(写真なし)
Day 2の終わりにDebianをインストールしておいた3台のサーバにKubernetesを入れていきます.KubernetesはGoogleが開発したコンテナオーケストレーションツールで,全世界で使われています.身近だとイオンとかPayPayとかメルカリとか.
「コンテナ」というのは,アプリケーションとそれを動かす環境をセットにしたものです.Dockerが良く知られていますね.
Kubernetesでは複数のコンテナを複数のサーバで自動的に管理してくれます.自動的に管理してくれると言っても,どんなことができるの?となると思うのでいくつか紹介します.
- 自動配置(スケジューリング):複数のサーバのうち,どのサーバにどのアプリケーションを配置するかを自動で決定します.サーバ使用状況を見て最適なものを選びます.
- 自己回復(セルフヒーリング):異常なアプリケーションを自動的に再起動して直そうとします.
- 負荷分散(オートスケーリング):負荷に応じて自動的にアプリケーションを増減します.
Kuberenetesには「このアプリケーションはこの状態であるべき!」と宣言的に設定を投入し,自動配置・自己回復・負荷分散をしながら自動で維持してもらいます.例えば,エアコンの設定温度を23度に設定すると,エアコンは室温を測定して,暑ければ冷やし,寒ければ温めて23度を維持しようとします.それと同じように,Kubernetesは「このアプリケーションは3個動いているべき」と設定すると,サーバの状態を監視して,何らかの原因でアプリケーションが2個に減っていたら自動で1個増やして3個に戻します.
他にもサーバ・ネットワークの状態をコードで管理できたり,ローリングアップデートといってアプリケーションが使えなくなる時間なしにアップデートをかけれたり(TechnoTUTの伝統芸で本番中に開発してることもあるので結構重要!)もできますが,ここでは省略します.
TechnoTUTでこのKubernetesを使うのですが,おそらくDJイベントでKubernetesクラスタを運用するのは世界初の試み(たぶんね)です.世界初,いい響きだよね.
構築で踏んだ手順は以下にまとめています.そこのA.I.Techのなんとかすしろーるさん,ぜひ!
3台のサーバをクラスタリングといって,合体してひとまとまりにします.
このひとまとまりのことをクラスタと呼びます.クラスタは,それぞれがお話しして協力し合いながらアプリケーションを動かしていきます.
コンピュータが相互にお話しするにあたって,一般にホスト名という名前を割り当てる必要があり,ここで3台のサーバの名前を決めなければならないのですが,B1・B3の若人たち(部員S,部員K)が良い感じにつけてくれました.技科大祭でも展示してたね.
トラブル①:サーバの突然死
後日,設定を流し込んでいると,突然通信が切れてその後全く接続できないようになるトラブルが起きました.
通信用の部品が高負荷で悲鳴を上げているっぽい.調べてこれを入れて解決しました.
トラブル②:アプリケーションが起動しない!(技科大祭前日)
技科大祭前日,サーバの電源を付けてもアプリケーションが一切起動してこない事件が発生しました.事件発覚時点で15時,前日設営は17時までです.残り2時間でサーバの復旧からアプリケーションテストまで完了させる必要があります.
(本来は13時~17時の4時間ですが,実行委員さんに9時~17時の8時間に延長していただいています)
技術班のネットワーク・サーバ部門では,ネットワークとサーバの運用だけではなく,実質的にVJ環境のセットアップ(会場内の映像伝送)からメディア(配信,録画),その他の班に属さない部分の設営,他の班からの設営のあらゆる問い合わせについて回答を行うサポートセンターを兼任しています.設営がまだの部分を組み立てながらテストを回していき,様々な班から飛んでくる問い合わせに回答しながら(結構大変なので,イベントごとに設営時の機器への自動設定投入の仕組みづくりを進めています),サーバの復旧作業を進めていきます.
再構築RTA,はじまるよ~~~
一度クラスタを破壊して,クラスタを組みなおしてもアプリケーションが動きません.
困った...
よく調べてみると使っているソフトウェア(CRI-O とMultus CNI)との相性が良くないらしい,一時的に
/etc/cni/net.d/00-multus.conf を削除することで直りました.復旧時点で17時手前,テストを当日の朝に延期してなんとかなりました.アプリケーションの移行
ネットワークの再構築の際に,住所の振り直し(愛知県豊橋市という住所が急に北海道旭川市になるみたいなこと)をやったので,サーバの中で動いているアプリケーション(コンテナ)に対しても住所を振りなおす必要があります.
基本的にはKubernetesが自動でやってくれて,もともとKubernetes上で動かしていたものはすんなりと動きました.こういうのとかこういうのとか.
ただし,Sony製のカメラから無線で映像を引っこ抜いてくるアプリケーションが少し複雑なことをしているので手動で対応する必要がありました.
DNSキャッシュポイズニングやDNSスプーフィングと呼ばれる攻撃手法で正規のサーバではない偽のサーバに接続させることでカメラから映像を取り出しているのですが,偽のサーバに誘導する際に教える住所を設定ファイルに直書きしていたので修正しなければなりません.この変更は部員Hがやってくれました.
また,TechnoTUTでは,サーバ内でBeat Link Triggerというアプリケーションを動かし,DJシステムであるXDJ-XZから情報を引っ張り出しています.
どうしてサーバ内で動かすかというと,複数台のPCで一斉に起動するとトラブルになるからですね.VJさん2人とLJさんと...とそれぞれで立ち上げていくと最悪DJ機器をやっつけて音を止める可能性もあります.どうしてダメなのかはA.I.Techのなんとかすしろーるさんの記事を覗いてみてください.
複数台のPCで使うとまずいならば,1台のPCで立ち上げてその画面をみんなで覗けば良いわけですよね.なのでサーバ内で動かして,手持ちのiPadやPCで覗けるようにしています.
覗けるようにするにあたって,デスクトップ環境が必要かつその上でアプリケーションを動かす必要があり,これだけはコンテナではなく仮想マシンで動かしたいとなりました.
KubevirtというKubernetes上で仮想マシンを動かせるようにできるものがあるのでクラスタにインストールします.
DebianのCloudイメージを使って,Kubernetesクラスタ内に仮想マシンを作成していきます.
出来上がったら,
sudo apt install task-kde-desktop を実行してデスクトップ環境を入れます.
あとはVNCサーバを入れてBeat Link Triggerを入れて,アプリケーションの準備はできました.これでLinux・MacからVNC接続すれば画面が見える状態にはなりますが,Windowsの標準機能から使えるようにリモートデスクトップ接続できるようにしておきます.別でコンテナイメージを錬成してリモートデスクトップ接続とVNC接続を変換してくれるアプリケーションを動かします.
ここでネットワークの問題を考慮する必要があって,DJシステムから情報を引っ張る際はDJシステムと同じネットワークである必要があり,VJさんのPCのBPMを自動操作させるためにも同じネットワークである必要があります.Kubernetesではデフォルトでコンテナ用の別のネットワークを作成しておりそのままでは使うことができません.
同じネットワークというのは,住所が近くないといけないということです.普通は豊橋市内から浜松市内までなど,別の市の人ともお話しできますが,DJ・VJの機器間で使うお話のお約束(通信プロトコル)には特殊なもの(PRO DJ LINK・Ableton Link)もあって,お互い豊橋市内の住所じゃないとお話しできないものがあります.Kubernetesのデフォルトでは豊川市の住所を使っているのでお話しできないのです.
そこで,Multus CNIというプラグインを使います.
何をしてくれるかというと,コンテナに別のLANケーブルを挿してくれます.コンテナ同士で通信する用のネットワークにも,DJシステムのいるネットワークにも,VJさんのPCのいるネットワークにも直接接続できるようになります.例でいうと,豊川と豊橋の境界にお家を建てる,みたいなものです.
そうするとこんな感じでDJシステムから情報を引っ張ってこれます!
これで全てをKubernetesに移行できました!
技科大祭当日
当日は特にトラブルなく元気に動いてくれました.
別のトラブルは発生しましたが...
技科大2日目,VJさんの映像を送るコンピュータが過負荷でサイレント故障?を起こして,ブースディスプレイへの映像伝送が停止しました.
(サイレント故障:故障しているのに故障と検出されないこと)
急遽予備のコンピュータを臨時で設置して,別の経路を用意して対応しました.
(ぱっと見は動いているし止められないサービスも動いているので,故障ノードは切り離せなかった)
技科大祭の様子
【10月11日 『The Utopia Tone -vol.6 extended-』 Day1】 現在の DJ:TERANiKi & はっちゃん◈ ジャンル:Anime & Vocaloid + α 時間:10:30〜11:00 #ユートーン
【10月11日 『The Utopia Tone -vol.6 extended-』 Day1】 現在の DJ:DDlia & T_TEST__ ジャンル:Techno & Trance 時間:11:00〜11:30 #ユートーン
【10月11日 『The Utopia Tone -vol.6 extended-』 Day1】 現在の DJ:hiziki ジャンル:Birthday 時間:12:30〜13:00 #ユートーン
【10月12日 『The Utopia Tone -vol.6 extended-』 Day2】 現在の DJ:nikko ジャンル:Subculture Hardcore 時間:16:30〜17:00 #ユートーン
おわりに
今までネットワーク・サーバの構築からメディア周りの運用まで,私と部員Hでやっていることが多かったのですが,9月末の再構築にはB1・B3の若人8人が集まってくれて大変嬉しかったです.(正直少し意外でした)
Kubernetesは気軽に手元のPCでも触れるので,これを機にぜひ!
部員へ:Kubernetesは初期の学習コストが少し高いですが,使えるようになれば便利な上に堅牢に運用ができるものだと思うので,ぜひ部室でいろいろと試してもらえたらと思います.壊してもすぐに全部再構築できるから気軽にね!
.png?table=block&id=2bdb844c-ce78-8042-bcf4-f28d38937e17&cache=v2)

