Riakクラウドストレージ。パート1。RiakKVのセットアップ

Riak CS(Cloud Storage)は、RiakKV上で実行される使いやすいオブジェクトストレージソフトウェアです。 Riak(KV)は、分散型NoSQLキー値データベースです。 Riak CSは、あらゆるサイズのクラウドストレージのシンプルさ、可用性、および分散を提供するように設計されており、パブリックとプライベートの両方のクラウドアーキテクチャを構築するために、または高負荷のアプリケーションとサービスのインフラストラクチャストレージとして使用できます。 Riak CSAPIはAmazonS3と互換性があり、さまざまな状況のレポートを生成する機能をサポートしています。



画像


この記事は、Riak CSシステムバージョン2.1.1の公式マニュアルを無料で翻訳したものです。RiakCS



ストレージシステムでは、3つのコンポーネントが相互に連携します。つまり、各コンポーネントは他のコンポーネントと連携するように構成する必要があります。



  • Riak(KV)は、エンドシステムとして機能するデータベースシステムです。
  • Riak CSは、Riakの上にあるクラウドストレージレイヤーであり、ストレージとAPI機能を提供し、ファイルとメタデータをRiakに保存して、エンドユーザーに転送します。
  • Stanchion -Riakインスタンスのバケットやユーザーなどのグローバルに一意のエンティティを含むクエリを管理します。たとえば、ユーザーの作成、バケットの作成または削除。


さらに、RiakCSシステムとのメッセージングで使用するためにS3クライアントを構成することもできます。



システム上のRiakCSノードごとに1つのRiakノードを計画する必要があります。 RiakノードとRiakCSノードは異なる物理マシンで実行できますが、ほとんどの場合、同じ物理マシンで1つのRiakノードと1つのRiakCSノードを実行することをお勧めします。単一の物理マシンにRiakとRiakCSノードの両方のニーズを満たすのに十分な電力があると仮定すると、ネットワークの待ち時間が短縮されるため、通常、パフォーマンスが向上します。



システムが複数のノードで構成されている場合、構成は主にコンポーネント間の通信のセットアップに関するものです。ログファイルが保存される場所や場所などの他の設定にはデフォルト値があり、非標準値を使用する場合にのみ変更する必要があります。



システムコンポーネントの構成。CS用のRiakKVのセットアップ



Riak CSはRiakの上に構築されたアプリケーションであるため、Riak CSを起動するときは、Riakの構成に注意を払うことが非常に重要です。このドキュメントは、Riak構成ガイドであると同時に、重要な構成パラメーターを説明するためのリファレンスドキュメントでもあります。



構成する前に、RiakKVとRiakCSがクラスター内のすべてのノードにインストールされていることを確認してください。一方、Stanchionは、クラスター全体の1つのノードにのみインストールする必要があります。



画像


RiakCSのバックエンド



デフォルトでは、Riakが使用するバックエンドはBitcaskですが、Riak CSパッケージには、RiakCSシステムの一部であるRiakクラスターが使用する必要がある特別なバックエンドが含まれています。通常のバージョンには、Riakに付属する標準のマルチバックエンドがあります。



Riak CSによって内部的に使用されるのと同じRiakバケットは、LevelDBバックエンドを必要とするセカンダリインデックスを使用します。 Riak CSシステムの他の部分は、Bticaskバックエンドの恩恵を受けることができます。例示的なマルチバックエンドの使用は、これらのバックエンドの両方を利用してパフォーマンスと機能の最良の組み合わせを実現するためにRiakCSに含まれています。次のセクションでは、このマルチバックエンドを使用するようにRiakを適切に構成する方法について説明します。



バックエンドは、Riakがデータを保存するために使用するものです。Riak KVの兵器庫には、ビットキャスク、レベルDB、メモリ、マルチなど、いくつかのバックエンドがあります。


さらに、ストレージ計算システムはRiakMapReduseを使用してファイルをバケットに要約します。つまり、ストレージを計算する前に、プロビジョニングされたRiakCSファイルを探す場所をすべてのRiakノードに指示する必要があります。



RiakノードをRiakCSシステムの一部として構成するには、プロトコルバッファーを介したメッセージング用のIPアドレス、IPアドレス、ポートなど、他のいくつかのパラメーターを変更する必要があります。残りの設定は、必要に応じて変更できます。次のセクションでは、RiakCSシステムの一部として動作するようにRiakノードを構成する方法について説明します。



Riakバックエンドの設定



まず、riak.confまたはadvanced.config /app.config構成ファイルが編集されます。これらのファイルは、/ etc / riakまたは/ opt / riak / etcディレクトリにあります。デフォルトでは、RiakはBitcaskバックエンドを使用します。最初に行う必要があるのは、次の行を削除して構成ファイルを変更することです:



RIAK.CONF



## Delete this line:
storage_backend = bitcask


ADVANCED.CONFIG



{riak_kv,
 [ %% Delete this line: 
{storage_backend, riak_kv_bitcask_backend},
 ]}


