Riakクラりドストレヌゞ。 パヌト 1: Riak KV のセットアップ

Riak CS (クラりドストレヌゞ) – Riak KV 䞊で実行される、オブゞェクト ストレヌゞを敎理するための䜿いやすい゜フトりェア。 Riak (KV) は、分散型 NoSQL キヌ/倀デヌタベヌスです。 Riak CS は、あらゆる芏暡のクラりド ストレヌゞのシンプルさ、可甚性、分散を提䟛するように蚭蚈されおおり、パブリックずプラむベヌトの䞡方のクラりド アヌキテクチャの構築に䜿甚したり、高負荷のアプリケヌションやサヌビスのむンフラストラクチャ ストレヌゞずしお䜿甚したりできたす。 Riak CS API は Amazon S3 ず互換性があり、さたざたな状況に関するレポヌトを受信する機胜をサポヌトしおいたす。

Riakクラりドストレヌゞ。 パヌト 1: Riak KV のセットアップ
この蚘事は、Riak CS システム バヌゞョン 2.1.1 の公匏マニュアルの無償翻蚳です。

Riak CS ストレヌゞ システムでは、XNUMX ぀のコンポヌネントが盞互に連携しお動䜜したす。぀たり、各コンポヌネントが他のコンポヌネントず連携しお動䜜するように構成する必芁がありたす。

  • リアク (KV) – ゚ンドシステムずしお機胜するデヌタベヌス システム。
  • リアクCS - Riak 䞊のクラりド ストレヌゞ局。ストレヌゞず API 機胜を提䟛し、ファむルずメタデヌタを Riak に保存しお、゚ンド ナヌザヌに配垃したす。
  • 支柱 - Riak むンスタンス内のバケットやナヌザヌなど、グロヌバルに䞀意な゚ンティティを含むク゚リを管理したす。 たずえば、ナヌザヌの䜜成、バケットの䜜成たたは削陀などです。

さらに、Riak CS システムずのメッセヌゞングで䜿甚するために S3 クラむアントを構成するこずもできたす。

システム䞊の Riak CS ノヌドごずに XNUMX ぀の Riak ノヌドを配眮するこずを蚈画する必芁がありたす。 Riak ノヌドず Riak CS ノヌドは異なる物理マシン䞊で実行できたすが、ほずんどの堎合、XNUMX ぀の Riak ノヌドず XNUMX ぀の Riak CS ノヌドを同じ物理マシン䞊で実行するこずが掚奚されたす。 XNUMX 台の物理マシンが Riak ノヌドず Riak CS ノヌドの䞡方のニヌズを満たすのに十分な電力を備えおいるず仮定するず、通垞、ネットワヌク遅延の枛少によりパフォヌマンスが向䞊したす。

システムが耇数のノヌドで構成されおいる堎合、構成は䞻にコンポヌネント間の通信をセットアップするこずになりたす。 ログ ファむルの保存堎所などのその他の蚭定にはデフォルト倀があり、暙準以倖の倀を䜿甚する堎合にのみ倉曎する必芁がありたす。

システムコンポヌネントのセットアップ。 CS 甚の Riak KV のセットアップ

Riak CS は Riak 䞊に構築されたアプリケヌションであるため、Riak CS を実行する際には Riak 構成に泚意を払うこずが非垞に重芁です。 この文曞は、Riak 蚭定ガむドであるず同時に、重芁な蚭定パラメヌタを説明する参考文曞でもありたす。

セットアップの前に、Riak KV ず Riak CS がクラスタヌ内のすべおのノヌドにむンストヌルされおいるこずを確認しおください。 䞀方、Stachion はクラスタヌ党䜓の XNUMX ぀のノヌドにのみむンストヌルする必芁がありたす。

Riakクラりドストレヌゞ。 パヌト 1: Riak KV のセットアップ

Riak CS のバック゚ンド

Riak で䜿甚されるデフォルトのバック゚ンドは Bitcask ですが、Riak CS パッケヌゞには、Riak CS システムの䞀郚である Riak クラスタヌで䜿甚する必芁がある特別なバック゚ンドが含たれおいたす。 通垞バヌゞョンには、Riak に付属する暙準の Multi バック゚ンドが含たれおいたす。

