cybozu.com の新データセンター「Neco」が稼働開始

こんにちは、Neco プロジェクトの責任者 ymmt です。 Neco は、2018 年 1 月に開始した cybozu.com のデータセンターを一から刷新するプロジェクトです。

今回は Neco の成果が結実した新データセンターが稼働開始したことをお知らせします。 あわせて、現時点までの活動内容・システムの概要・今後の予定もお伝えいたします。

Neco プロジェクトについて

サイボウズの主力クラウドサービスである cybozu.com は自社で構築したデータセンターにて2011年に提供開始しました。 以来順調に業容を拡大し、現在は 30,000 社以上のお客様にご契約いただいております。

一方で、当初 100 台に満たない台数のサーバー向けに設計されたシステムは、今後の規模の拡大が困難という課題を抱えるに至りました。 今後もサービスの成長が確実視される(※グラフ1)ことを背景に、スケーラブルな新データセンターを作る Neco プロジェクトを 2018 年初に開始しました。

f:id:cybozuinsideout:20190902154926p:plain
グラフ1

Neco においては、データセンターのラック構成やネットワークアーキテクチャに至る最下層から見直していますが、Kubernetes とその周辺技術を中心に据えたことが一番の特徴です。Neco のネットワークについては以下の記事で詳しく解説しています。

blog.cybozu.io

成果の紹介

Neco の成果物はそのほぼすべてがオープンソースソフトウェアとして公開されています。 主要な成果を紹介いたします。

高機能ネットワークブートサーバー sabakan

sabakan は大量のサーバーをネットワークブート方式で管理できる高機能ブートサーバーです。 以下の機能を備えています。

  • UEFI HTTP Boot / iPXE Boot
  • Ignition 設定ファイルのテンプレート
  • 起動時にダウンロードできるアセットの管理機能(ファイルサーバー)
  • リレーにも対応した DHCP サーバー機能
  • IP アドレス自動管理
  • サーバー台帳管理
  • サーバー状態管理
  • ストレージ暗号化支援機能
  • 容易な冗長化

github.com

Kubernetes 自動運用システム CKE

CKE は Kubernetes クラスタのインストールだけでなく、運用中のサーバー故障に対応して自動かつ安全に入れ替えるなどの高度な運用自動化機能を備えています。 CloudNative Days Tokyo 2019 のセッションで紹介しました。

speakerdeck.com

Coil

Neco のネットワークはサーバーが BGP スピーカとなることで自在に経路制御をする仕組みです。 Coil はその要となるサイボウズ製の Kubernetes 用ネットワークプラグインです。

github.com

TopoLVM

Kubernetes 上でストレージやデータベースを取り扱う仕組みは現在進行形で成熟しつつあります。 オンプレミスでは、ストレージは最終的に各サーバーのローカルストレージとなるため、LVM を Kubernetes 上から利用できるようにしたものが TopoLVM です。類似のストレージプラグインの中では、完成度が高いと自負しています。

github.com

2019年9月時点のシステム

f:id:cybozuinsideout:20190902161356p:plain
Neco システム概要図

上記の図が現時点の Neco データセンターのシステム概要となります。ピンクの部分が Neco で新規に開発したもの、青の部分が Kubernetes と周辺のオープンソースソフトウェアを活用して構築したものとなります。以下、現時点で備えている機能を列挙します。

認証プロキシ: Teleport

Gravitational 社が提供している Teleport というソフトウェアを使って Neco データセンターにアクセスするユーザーの認証と証跡を管理しています。SSH に加えて、Kubernetes の CLI である kubectl の認証も管理できる優れものです。以下の記事で詳しく解説しています。

blog.cybozu.io

Coil + MetalLB + Calico

Coil は自社で開発した Kubernetes のネットワークプラグインです。必要最小限の機能を備えつつ拡張性に優れています。 Coil に Google 製の Layer 3 ロードバランサー実装である MetalLB と、ファイアウォール機能を提供する Calico を組み合わせて高度なネットワーク機能を実現しています。

Contour + ExternalDNS + cert-manager

ContourEnvoy という高機能(Layer 7)ロードバランサを Kubernetes で制御できるようにするソフトウェアです。

Contour に ExternalDNScert-manager を組み合わせて、簡単な YAML を書くだけで HTTPS ウェブサービスを公開できるようにしています。

Elastic Cloud on Kubernetes (ECK) + TopoLVM

Elasticsearch という検索用ソフトウェアを Kubernetes で制御できるようにする Elastic Cloud on Kubernetes (ECK) を、自社製のストレージ管理ソフトウェアである TopoLVM と組み合わせて利用できるようにしています。

移行プロジェクト Maneki を開始

Neco のデータセンターが稼働開始したというのは、既存データセンターからの移行作業の始まりにすぎません。 そこで移行作業を集中して進めるべく、今月より新たに Maneki プロジェクトを開始することとしました。

f:id:cybozuinsideout:20190902154101j:plain
Maneki + Neco

Maneki + Neco で今後予定している最も大きな作業項目は以下の通りです。これ以外にも、大小の移行作業が見込まれています。

  • 既存検索エンジンのデータ移行
  • 既存データベースエンジンのデータ移行
  • Ceph / Rook を活用した分散ストレージの構築

採用イベントのご案内

以上ご紹介したとおり、Neco および移行プロジェクト Maneki では高度かつ大量の開発・移行作業を予定しています。 そこで、Neco もしくは Maneki プロジェクトの専任エンジニアを追加で募集いたします。

ご関心をお持ちの方は以下の募集要項から直接ご応募いただくか、ymmt に Twitter で DM をお願いいたします。

また、9月19日木曜日に Maneki + Neco のエンジニアと直接交流できる採用イベントを開催いたします。 以下のサイトからお申込みいただけます。

connpass.com

なにとぞよろしくお願いいたします。