こんにちは!技術開発部マネージャーをしている井島です。 今回はvivit に私が入社当時(2020年1月)に開発部で社内LTをやっていたことがあり、趣味全開の内容があったので、それを紹介しようと思います!
vivitでは2021年8月からマネージャーを行っていますが、それ以前はSREでした。前職では新卒からインフラエンジニアをやっており、この分野は好きです。
なんだかんだ20万円以上かかっている
まずは全体の写真です。
ブログ執筆現在もこの構成なのですが、高スペックPCが買えるくらいですね...
ベアボーンという小さな筐体を使ってます。バッファローのHubはジャンボフレーム対応。電源タップは業務用でも使うサンワサプライ製で雷ガード付き。
ちょっとしたこだわりポイントです。
いわゆるハイパーコンバージドインフラ
そもそも、「自分のPCにスケールアウトできるストレージが欲しい」というところから始まりました。
非機能要件はこんな感じです。
- ハードウェアは交換可能で、一般家庭用向けのものを使用する。
- ストレージシステムのデータ部分に関してシングルスポットをつくらない。
- 使わない時はシステムを停止する。
- HDDレベルのシーケンス読み込み、書き込み性能。
- ストレージシステム障害時、バックアップデータへは復旧作業なしにアクセス可能。
- Windows, Linux, Mac, Android の各デバイスからストレージへアクセス可能。
SDS (Software Defined Storage) を使用
ceph.io ceph というミドルウェアを使いました。構築当時、SDS分野が流行っていて、OSSだとこれが一番利用実績があったので選びました。
普通だったらRAIDがまっさきにに思い浮かぶと思いますが、RAIDカードが故障した場合、交換可能かどうか不安があり却下しています。
例えばRAIDカードが故障したときに同じ型のものを調達できるのか?違うRAIDカードに交換したとき、正しくディスクが認識されるのか?など、、、
kubernetes について
ストレージシステム技術スタックの写真で cephの上にk8s があったと思います。これはceph サーバのメトリクスを取得するためと、samba サーバ起動するためです。(これだけのためです笑)
これも当時ちょうど流行っていたってことも加えて、これを使えば prometheus, grafana, samba 起動サーバを cephノード増減に左右されないと見込んで採用しました。
k8s クラスタのマスターノードにについては、使わない時クラスタを停止することを考慮し、クラスタ起因の障害を回避するためにシングル構成にしています。
ディスクトップPCスペック
いつも使うPCです。普通ですよね!?
CPUファンはこだわって、静音、ベアボーン筐体に入るものを探しました。
- Desk Mini 110/B/BB
- Core i5 7500 BOX
- CFD D4N2133PS-8G [SODIMM DDR4 PC4-17000 8GB]
- NH-L9i(Noctua) ※CPUファン
- 変換名人のPCIB-USB2/2FL
- Debian testing
サーバ側スペック
サイジングについて話し出すと長くなりすぎるので、ここではふ〜んくらいでお願いします。
- Desk Mini 110/B/BB
- Intel CPU Celeron G4900 BOX
- crucial CT8G4SFS824A [SODIMM DDR4 PC4-19200 8GB]
- NVMe タイプ 2280 PCIe Gen3 x4
- SEAGATE ST1000LM049 [1TB 7mm] 7200rpm
- SEAGATE ST1000LM049 [1TB 7mm] 7200rpm
- CentOS 7
最後に
細かい設計思想についても話したいのですが、長くなりすぎるのでここでは紹介だけにとどめておこうと思います。 vivit では中途エンジニアも積極募集中です。面談や面接でお会いしたときなど、興味があれば是非質問して下さい!
www.wantedly.com www.wantedly.com
ちなみに、cephをバージョンアップした時、1回失敗してデータ飛んでいます...
もちろんバックアップから復旧しましたよ。