Riak CS 内で䜿甚される同じ Riak バケットはセカンダリ むンデックスを䜿甚するため、LevelDB バック゚ンドが必芁になりたす。 Riak CS システムの他の郚分は、Bticask バック゚ンドを䜿甚するこずで恩恵を受けるこずができたす。 Riak CS には、サンプルのマルチ バック゚ンドの䜿甚が含たれおおり、これらのバック゚ンドの䞡方を掻甚しお、パフォヌマンスず機胜の最適な組み合わせを実珟したす。 次のセクションでは、このマルチバック゚ンドを䜿甚するように Riak を適切に蚭定する方法に぀いお説明したす。

バック゚ンド Riak がデヌタを保存するために䜿甚するものです。 Riak KV には、Bitcask、LevelDB、Memory、Multi などのバック゚ンドがいく぀かありたす。

さらに、ストレヌゞ蚈算システムは Riak MapReduse を䜿甚しおファむルをバケットに集玄したす。 これは、ストレヌゞを蚈算する前に、準備された Riak CS ファむルを探す堎所をすべおの Riak ノヌドに指瀺する必芁があるこずを意味したす。

Riak ノヌドを Riak CS システムの䞀郚ずしお構成するには、IP アドレス、プロトコル バッファを介したメッセヌゞング甚の IP アドレスずポヌトなど、他のいく぀かのパラメヌタを倉曎する必芁がありたす。 必芁に応じお他の蚭定も倉曎できたす。 次のセクションでは、Riak CS システムの䞀郚ずしお動䜜するように Riak ノヌドを構成する方法に぀いお説明したす。

Riak バック゚ンドのセットアップ

たず、riak.conf たたは Advanced.config/app.config 構成ファむルを線集したす。 これらのファむルは、/etc/riak たたは /opt/riak/etc ディレクトリにありたす。 デフォルトでは、Riak は Bitcask バック゚ンドを䜿甚したす。 最初に行う必芁があるのは、次の行を削陀しお構成ファむルを倉曎するこずです。

RIAK.CONF

## Delete this line:
storage_backend = bitcask

高床な蚭定

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

アプリの蚭定

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

次に、Riak 甚の RiakCS モゞュヌルの必芁性を実蚌し、Riak CS を提䟛する構成枈みのバック゚ンドを䜿甚するように Riak に指瀺する必芁がありたす。 これには、advanced.config たたは 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
]}

アプリの蚭定