APP.CONFIG



{riak_kv, 
  [ %% Delete this line:
    {storage_backend, riak_kv_bitcask_backend},
]}


次に、Riak用のRiakCSモジュールの必要性を示し、カスタマイズされたRiakCSバックエンドを使用するようにRiakに指示する必要があります。これにはadvanced.configまたはapp.configファイルを使用し、次のオプションを追加する必要があります:



ADVANCED.CONFIG



{eleveldb, [
    {total_leveldb_mem_percent, 30}
    ]},
{riak_kv, [
    %% Other configs
    {add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
    {storage_backend, riak_cs_kv_multi_backend},
    {multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
    {multi_backend_default, be_default},
    {multi_backend, [
        {be_default, riak_kv_eleveldb_backend, [
            {data_root, "/var/lib/riak/leveldb"}
        ]},
        {be_blocks, riak_kv_bitcask_backend, [
            {data_root, "/var/lib/riak/bitcask"}
        ]}
    ]},
    %% Other configs
]}


APP.CONFIG



{eleveldb, [
    {total_leveldb_mem_percent, 30}
    ]},
{riak_kv, [
    %% Other configs
    {add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
    {storage_backend, riak_cs_kv_multi_backend},
    {multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
    {multi_backend_default, be_default},
    {multi_backend, [
        {be_default, riak_kv_eleveldb_backend, [
            {data_root, "/var/lib/riak/leveldb"}
        ]},
        {be_blocks, riak_kv_bitcask_backend, [
            {data_root, "/var/lib/riak/bitcask"}
        ]}
    ]},
    %% Other configs
]}


これらの値の多くは、オペレーティングシステムに固有のディレクトリのバリエーションに依存することに注意することが非常に重要です。したがって、それに応じて指示に従ってください。たとえば、add_pathsパラメータはRiakCSが/ usr / lib / riak-csにインストールされていることを前提としていますが、data_rootオプションはRiakが/ var / libにインストールされていることを前提としています。(注。私の場合はadd_paths- / usr / lib64 / riak-cs /でした)。



この構成は、RiakCSがRiakと同じマシンにインストールされていることを前提としています。そうでない場合は、パッケージを別のホストにコピーする必要があります。



兄弟の作成を設定する



ここで、allow_multパラメーターをtrueに設定する必要があります。riak.conf構成ファイルに行を追加するか、advanced.configまたはapp.configにriak_coreセクションを追加できます。



RIAK.CONF



buckets.default.allow_mult = true




ADVANCED.CONFIG

{riak_core, [
    %% Other configs
    {default_bucket_props, [{allow_mult, true}]},
    %% Other configs
]}


APP.CONFIG



{riak_core, [
    %% Other configs
    {default_bucket_props, [{allow_mult, true}]},
    %% Other configs
]}


これにより、RiakはRiakCSが機能するために必要な兄弟を作成できます。クライアントライブラリを使用してRiakCSに接続している場合でも、心配する必要はありません。すべてのRiak CS操作はその定義に従って厳密に一貫しているため、競合を解決する必要はありません。



兄弟は、オブジェクトが異なるノードで異なる値を持つように、1つのキーに複数のオブジェクトを格納する方法です。


注:allow_mult

Riak CSもサポートするRiakノードでは、allow_multパラメーターが常にtrueに設定されます。値がfalseの場合、RiakCSは起動をリセットします。


ホスト名とIPアドレスの設定



各Riakノードには、nodenameオプションを使用してriak.confで指定できる名前があります。app.config構成ファイルを使用している場合は、app.configと同じディレクトリにvm.argsというファイルを作成し、-nameフラグを使用してホスト名を指定する必要があります。ノードには@形式で名前を付けることをお勧めします。したがって、同じホスト100.0.0.1上に3つの実行中のノードがある場合、それらにriak1 @ 100.0.0.1、riak2 @ 100.0.0.1、およびriak3@100.0.0.1という名前を付けるか、test_cluster1 @ 100.0などのより具体的な名前を付けることができます。 .0.1、user_data3 @ 100.0.0.1など。以下の例は、ホスト名をriak1@127.0.0.1に変更する方法を示しています。これは、ローカルホストで機能します。



RIAK.CONF



 nodename = riak1@127.0.0.1 


VM.ARGS



 -name riak1@127.0.0.1


開始してクラスターに追加する前に、すべてのノードに名前を付ける必要があります。



チューニングテスト



必要なノード設定がすべて完了したので、Riak:



SHELLの起動を試みることができます。



 riak start 


私の場合の答え:



画像



ここでは少し待たなければなりません。次に、実行中のノードのテストを開始できます。



シェル



 riak ping


応答がpongの場合、Riakが実行されています。応答がNodeがpingに応答していない場合、問題が発生しています。



私の場合の答え:



画像



ノード正しく起動なかった場合、問題を特定できる場合は、ノードの/ logディレクトリにあるerlang.log.1ログを確認してください。最も一般的なエラーの1つはinvalid_storage_backendです。これは、advanced.configまたはapp.configのRiak CSライブラリへのパスが正しくない(またはRiak CSがサーバーにインストールされていない)ことを示しています。このエラーにもかかわらず、riak_cs_kv_multi_backendからriak_kv_multi_backendに変更していないことを確認してください。



プロトコルバッファを使用するようにRiakを設定する



Riakプロトコルバッファ設定は、/ etc / riak /ディレクトリにあるadvanced.configまたはapp.configファイルのriak.confまたはriak_apiセクションにあります。デフォルトでは、ホストのIPアドレスは127.0.0.1、ポートは8087です。ローカル環境の外部でRiakおよびRiak CSを実行する場合は、これらを変更する必要があります。127.0.0.1をRiakホストのIPアドレスに置き換え、ポート8087を適切なものに置き換えます。



RIAK.CONF



 listener.protobuf.internal = 10.0.2.10:10001


ADVANCED.CONF



{riak_api, [
    %% Other configs
    {pb, ["10.0.2.10", 10001]},
    %% Other configs
]}




APP.CONFIG

riak_api, [
    %% Other configs
    {pb, ["10.0.2.10", 10001]},
    %% Other configs
]}


注: riak.confファイルのlistener.protobuf.internalパラメーターの値(またはadvanced.conf / app.configのpbパラメーターの値)は、Riak CSriak-cs.configおよびStanchionstanchion.conf(またはriak_host)のriak_hostの値と一致する必要があります。 Advanced.config / app.config)ファイル内。


ポート番号に関する注意

ポートが別のアプリケーションで使用されているポートと競合する場合、またはロードバランサーまたはプロキシサーバーを使用している場合は、別のポート番号が必要になる場合があります。


また、Riak protobuf.backlog(またはadvanced.config / app.configファイルのpb_backlog)のサイズが、riak-cs.configのRiak CSに指定されたpool.request.sizeサイズ以上であることを確認することをお勧めします(またはAdvanced.config / app.confファイルのrequest_pool_size)。



Riak CSのpool.request.sizeの値が変更されている場合は、Riakのprotobuf.backlogの値も更新する必要があります。



その他のRiak設定



riak.confファイルとadvanced.configファイルには、ログファイルの生成方法と保存場所を構成するその他の設定が含まれています。これらの設定にはデフォルト値があり、ほとんどの場合に機能するはずです。詳細については、構成ファイルに関するドキュメントを読むことをお勧めします。



RiakのIPアドレスを設定する



RiakのIPアドレスを構成するときは、1つのノードだけで作業している場合でも、システムにノードを追加している場合でも、Riakノードに一意のIPアドレスがあることを確認する必要があります。RiakのIPアドレスは、riak.confに含まれています。または、app.configファイルを使用している場合は、他のオペレーティングシステムでは/ etc / riakディレクトリ(または/ opt / riak / etc /)にあるvm.args構成ファイルに含まれています。 )。



最初に、RiakのIPアドレスを含む行は、次の場所にあるローカルホストを指しています:



RIAK.CONF



 nodename = riak@127.0.0.1


VM.ARGS



 -name riak@127.0.0.1


127.0.0.1を、Riakホストの優先IPアドレスまたはホスト名に置き換えます。



パフォーマンスと帯域幅の設​​定



パフォーマンス上の理由から、/ etc / riak /または/ opt / riak / etcディレクトリにあるriak構成ファイルriak.confまたはvm.argsに値を追加することを強くお勧めします。



RIAK.CONF



 erlang.max_ports = 65536


VM.ARGS



## This setting should already be present for recent Riak installs.
 -env ERL_MAX_PORTS 65536


JavaScriptMapReduceを無効にする



非推奨のJavaScriptMapReduceをRiakCSのどのバージョンでも使用しないことをお勧めします。パフォーマンス上の理由から、riak.conf構成ファイル、またはadvanced.confまたはapp.configのriak_kvセクションで設定して、JavaScriptMapReduce操作を実行する仮想マシンを無効にする必要があります



。RIAK.CONF



 javascript.map_pool_size = 0
 javascript.reduce_pool_size = 0
 javascript.hook_pool_size = 0 


ADVANCED.CONFIG



{riak_kv, [
    %% Other configs
    {map_js_vm_count, 0},
    {reduce_js_vm_count, 0},
    {hook_js_vm_count, 0}
    %% Other configs
]}


APP.CONFIG



{riak_kv, [
    %% Other configs
    {map_js_vm_count, 0},
    {reduce_js_vm_count, 0},
    {hook_js_vm_count, 0}
    %% Other configs
]}


次に、RiakCSシステムの残りのコンポーネントを構成する必要があります。



リンク



Riakクラウドストレージ。パート

1。RiakKVRiakクラウドストレージの構成パート

2。RiakCSRiakCloudStorageコンポーネントの構成パート3。支柱、プロキシおよび負荷分散、S3クライアント



オリジナルマニュアル。



All Articles