Vitessの概要
Vitess(ヴィテス)は、オープンソースデータベースの大規模クラスターを配備、スケーリング、管理するための分散データベースソリューションです。VitessはYouTubeの開発チームにより、MySQLのスケーラビリティの課題を解決するために2010年に開発されました。その後、Googleによりオープンソースとして公開され、2019年11月にはCNCFプロジェクトの8番目の卒業プロジェクトとなりました。今後さらなる利用や発展が期待されるオープンソースです。
現状は、バックエンドのオープンソースデータベースとしては、MySQLとPercona Server for MySQLだけがサポートされます。ローカル環境でも動作させることが可能ですが、基本的にはパブリックまたはプライベートクラウドで効果的に動作するように設計されています。
Vitessを利用すれば、以下のような問題を解決できます。
- アプリケーションの変更を最小限にしながら、データベースのシャーディングやスケーリングが可能
- ベアメタルからプライベート/パブリッククラウドへの移行
- 大量のデータベースインスタンスの配備と管理
YouTubeでは5年以上にわたり、データベースとして利用された実績もあり、現在も多くの企業がVitessを採用しています。
Vitessのアーキテクチャは以下の通りです。
参考: https://vitess.io/docs/14.0/overview/architecture/
それぞれのコンポーネントの役割は以下の通りです。
コンポーネント | 役割 |
---|---|
VTGate | アプリケーションからのトラフィックを正しいVTTabletにルーティングし、統合された結果を返す軽量プロキシサーバーです。MySQLプロトコルとVitess gRPCプロトコルの両方に対応しています。 |
VTTablet | mysqldプロセスと同じマシン上で、vttabletプロセスとして実行され、各VTTabletがタブレットタイプに応じた役割をこなします。タブレットタイプとしては、primary、master(非推奨)、replica、rdonly、 backup、restore、drainedがあります。 |
Topologyサービス | Topologyサービスは様々なサーバーで実行されるバックエンドプロセス(メタデータストア)の1つです。各種Topologyデータの格納および、分散ロックサービスを提供します。 頻繁に変更されないVitess全体のデータを格納するグローバルTopologyサービスと、各セルに応じた情報が格納されるローカルTopologyサービスがあります。 |
vtctl | Vitessクラスター管理で使用されるコマンドラインツールです。 |
vtctld | Topologyサービスに保存されている情報を参照できるようにするためのHTTPサーバーです。トラブルシューティングや、サーバーの現在の状態を把握するのに利用されます。 |
参考: https://vitess.io/docs/14.0/concepts/
Vitessの主な特徴
パフォーマンス | ・パフォーマンスを最適化するために、フロントエンドアプリケーションからの多重クエリーをMySQLコネクションプールで処理 ・まだ実行中のクエリーがある状態で、同一のクエリーを受け付けた場合に、その実行中のクエリーの結果を再利用 ・同時実行トランザクション数の制限や、全体的なスループットを最適化するためにデッドラインを管理 |
---|---|
保護 | ・クエリーの書き換えと無害化 ・クエリーのブラックリストをカスタマイズして、問題が発生する可能性があるクエリーの実行抑止 ・クエリーキラーにより応答が遅すぎるクエリーの停止 ・接続されたユーザーに基づきテーブルごとにアクセスコントロールリスト(ACL)の設定が可能 |
モニタリング | ・パフォーマンス分析ツールによるデータベースのパフォーマンスの監視、診断、分析が可能 |
構成管理ツール | ・クラスター管理ツール ・Webベースの管理GUIを提供 ・複数のデータセンター/地域で動作するような設計 |
シャーディング | ・シームレスな動的リシャーディングが可能 ・垂直および水平シャーディングをサポート ・プラグインによってカスタマイズが可能な複数のシャーディングスキームを利用可能 |
参考: https://vitess.io/docs/14.0/overview/whatisvitess/#features
Vitessの動作環境
ローカル環境にインストールする場合は、以下の方法がガイドされています。
- Docker経由のローカルインストール
- 手動コマンド(Ubuntu系/Debian系/Yum系)によるローカルインストール
- Homebrew経由のローカルインストール
クラウド環境では、Kubernetes上に、Vitess Operatorを利用して配備することが可能です。最新版では、以下のKubernetesバージョンが推奨されます。(Vitessや、Vitess Operatorのバージョンにも依存します)
- Kubernetesバージョン: v1.20.*, v1.21.*, v1.22.*
参考: https://github.com/planetscale/vitess-operator
Vitessと類似の機能を持つOSS
類似の機能を持つOSSとしては以下のものがあります。
- MySQL Community Server、Router、Shell
- Percona XtraDB Cluster
Vitessのライセンス
Vitessは、Apache2.0ライセンスです。Apache License(アパッチ・ライセンス)のコードが使用されていることの明記を条件に、ソースコードの自由な改変と公開が認められています。
Vitessの公式サイト
Vitessのダウンロードサイト
https://github.com/vitessio/vitess/releases
Vitessのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。