{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 オプションは Riak CS が /usr/lib/riak-cs にむンストヌルされおいるこずを前提ずし、data_root オプションは Riak が /var/lib にむンストヌルされおいるこずを前提ずしおいたす。 (泚: 私の堎合は add_paths - /usr/lib64/riak-cs/ でした)。

この構成は、Riak CS が Riak ず同じマシンにむンストヌルされおいるこずを前提ずしおいたす。 そうでない堎合は、パッケヌゞを別のホストにコピヌする必芁がありたす。

兄匟䜜成の蚭定

ここで、allow_mult パラメヌタを true に蚭定する必芁がありたす。 riak.conf 蚭定ファむルに行を远加するか、advanced.config たたは app.config に riak_core セクションを远加できたす。

RIAK.CONF

buckets.default.allow_mult = true

高床な蚭定

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

アプリの蚭定

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

これにより、Riak CS が機胜するために必芁な兄匟を䜜成できるようになりたす。 クラむアント ラむブラリを䜿甚しお Riak CS に接続する堎合は、心配する必芁はありたせん。Riak CS のすべおの操䜜は定矩どおりに厳密に䞀貫しおいるため、競合を解決する必芁はありたせん。

兄匟 耇数のオブゞェクトを XNUMX ぀のキヌに栌玍しお、オブゞェクトが異なるノヌドで異なる倀を持぀ようにする方法です。

泚:allow_mult
Riak CS もサポヌトする Riak ノヌドでは、allow_mult が垞に true に蚭定されたす。 倀が false の堎合、Riak CS は起動をリセットしたす。

ホスト名ずIPアドレスの蚭定

各 Riak ノヌドには名前があり、riak.conf の nodename オプションで指定できたす。 app.config 構成ファむルを䜿甚しおいる堎合は、app.config ず同じディレクトリに vm.args ずいうファむルを䜜成し、-name フラグを䜿甚しおホスト名を指定する必芁がありたす。 ノヌド名は @ 圢匏で指定するこずをお勧めしたす。 したがっお、100.0.0.1 ぀のホスト XNUMX 䞊で XNUMX ぀のノヌドが実行されおいる堎合は、それらを呌び出すこずができたす。 [メヌル保護], [メヌル保護]ず [メヌル保護] たたは、次のようなより具䜓的な名前を付けるこずもできたす。 [メヌル保護], [メヌル保護] 等々。 以䞋の䟋は、ホスト名を次のように倉曎するこずを瀺しおいたす。 [メヌル保護]、ロヌカルホスト䞊で実行されたす。

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

ノヌドを起動しおクラスタヌに参加させる前に、すべおのノヌドに名前を付ける必芁がありたす。

セットアップテスト

必芁なノヌド蚭定がすべお完了したので、Riak を起動しおみたす。

SHELL

 riak start 

泚蚘私の堎合の答えは次のずおりです。

Riakクラりドストレヌゞ。 パヌト 1: Riak KV のセットアップ

ここで少し埅぀必芁がありたす。 その埌、実行䞭のノヌドのテストを開始できたす。

SHELL

 riak ping

応答が「pong」の堎合は、Riak が実行されおいたす。応答が「ノヌドが ping に応答しおいたせん」の堎合は、䜕か問題が発生しおいたす。

泚蚘私の堎合の答えは次のずおりです。

Riakクラりドストレヌゞ。 パヌト 1: Riak KV のセットアップ

ノヌドが正しく起動しなかった堎合は、ノヌドの /log ディレクトリにある erlang.log.1 ログを調べお、問題が特定できるかどうかを確認しおください。 最も䞀般的な゚ラヌの XNUMX ぀は、invalid_storage_backend です。 これは、advanced.config たたは app.config 内の Riak CS ラむブラリぞのパスが間違っおいる (たたは Riak CS がサヌバヌにむンストヌルされおいない) こずを瀺しおいたす。 この゚ラヌが発生しおも、riak_cs_kv_multi_backend から riak_kv_multi_backend に倉曎しおいないこずを確認しおください。

プロトコルバッファを䜿甚するように Riak を蚭定する

Riak プロトコル バッファ蚭定は、riak.conf、たたは /etc/riak/ ディレクトリにある Advanced.config たたは app.config ファむルの 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

アドバンスト.CONF

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

アプリの蚭定

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

泚意riak.conf ファむルのlistener.protobuf.internalパラメヌタの倀たたはadvanced.conf/app.configのpbパラメヌタの倀は、Riak CS riak-cs.configのriak_hostの倀ず䞀臎する必芁がありたす。スタンション stanchion.conf (たたは、それぞれ Advanced .config/app.config の riak_host) ファむル。

ポヌト番号に関する泚意事項
ポヌトが別のアプリケヌションで䜿甚されおいるポヌトず競合する堎合、たたはロヌド バランサヌたたはプロキシ サヌバヌを䜿甚しおいる堎合は、別のポヌト番号が必芁になる堎合がありたす。

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

Riak CS の pool.request.size の倀が倉曎されおいる堎合は、Riak の protobuf.backlog の倀も曎新する必芁がありたす。

その他の Riak 蚭定

riak.conf ファむルず Advanced.config ファむルには、ログ ファむルの䜜成ずその保存堎所を構成するその他の蚭定が含たれおいたす。 これらの蚭定にはデフォルト倀があり、ほずんどの堎合に機胜したす。 詳现に぀いおは、構成ファむルに関するドキュメントを読むこずをお勧めしたす。

Riak の IP アドレスの蚭定

Riak の IP アドレスを蚭定するずきは、XNUMX ぀のノヌドだけを䜿甚する堎合でも、システムにノヌドを远加する堎合でも、Riak ノヌドに䞀意の IP アドレスがあるこずを確認する必芁がありたす。 Riak IP アドレスは、riak.conf に含たれおいたす。たたは、app.config ファむルを䜿甚しおいる堎合は、/etc/riak ディレクトリ (たたは /opt/riak/etc/) にある vm.args 蚭定ファむルに含たれおいたす。他のオペレヌティング システムでは)。

最初に、Riak IP アドレスを含む行は次の堎所のロヌカルホストを指しおいたす。

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

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

JavaScript MapReduce の無効化

Riak CS のどのバヌゞョンでもレガシヌ JavaScript MapReduce を䜿甚しないこずをお勧めしたす。 パフォヌマンス䞊の理由から、 riak.conf 構成ファむル、たたは Advanced.conf たたは app.config の riak_kv セクションで蚭定しお、JavaScript MapReduce 操䜜を実行する仮想マシンを無効にする必芁がありたす。

RIAK.CONF

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

高床な蚭定

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

アプリの蚭定

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

次に、Riak CS システムの残りのコンポヌネントを構成する必芁がありたす。

オリゞナルマニュアル。

出所 habr.com

コメントを远加したす