*はNoSQLデータベースです。データベースと対話するための使いやすいAPIがあります。RethinkDBを使用すると、データベースクラスターのセットアップも簡単になります。同じデータベースとテーブルを提供するサーバーのグループ。クラスタは、ダウンタイムなしでデータベースを簡単に拡張する方法です。このチュートリアルでは、クラスターのセットアップ、データのインポート、および保護の方法について説明します。[より複雑なクラスタ構成プロセスに進む前に、このチュートリアル]。LTSを実行する少なくとも2つのドロップレットが必要です(これらの名前はこのチュートリアル全体で使用されます)。root以外のsudoユーザーを設定でRethinkDBをセットアップする前のドロップレット-これを行うことは、優れたセキュリティプラクティスです。このチュートリアルでは、https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-rethinkdb-on-an-ubuntu-12-04-vpsで説明されているPythonクライアントドライバーも参照します。[このチュートリアル]。ノードのセットアップRethinkDBのクラスターには特別なノードはありません。純粋なピアツーピアネットワークです。クラスターを構成する前に、RethinkDBをインストールする必要があります。各サーバーで、ホームディレクトリからRethinkDBキーとリポジトリをapt-getに追加します。-次に、apt-getを更新してRethinkDBをインストールします。rethinkdb次に、RethinkDBを起動時に実行するように設定する必要があります。RethinkDBには、起動時に実行するスクリプトが付属していますが、そのスクリプトを有効にする必要があります。/etc/rethinkdb/instances.d/cluster_instance.conf起動スクリプトは構成ファイルとしても機能します。/etc/rethinkdb/instances.d/cluster_instance.confマシンの名前(Web管理コンソールおよびログファイル内の名前)は、このファイルで設定されます。(一番下の)行を見つけて、これをマシンのホスト名と同じにします。machine-name=server1そしてそれを次のように変更します:machine-name=(注:RethinkDBを初めて起動する前に名前を設定しない場合、DOTAをテーマにした名前が自動的に設定されます。)RethinkDBを設定して、次の行を見つけてすべてのネットワークインターフェイスからアクセスできるようにします。+」の順に押します)。これで、新しい構成ファイルを使用してRethinkDBを起動できます。`/var/lib/rethinkdb/cluster_instance/data/log_file')RethinkDBが起動して実行されています。+`オプションをオンにして、RethinkDBをサーバーの外部からアクセスできるようにしました。これは安全ではありません。そのため、RethinkDBをインターネットからブロックする必要があります。許可されたコンピューターからのサービスへのアクセスを許可する必要があります。クラスターポートでは、ファイアウォールを使用してクラスターを囲みます。Web管理コンソールとドライバーポートについては、SSHトンネルを使用してサーバーの外部からアクセスします。SSHトンネルは、SSHを介してクライアントコンピューター上の要求をリモートコンピューターにリダイレクトし、リモートサーバーのlocalhost名前空間でのみ利用可能なすべてのサービスへのクライアントアクセスを提供します。すべてのRethinkDBサーバーでこれらの手順を繰り返します。すべての外部接続をブロックします。[このチュートリアル]をご覧ください。「iptables-persistent」をインストールして、ルールを保存しましょう。iptables-persistent次のようなメニューが表示されます。Enter」を押します)。IPv6ルールに関する同様のメニューが表示され、保存することもできます。管理ユーザーのセットアップRethinkDBのWeb管理コンソールとドライバーインターフェイスにアクセスするには、SSHトンネルを設定する必要があります。*でsshトンネルの新しいユーザーを作成しましょう。ssh-to-me次に、新しいユーザーの認証キーファイルを設定します。/home/ssh-to-me/.ssh/authorized_keysSSHを使用してクラウドサーバーに接続している場合は、*ローカルコンピューター*でターミナルを開きます。[SSHキーの詳細]をご覧ください。公開鍵を取得してクリップボードにコピーします。/home/ssh-to-me/.ssh/authorized_keysキーをファイルに貼り付けます。他のクラスターノードに対してこれらの手順をすべて繰り返す必要があります。既存のデータベースをクラスターにインポートすることもできます。これは、別のサーバーまたはこのサーバーに既存のデータベースがある場合にのみ必要です。ない場合、RethinkDBは自動的に空のデータベースを作成します。`に保存されていない場合、コピーする必要があります。最初に、現在のRethinkDBデータベースのパスを見つけます。`ディレクトリになります。+`を使用してコピーします。/var/lib/rethinkdb/cluster_instance/data次に、RethinkDBを再起動します。既存のRethinkDBデータベースがある場合、手順は異なります。*の構成ファイルを開きます。/etc/rethinkdb/instances.d/cluster_instance.conf次に、インポートするRethinkDBデータベースのパスを見つけます。+`ディレクトリになります。次の行を追加して、そのパスを構成ファイルに挿入します。次に、RethinkDBを再起動します。*がデータベースの古いマシンの名前を継承することに注意することが重要です。後でデータベースのシャーディングを管理するときに、これを知る必要があります。クラスターの作成クラスターを作成するには、すべてのクラスターマシンが互いのファイアウォールを通過できるようにする必要があります。*マシンで、IPTablesルールを追加して、他のノードがファイアウォールを通過できるようにします。+`をそのサーバーのIPアドレスに置き換える必要があります。ACCEPT追加する他のノードに対してコマンドを繰り返します。次に、ファイアウォールルールを保存します。/etc/iptables/rules.v4"次に、他のノードに対してこれらの手順を繰り返します。*のIPのブロックを解除する必要があります。ここで、すべてのノードを接続してクラスターを作成する必要があります。*に接続し、構成ファイルを開きます。`オプションは、参加するクラスターのアドレスを指定します。join=example.com:29015そしてそれを次のように置き換えます。次に、RethinkDBを再起動します。+`更新を必要としません。*を除く、他のすべてのノードで構成ファイルの編集を繰り返します。これで、RethinkDBクラスターが完全に機能するようになりました!Web管理コンソールへの接続Web管理コンソールは、RethinkDBの基本的な管理機能へのアクセスを提供する使いやすいオンラインインターフェイスです。このコンソールは、クラスターのステータスを表示し、単一のRethinkDBコマンドを実行し、基本的なテーブル設定を変更する必要がある場合に便利です。クラスター内のすべてのRethinkDBインスタンスは管理コンソールを提供しますが、これはサーバーのlocalhost名前空間からのみ利用可能です。これは、ファイアウォールルールを使用して世界中から遮断するためです。+`にリクエストを送信できます。これにより、Web管理コンソールにアクセスできるようになります。*ローカルコンピューター*でSSHを使用してこれを行うことができます。Web管理コンソールが表示されます。use」エラーを受け取った場合は、コンピューターのポート8080を既に使用しています。Web管理コンソールを、コンピューターで使用可能な別のポートに転送できます。[localhost:8081]に移動できます。protected]2つのテストデータベースを持つことに関して競合が発生した場合は、そのうちの1つの名前を変更できます。Pythonドライバーを使用したクラスターへの接続このセットアップでは、RethinkDBサーバー(Web管理コンソール、ドライバーポート、クラスターポート)のすべてが外界からブロックされます。Web管理コンソールと同様に、SSHトンネルを使用してドライバーポートに接続できます。APIドライバー(アプリケーションをビルドするドライバー)がクラスターに接続する方法です。接続するノードを選択します。複数のクライアント(Webアプリサーバーなど)がクラスターに接続している場合は、クラスター全体でそれらのバランスを取る必要があります。クライアントのリストを作成してから、各クライアントにサーバーを割り当てることをお勧めします。クライアントをグループ化して、同様のテーブルを必要とするクライアントが同じクラウドサーバーまたはサーバーのグループに接続し、多くのクライアントでサーバーが過負荷にならないようにします。データベースとWebアプリサーバーが分離されている大規模なシステムでは、実際にデータベース呼び出しを行うWebアプリサーバーからこれを実行する必要があります。*)で新しいキーを承認します。次に、SSHトンネリングを使用して、*接続サーバー*からドライバーポートにアクセスします。-Nこれで、localhost:28015からドライバーにアクセスできます。use」エラーが表示された場合、ポートを変更できます。ポート28016を使用します。-N*接続サーバー*にPythonドライバーをインストールします。ここにはコマンドのクイックランスルーがあり、それらについて詳しくはhttps://www.digitalocean.com/community/tutorials/how-to-install-and-configure-rethinkdb-on-anで読むことができます。[このチュートリアル]。Python仮想環境をインストールします。rethinkディレクトリに移動して、新しい仮想環境構造を作成します。venv環境をアクティブにします(Pythonインターフェイスを起動する前に毎回環境をアクティブにする必要があります。しないと、モジュールが見つからないというエラーが表示されます)。venv/bin/activateRethinkDBモジュールをインストールします。rethinkdb次に、*接続サーバー*からPythonを起動します。28015+」を使用したポートに置き換えます。2"}).run()そして、データを印刷します。list(r.db("test").table("test").run())次のような出力が表示されます。u'7d17cd96-0b03-4033-bf1a-75a59d405e63'}]シャーディングのセットアップRethinkDBでは、複数のクラウドサーバー間で分割(分割)されるようにテーブルを構成できます。シャーディングは、より多くのRAMをキャッシングに使用できるため、単一マシンのRAMに収まるサイズよりも大きいデータセットを簡単に実行できる方法です。シャーディングはデータセットを複数のマシンに分割するため、より多くのディスクスペースがテーブルで使用できるため、より大きな、パフォーマンスの低いテーブルを作成できます。これは、Web管理コンソールから実行できます。これを行うには、Web管理コンソールの[テーブル]タブに移動します。*テーブル(前のセクションで作成したテーブル)をクリックして、設定を入力します。[シャーディング設定]カードまでスクロールします。[シャーディング設定カード]編集*ボタンをクリックしてください。そこで、サーバーの数を入力して、テーブルを分割できます。[リバランス]ボタンをクリックして、設定を保存します。あなたが持つことができる破片の量に最大があることに気付くかもしれません。これは、データベース内のドキュメントの数と同じです。新しいテーブルにシャーディングを設定しようとする場合、さらにデータを待つか、ダミーデータを追加してシャードを追加できるようにする必要があります。高度なシャーディング内部的に、RethinkDBにはドキュメントIDに基づいた範囲ベースのシャードがあります。infinity)に分割する可能性があります。A1のドキュメントを挿入する場合、最初のシャードの範囲内(-∞〜C)にあるため、そのシャードに入ります。シャードの境界を設定して、データベース構成を最適化できます。それを行う前に、再生するデータセットを追加します。Web管理コンソールの[データエクスプローラー]タブで、次のコマンドを実行してテーブルを作成できます(入力後に[実行]をクリックします)。r.db('test').tableCreate('testShards')次に、テストデータを挿入します。{id:"E"}])これで、シャードを詳細に構成できます。そのためには、管理シェルに入る必要があります。管理シェルは、クラスターを制御するためのより高度な方法であり、セットアップを微調整できます。*マシンで、管理シェルを開きます。admin次に、テーブルに関する情報を表示できます。yesRethinkDBには、テーブルに名前を付ける多くの方法があります。これらはすべて同じ意味で使用できます。このシャードを分割しましょう。2つのシャードを作成します。Cコマンドの一般的な形式は次のとおりです。+`を再度実行すると、シャードが分割されたことが示されます。新しいシャードをあるマシンから別のマシンに移動したい場合があります。*に固定(移動)できます。rethink2コマンドの一般的な形式は次のとおりです。‘すると、シャードが別のサーバーに移動したことがわかります。共通の境界がわかっている場合は、2つのシャードをマージすることもできます。Cコマンドの一般的な形式は次のとおりです。+」と入力しますマシンを安全に取り外すドキュメントが複数のマシンに分割されている場合、1つのマシンは常にプライマリインデックスを保持します。特定のドキュメントのプライマリインデックスを持つクラウドサーバーがオフラインになると、ドキュメントは失われます。そのため、マシンを削除する前に、マシン上のすべてのプライマリシャードを移行する必要があります。*を唯一のノードとして残します。*でRethinkDB管理シェルに入ります。*が担当するシャード(ドキュメントのグループ)をリストします。rethink2出力は次のようになります。bdfceefb-5ebe-4ca6-b946-869178c51f93”を持つテーブルのプライマリシャードを担当していることを示しています。rethink1コマンドの一般的な形式は次のとおりです。+`を実行すると、シャードがそのマシンに移動されたことがわかります。*に移動したら、管理シェルを終了する必要があります。exit不要なサーバーでRethinkDBを停止しても安全です。重要:_remove_したいマシンでこれを実行してください。stop次にWeb管理コンソールにアクセスすると、RethinkDBは真っ赤な警告を表示します。[問題の解決]をクリックします。[RethinkDB問題リスト]表示されている問題が上記のように見え、マスターの責任がリストされていない場合は、[完全に削除]をクリックします。これにより、クラスターからマシンが削除されます。+)、必ずすべてのプライマリシャードをそのサーバーから移行します。注:マシンをクラスターに再度追加しようとすると、ゾンビマシンに関するメッセージが表示されます。データディレクトリを削除して、この問題を修正できます。