前書きCockroachDBは、一貫性、スケーラビリティ、および存続可能性を提供するオープンソースの分散SQLデータベースです。CockroachDBのセットアップは簡単です。複数のサーバー(それぞれ_node_と呼ばれる)にインストールし、それらを結合して単一のエンティティ(_cluster_と呼ばれる)のように動作させます。クラスター内のすべてのノードは対称的に動作し、同じデータにアクセスできます。この種の設計では、データストレージのニーズが増大するにつれて、新しいノードを作成して既存のクラスターに結合することにより、システムの容量を簡単に増やすことができます。[CockroachDBのスケーラビリティモデル]をご覧ください。目標このガイドでは、CockroachDBを_分散型マルチノードクラスター_複数のサーバーに展開して、分散型のフォールトトレラントデータベースを作成します。CockroachDBを複数のサーバーにインストールし、それらをノードとして起動してから、クラスターとして一緒に動作するようにします。データの分散とクラスターが障害に耐える方法を示し、アプリケーションをCockroachDBに接続する方法を示します。このガイドでは、SSL暗号化を使用しない安全でない展開の設定について説明しますが、運用にはお勧めしません。CockroachDBはhttps://www.cockroachlabs.com/docs/deploy-cockroachdb-on-digital-ocean.html[DigitalOceanの安全な展開手順]も提供しています。(リンクの最初の段落に書かれていることにもかかわらず、記事の*セキュア*バージョンが選択されています。開始する前に、次のものが必要です。それらはすべて同じ地域にある必要があります。このガイドでは、次のホスト名を使用します。[sudo権限を持つ非rootユーザーを追加]TCPトラフィックが次のポートで許可されていることを確認してください。UFWを設定している場合ファイアウォール各サーバーで次の2つのポートを許可する必要があります。[NTPをインストールおよび構成します]。(簡単なテストの場合、これは確固たる要件ではありません)すべてのサーバーのパブリックおよびプライベートIPアドレスをメモします。``などの代用ホスト名とIPアドレスを使用します。プライベートIPを見つけるには、DigitalOceanコントロールパネルからサーバーをクリックします。*は、情報の一番上の行にリストされています。+`バイナリ(つまり、プログラム)のコピーが必要です。*にCockroachDBをインストールし、他のサーバーにも同じことを行います。+」バイナリをダウンロードしてインストールします。https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz?s=doバイナリを抽出します。cockroach-latest.linux-amd64/cockroachバイナリを移動して、コマンドラインから簡単にアクセスできるようにします。/usr/local/binバージョンを確認して、バイナリにアクセスできることを確認します。+」コマンドが見つからない場合は、このセクションをもう一度確認して、プログラムをダウンロードして解凍したことを確認してください。最後に、ノードとして使用する予定の他の2つのサーバーに対してこれらのコマンドを繰り返します。CockroachDBがすべてのマシンで使用できるようになったので、クラスターをセットアップできます。最初のCockroachDBノードがクラスターを起動します。この最初のノードには特別なものはありません。一つから始めて、他の人に参加してもらうだけです。*のプライベートIPアドレスを書き留めます。DigitalOceanコントロールパネルから、このホストをクリックします。*は、情報の一番上の行にリストされています。*で実行する必要があります。`++`を実際のプライベートIPアドレスに置き換えます。UIダッシュボード(CockroachDBにバンドルされているクラスターに関する情報を表示するツール)に移動して、詳細を表示できます。今回はパブリックIPアドレスです。ここでは、1つのノードが実行されていることがわかります。タイルに警告の感嘆符(!)が表示されます。*があることが示されます。これは、十分なノードがないことを意味します。現時点ではノードが1つしかないため、これは理解できます。1つのノードでは、データが他のソースに十分に複製されないため、データは耐障害性ではありません。ノードがダウンすると、データが失われます。次のステップでは、このクラスターに他の2つのサーバーをノードとして追加することで、これを修正します。3つのノードを持つことで、CockroachDBはデータのコピーが少なくとも3つあることを保証します。したがって、データを完全に失うことなくノードを失う可能性があります。+`コマンドでCockroachDBノードを起動します。ここでコマンドを更新して、プライベートIPアドレスを介して最初のサーバーのクラスターに参加するように指定します。*の両方にプライベートIPアドレスが必要になり、以下で強調表示されている変数「」と「」を置き換えます。*で、プライベートIPアドレスを使用してこのコマンドを繰り返します。最初のノードにも参加させます。\--join=:26257これで、任意のノードから管理UIにアクセスすると、クラスターに3つのノードがあることがわかります。[3つのノードを実行しているクラスターを示すCockroachDB管理UI]すべてのノードがクラスターを介して接続されているため、すべてのノードが同じデータにアクセスできます。–データ配布のデモンストレーション1つのノードにデータを書き込むと、クラスター内の他のすべてのノードがデータにアクセスできます。[ビルトインSQLクライアントから表示することです。*から、サンプルデータを生成します。+`というサンプルデータベースが作成されます。これで、SQLクライアントを起動し、クラスター内のデータベースを表示できます。+」データベースが一覧表示されます。*に移動し、同じコマンドを実行します。+」データベースにアクセスできることがわかります。*サイドバーからデータベースが存在することを表示することもできます。–クラスターからノードを削除するCockroachDBは、クラスター内のすべてのノードにデータを配信することに加えて、サーバーが停止した場合のデータの可用性と整合性も保証します。*はクラスター内のノードの数です。したがって、この3つのノードの例では、データを失うことなく1つのノードを失うことを許容できます。これを実証するために、クラスターからノードを削除し、クラスターのすべてのデータがまだ利用可能であることを示します。次に、ノードをクラスターに再結合し、オフライン中に発生したすべての更新を受信することを確認します。*から、SQLクライアントをまだ起動していない場合は起動します。+`テーブルの行数をカウントします。startrek.quotes;テーブルには200行あることがわかります。+`を押してSQLクライアントを終了します。次に、このノードをクラスターから削除し、すべてのデータが他のノードから引き続き利用できることを確認します。*)から、ゴキブリプロセスを停止します。*など)に切り替えて、SQLクライアントを起動します。+`テーブルの行数をカウントします。startrek.quotes;クラスター内のノードの1つを失いましたが、まだ200行のデータがあることがわかります。これは、CockroachDBがシステム障害を正常に許容し、データの整合性を維持したことを意味します。(オプション)ステップ6-ノードをクラスターに再結合するまた、CockroachDBがオンラインに戻ったサーバーを適切に処理することを示すこともできます。いくつかのデータを削除してから、削除したノードをクラスターに再結合します。再結合すると、CockroachDBが復活したノードから同じデータを自動的に削除することがわかります。+」が50を超えるすべての引用符を削除します。startrek.quotes;133行のデータが表示されます。*)に戻り、クラスターに再参加させます。\--join=:26257組み込みのSQLクライアントを起動します。+`テーブルに含まれる行の数をカウントします。startrek.quotes;まだ133でなければなりません。そのため、更新が発生したときにオフラインであったにもかかわらず、ノードはクラスターに再結合するとすぐに更新されます。–アプリケーションの接続クラスターを起動して実行すると、クラスターをアプリケーションのデータベースとして使用できます。これには2つの部分が必要です。アプリケーションで使用するドライバー(CockroachDBはPostgreSQLドライバーで動作します)適切な接続文字列このガイドは一般的な例を示しています。独自のアプリケーションの詳細を指定する必要があります。[互換性のあるPostgreSQLクライアントドライバーのリストから]を選択してインストールします。次に、アプリケーションをデータベースに接続する必要がある任意の時点で適切な接続文字列を使用します。接続文字列はポート「26257」に接続する必要があり、任意のノードのIPアドレスを使用できます。これは、ファイアウォールがポート「26257」での接続も許可する必要があることを意味します(前提条件で設定したとおり)。PDO接続文字列は次のとおりです。[利用可能な多数のコードサンプル]があります。結論この時点で、3ノードクラスターを作成し、CockroachDBの分散機能と存続可能機能を確認し、クラスターをアプリケーションに接続する方法を確認しました。CockroachDBの新しいバージョンが利用可能です*書き込みは手動でダウンロードしてインストールする必要があります。ノードを追加して展開を水平にスケーリングする場合は、4番目のノードなどで上記の2番目と3番目のノードの手順に従います。+`バイナリをインストールし、新しいノードを既存のクラスターに参加させることだけです。[推奨される運用設定]をご覧ください。[CockroachDBのドキュメント]への一般的なリンクを次に示します。