今日の記事では、Ubuntu16.04でCouchDBレプリケーションをセットアップします。 CouchDBは、cassandraによく似たNoSQLデータベースです。 CouchDBはCassandraのJavaではなくErlangで記述されており、2008年からApache Software Foundationプロジェクトになっています。このデータベースは、MongoDBとは異なり、ドキュメント指向です。このチュートリアルでは、Ubuntu16.04サーバーを実行している2つのノードが必要です。ラップトップでKVMインスタンスを使用します。VMまたは物理マシンのいずれかを使用できます。では始めましょう。
UbuntuノードへのCouchDBのインストール
最初にソースリストを更新しましょう
sudo apt update
次に、PPAリポジトリを追加できるパッケージsoftware-properties-commonをインストールします。デフォルトで含まれている可能性がありますが、含まれていない場合は、このコマンドを実行する必要があります
sudo apt install software-properties-common
次に、データベースソフトウェアをインストールするcouchdbのリポジトリを追加します
sudo add-apt-repository ppa:couchdb/stable
次に、簡単なコマンドでcouchdbをインストールできます:
sudo apt-get install couchdb
このコマンドが実行された後、couchdbがインストールされ、ポート5984で実行されます。curlを使用してデータベースに関する情報を取得できますか
curl localhost:5984

ご覧のとおり、すでに実行されています。
データベースを作成および削除する方法
Couchdbはhttpリクエストを介して操作されます。何かをしたいときは、CouchDBが実行されているデフォルトのポートでローカルホストにリクエストを送信します。これはポート5984です。セキュリティ上の理由から、これはlocalhost、couchdbが実行されているマシンでのみ実行できます。
データベースを追加しましょう:
miki@ubuntu-1:~$ curl -X PUT localhost:5984/new_database
{"ok":true}
システム上のすべてのデータベースを一覧表示しましょう:
miki@ubuntu-1:~$ curl -X GET http://127.0.0.1:5984/_all_dbs
["_replicator","_users","new_database"]
最初の2つはデフォルトであり、new_databaseが作成したものです。それからそれを削除しましょう。データベースの削除は、次のコマンドで実行されます
miki@ubuntu-1:~$ curl -X DELETE http://127.0.0.1:5984/new_database
{"ok":true}
2番目のコマンドをもう一度実行します
miki@ubuntu-1:~$ curl -X GET http://127.0.0.1:5984/_all_dbs
["_replicator","_users"]
削除したため、new_databaseが欠落していることがわかります。
布団-CouchDBGUI
http://localhost:5984/_utils
にアクセスした場合 ブラウザで布団が見つかります。 FutonはCouchDBGUIフロントエンドです。ただし、前述のように、セキュリティ上の理由から、CouchDBはローカルホストからの管理のみを有効にします。つまり、CouchDBをインストールしたサーバーからの管理です。 localhostの代わりにサーバーのIPアドレスを入力することはできません。したがって、ラップトップからサーバーを管理する場合は、ちょっとしたトリックを使用する必要があります。サーバーへのsshトンネルを作成し、ミニVPNを作成して、サーバーにリクエストがローカルホストから送信されていると認識させる必要があります。これを行うには、ローカルコンピューターで、次のコマンドを入力します。
miki@ThinkPad-X220T:~$ ssh -L5984:127.0.0.1:5984 [email protected]
これにより、必要なトンネルが作成されます。次に、ブラウザを起動して、http://localhost:5984/_utils/index.html
に移動できます。
これに似たユーザーインターフェイスが提供されます

次の章でデータベースを複製するので、ローカルホスト以外の場所からのレプリカを受け入れるように宛先データベースを設定する必要があります。布団の設定ページのbind_addressパラメータで設定できます。 0.0.0.0
に設定する必要があります ローカルホストだけでなく、すべてのIPをリッスンします。このようなもの:

これは両方のノードで実行できますが(別のノード用に新しいsshトンネルを作成する必要があります)、通常、レプリカが作成されたターゲットのみがすべてのIPアドレスでリッスンする必要があります。ソースはローカルホストのみをリッスンし続けることができます。
データベースをローカルに複製する
データベースの複製は、CoucdDBの他のすべてと同様に、HTTPリクエストによっても実行されます。ソースデータベースと宛先データベースを指定する必要があります。宛先は、ローカルまたはリモートのデータベースにすることができます。すでにubuntu-1がすべてのIPをリッスンするように設定しているので、ubuntu-2ホストで複製するdbを作成しましょう。
miki@ubuntu-2:~$ curl -X PUT localhost:5984/db-replica
{"ok":true}
次に、このデータベースをローカルに複製する方法を見てみましょう。同じサーバー上
curl -H 'Content-Type: application/json' -X POST http://localhost:5984/_replicate -d ' {"source": "http://localhost:5984/db-replica", "target": "http://localhost:5984/foo", "create_target": true, "continuous": true} '
{"ok":true,"_local_id":"f8fa7b615b4e951d7ab7254ed58d049d+continuous+create_target"}
このコマンドは、ローカルホスト上にデータベースfooを作成し、ソースとして、前に作成したデータベースdb-replicaを取得する必要があります。オプションcontinueも有効にしました。これは、ソースデータベース(この場合はdb-replica)に変更を加えると、データベースが定期的に同期されることを意味します。このコマンドを実行した後、使用可能なすべてのデータベースを確認できます
miki@ubuntu-2:~$ curl -X GET localhost:5984/_all_dbs
["_replicator","_users","db-replica","foo"]
fooデータベースが作成されました。
リモートレプリケーション
ここでリモートで実行してみましょう。ソースはubuntu-2サーバー上のdb-replicaであり、ターゲットはubuntu-1サーバー上でリモートになります。存在しない場合は新しいデータベースを作成し(create_targetパラメーター)、すべての変更が発生したときにレプリカを継続的に同期します。
miki@ubuntu-2:~$ curl -H 'Content-Type: application/json' -X POST http://localhost:5984/_replicate -d ' {"source": "http://localhost:5984/db-replica", "target": "http://192.168.122.223:5984/remotefoo", "create_target": true, "continuous": true} '
{"ok":true,"_local_id":"cf7f6399835a893ab48282cb269eb1ab+continuous+create_target"}
ubuntu-1サーバーのデータベースを確認しましょう
miki@ubuntu-1:~$ curl -X GET localhost:5984/_all_dbs
["_replicator","_users","dbtest","remotefoo"]
リモートレプリケーションがどのように機能するかがわかります。 1回限りのレプリケーションが必要な場合は、連続パラメータをfalseに変更するか、単に省略します。 couchDBログを表示したい場合 、/ var / log / couchdb/couch.logディレクトリにあります。アクセスするにはsudoまたはroot権限が必要です。ログをインタラクティブに監視する場合は、このコマンドで実行できます
sudo tail -f /var/log/couchdb/couch.log
結論
基本的なコマンドとCouchDBの使用法について説明しました。新しいデータベースの作成、削除、ローカルまたはネットワーク経由のレプリケーションはすべてHTTPリクエストによって行われ、アプリにコーディングできます。ログのチェックは通常のtail-fコマンドで実行され、GUIが必要な場合は、コマンドラインで実行するのに十分快適ではないと感じるすべてのタスクを実行するのに十分直感的なFutonがあります。この記事は以上です。読んでいただきありがとうございます。