Riak Huab Cia. Part 1: Teeb tsa Riak KV

Riak CS (Cloud Storage) - Ib qho yooj yim-rau-siv software rau kev npaj cov khoom cia, khiav saum Riak KV. Riak (KV) yog qhov kev faib tawm NoSQL tus nqi tseem ceeb database. Riak CS yog tsim los muab kev yooj yim, muaj, faib ntawm huab cia ntawm txhua qhov teev, thiab tuaj yeem siv los tsim cov vaj tsev huab - ob qho tib si pej xeem thiab ntiag tug - lossis ua vaj tsev cia rau cov ntawv thov thiab cov kev pabcuam. Riak CS API yog sib xws nrog Amazon S3 thiab txhawb nqa lub peev xwm kom tau txais cov lus ceeb toom ntawm ntau yam xwm txheej.

Riak Huab Cia. Part 1: Teeb tsa Riak KV
Kab lus no yog kev txhais lus pub dawb ntawm phau ntawv tshaj tawm rau Riak CS system version 2.1.1

Nyob rau hauv Riak CS qhov system cia, peb cov khoom ua haujlwm sib koom ua ke, uas txhais tau hais tias txhua qhov yuav tsum tau teeb tsa ua haujlwm nrog lwm cov khoom siv:

  • Riak (KV) - database system uas ua raws li qhov kawg system.
  • Riak CS - Ib txheej huab cia nyob rau sab saum toj ntawm Riak uas muab kev cia thiab API muaj peev xwm, khaws cov ntaub ntawv thiab cov ntaub ntawv metadata hauv Riak, thiab tom qab ntawd faib rau cov neeg siv kawg.
  • Stanchion - Tswj cov lus nug uas cuam tshuam nrog cov chaw tshwj xeeb hauv ntiaj teb xws li thoob thiab cov neeg siv hauv Riak piv txwv. Piv txwv li, tsim cov neeg siv, tsim lossis tshem tawm thoob.

Tsis tas li ntawd, koj tuaj yeem teeb tsa S3 tus neeg siv khoom siv hauv kev xa xov nrog Riak CS system.

Koj yuav tsum npaj kom muaj ib qho Riak node rau txhua Riak CS ntawm koj lub cev. Riak thiab Riak CS nodes tuaj yeem khiav ntawm cov tshuab lub cev sib txawv, tab sis feem ntau nws yog qhov zoo dua los khiav ib Riak node thiab ib Riak CS node ntawm tib lub cev lub tshuab. Piv txwv tias ib lub tshuab lub cev muaj lub zog txaus los ua kom txaus siab rau cov kev xav tau ntawm ob qho tib si Riak thiab Riak CS nodes, feem ntau koj yuav pom kev ua tau zoo dua vim qhov txo qis network latency.

Yog tias koj lub kaw lus muaj ntau lub nodes, kev teeb tsa feem ntau yog hais txog kev teeb tsa kev sib txuas lus ntawm cov khoom. Lwm qhov chaw, xws li qhov twg cov ntaub ntawv teev cia yuav raug khaws cia, muaj qhov tseem ceeb thiab tsuas yog yuav tsum tau hloov yog tias koj xav siv cov nqi uas tsis yog tus qauv.

Teeb tsa cov txheej txheem system. Teeb tsa Riak KV rau CS

Txij li thaum Riak CS yog ib daim ntawv thov tsim rau saum Riak, nws yog ib qho tseem ceeb heev uas yuav tau xyuam xim rau koj qhov kev teeb tsa Riak thaum khiav Riak CS. Cov ntaub ntawv no yog ob qho tib si Riak configuration phau ntawv qhia thiab cov ntaub ntawv siv piav qhia txog kev teeb tsa tseem ceeb.

Ua ntej teeb tsa, xyuas kom Riak KV thiab Riak CS tau teeb tsa rau txhua qhov ntawm koj pawg. Stanchion, ntawm qhov tod tes, tsuas yog yuav tsum tau nruab rau ntawm ib qho ntawm tag nrho pawg.

Riak Huab Cia. Part 1: Teeb tsa Riak KV

Backends rau Riak CS

Lub neej ntawd backend siv los ntawm Riak yog Bitcask, tab sis cov pob Riak CS suav nrog cov backend tshwj xeeb uas yuav tsum tau siv los ntawm Riak pawg uas yog ib feem ntawm Riak CS system. Cov version tsis tu ncua muaj tus qauv Multi backend uas los nrog Riak.

Tib lub thoob Riak siv hauv Riak CS siv cov kev ntsuas theem nrab, uas tam sim no xav tau LevelDB backend. Lwm qhov chaw ntawm Riak CS system tuaj yeem tau txais txiaj ntsig los ntawm kev siv Bticask backend. Kev siv tus qauv Multi backend yog suav nrog hauv Riak CS los ua kom zoo dua ntawm ob qho ntawm cov backends no kom ua tiav kev sib xyaw ua ke zoo tshaj plaws ntawm kev ua haujlwm thiab kev ua haujlwm. Tshooj tom ntej piav qhia yuav ua li cas thiaj li teeb tsa Riak kom siv qhov Multi-backend no.

Rov qab yog dab tsi Riak yuav siv los cawm cov ntaub ntawv. Riak KV muaj ntau qhov backends hauv nws cov arsenal: Bitcask, LevelDB, Memory thiab Multi.

Tsis tas li ntawd, lub kaw lus khaws cia siv Riak MapReduse los sau cov ntaub ntawv rau hauv thoob. Qhov no txhais tau tias koj yuav tsum qhia tag nrho Riak nodes qhov twg los nrhiav cov ntaub ntawv Riak CS npaj ua ntej suav cia.

Ntau qhov kev txwv yuav tsum raug hloov pauv los teeb tsa Riak node raws li ib feem ntawm Riak CS system, xws li IP chaw nyob thiab IP chaw nyob thiab chaw nres nkoj rau kev xa xov los ntawm Cov Cai Tsis Txaus Siab. Lwm qhov chaw tuaj yeem hloov pauv yog tias tsim nyog. Cov ntu hauv qab no piav qhia yuav ua li cas teeb tsa Riak node los ua haujlwm ua ib feem ntawm Riak CS system.

Teeb tsa Riak backend

Ua ntej, riak.conf los yog advanced.config/app.config configuration ntaub ntawv raug kho. Cov ntaub ntawv no tuaj yeem nyob hauv /etc/riak lossis /opt/riak/etc directories. Los ntawm lub neej ntawd, Riak siv Bitcask backend. Thawj qhov peb yuav tsum tau ua yog hloov cov ntaub ntawv teeb tsa los ntawm kev tshem tawm cov kab hauv qab no:

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},
]}

Tom ntej no, peb yuav tsum tau ua kom pom qhov xav tau ntawm RiakCS modules rau Riak thiab qhia Riak siv cov txheej txheem rov qab muab Riak CS. Peb yuav tsum siv cov ntaub ntawv advanced.config lossis app.config rau qhov no thiab ntxiv cov kev xaiv hauv qab no:

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
]}

Nws yog ib qho tseem ceeb heev uas yuav tsum nco ntsoov tias ntau ntawm cov txiaj ntsig no yuav nyob ntawm cov npe hloov pauv tshwj xeeb rau koj lub operating system, yog li ua raws li cov lus qhia raws li. Piv txwv li, qhov kev xaiv add_paths xav tias Riak CS tau teeb tsa hauv /usr/lib/riak-cs, thaum cov kev xaiv data_root xav tias Riak raug teeb tsa hauv /var/lib. (Faj seeb: Hauv kuv rooj plaub nws yog add_paths - /usr/lib64/riak-cs/).

Qhov kev teeb tsa no xav tias Riak CS tau teeb tsa rau tib lub tshuab li Riak. Yog tias tsis yog, ces lub pob yuav tsum tau theej rau ib tus tswv tsev cais.

Teeb tsa cov kwv tij creation

Tam sim no, peb yuav tsum teeb qhov permission_mult parameter kom muaj tseeb. Peb tuaj yeem ntxiv ib kab hauv riak.conf teeb tsa cov ntaub ntawv, lossis ntu riak_core hauv advanced.config lossis app.config.

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
]}

Qhov no yuav cia Riak tsim cov kwv tij uas tsim nyog rau Riak CS ua haujlwm. Yog tias koj txuas rau Riak CS siv lub tsev qiv ntawv tus neeg siv khoom, tsis txhob txhawj: koj yuav tsis tas yuav daws qhov teeb meem, vim tias txhua qhov kev ua haujlwm Riak CS yog nruj me ntsis raws li tau hais tseg.

Kwv tij yog ib txoj hauv kev khaws ntau yam khoom hauv ib qho tseem ceeb kom cov khoom muaj qhov sib txawv ntawm cov nodes sib txawv.

Nco tseg: allow_mult
Ib qho Riak node uas tseem txhawb nqa Riak CS yuav tau tso cai_mult rau qhov tseeb txhua lub sijhawm. Riak CS yuav rov pib lub community launch yog tias tus nqi tsis tseeb.

Teem lub hostname thiab IP chaw nyob

Txhua Riak node muaj lub npe, uas tuaj yeem teev nyob rau hauv riak.conf hauv qhov kev xaiv nodename. Yog tias koj siv app.config configuration file, koj yuav tsum tsim cov ntaub ntawv hu ua vm.args hauv tib phau ntawv teev npe app.config thiab qhia tus tswv lub npe siv tus chij -name. Peb pom zoo kom qhia cov npe ntawm cov npe hauv @ hom ntawv. Thiab yog li yog tias koj muaj peb lub nodes khiav ntawm ib tus tswv tsev 100.0.0.1, koj tuaj yeem hu rau lawv [email tiv thaiv], [email tiv thaiv]thiab [email tiv thaiv] lossis koj tuaj yeem muab cov npe tshwj xeeb, xws li [email tiv thaiv], [email tiv thaiv] thiab lwm yam. Cov piv txwv hauv qab no qhia tau tias hloov lub npe tswv rau [email tiv thaiv], uas yuav khiav ntawm localhost.

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Koj yuav tsum sau npe tag nrho cov nodes ua ntej pib lawv thiab koom nrog pawg.

Teeb kuaj

Tam sim no tias tag nrho cov kev teeb tsa tsim nyog tau ua tiav, peb tuaj yeem sim tso Riak:

SAIB

 riak start 

Nco tseg Cov lus teb hauv kuv rooj plaub:

Riak Huab Cia. Part 1: Teeb tsa Riak KV

Ntawm no koj yuav tsum tau tos me ntsis. Tom qab ntawd koj tuaj yeem pib sim cov node khiav.

SAIB

 riak ping

Yog hais tias cov lus teb yog pong, ces Riak tab tom khiav; yog hais tias cov lus teb yog Node tsis teb rau pings, ces ib yam dab tsi mus tsis ncaj ncees lawm.

Nco tseg Cov lus teb hauv kuv rooj plaub:

Riak Huab Cia. Part 1: Teeb tsa Riak KV

Yog tias qhov node pib tsis raug, saib ntawm erlang.log.1 nkag rau hauv /log directory ntawm node yog tias qhov teeb meem tuaj yeem txheeb xyuas tau. Ib qho yuam kev feem ntau yog invalid_storage_backend. Uas qhia tias txoj kev mus rau lub tsev qiv ntawv Riak CS hauv advanced.config lossis hauv app.config tsis raug (lossis Riak CS tsis raug ntsia rau ntawm lub server). Txawm hais tias qhov yuam kev no, nco ntsoov tias koj tsis tau hloov ntawm riak_cs_kv_multi_backend rau riak_kv_multi_backend.

Configuring Riak siv raws tu qauv buffers

Riak raws tu qauv tsis nyob rau hauv riak.conf los yog nyob rau hauv lub riak_api seem nyob rau hauv lub advanced.config los yog app.config cov ntaub ntawv, uas nyob rau hauv lub /etc/riak/ directory. Los ntawm lub neej ntawd, tus tswv tsev muaj qhov chaw nyob IP ntawm 127.0.0.1 thiab chaw nres nkoj 8087. Koj yuav tsum tau hloov cov no yog tias koj npaj yuav khiav Riak thiab Riak CS nyob rau hauv ib puag ncig tsis yog hauv zos. Hloov 127.0.0.1 nrog Riak host IP chaw nyob thiab chaw nres nkoj 8087 nrog qhov tsim nyog.

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
]}

Nco ntsoov:Tus nqi ntawm listener.protobuf.internal parameter nyob rau hauv lub riak.conf (los yog tus nqi ntawm pb parameter nyob rau hauv advanced.conf/app.config) cov ntaub ntawv yuav tsum phim tus nqi rau riak_host hauv Riak CS riak-cs.config thiab Stanchion stanchion.conf (los yog riak_host feem hauv cov ntaub ntawv siab heev .config/app.config).

Ib daim ntawv qhia txog tus lej chaw nres nkoj
Ib tus lej chaw nres nkoj sib txawv yuav xav tau yog tias qhov chaw nres nkoj tsis sib haum nrog cov chaw nres nkoj siv los ntawm lwm daim ntawv thov lossis yog tias koj siv lub load balancer lossis proxy server.

Nws tseem pom zoo kom cov neeg siv xyuas kom meej tias qhov loj ntawm Riak protobuf.backlog (los yog hauv cov ntaub ntawv advanced.config/app.config qhov no yog pb_backlog) yog sib npaug los yog ntau dua li cov pool.request.size teev rau Riak CS hauv riak-cs. config (los yog request_pool_size hauv advanced.config/ app.conf files).

Yog tias tus nqi ntawm pool.request.size hauv Riak CS tau hloov lawm, ces tus nqi ntawm protobuf.backlog yuav tsum tau hloov kho hauv Riak.

Lwm qhov chaw Riak

Cov ntaub ntawv riak.conf thiab advanced.config suav nrog lwm qhov chaw uas teeb tsa kev tsim cov ntaub ntawv teev tseg thiab qhov chaw uas lawv tau txais kev cawmdim. Cov kev teeb tsa no muaj qhov tseem ceeb thiab yuav tsum ua haujlwm feem ntau. Yog xav paub ntxiv, peb xav kom nyeem peb cov ntaub ntawv hais txog cov ntaub ntawv teeb tsa.

Teeb tsa tus IP chaw nyob rau Riak

Thaum teeb tsa tus IP chaw nyob rau Riak, koj yuav tsum nco ntsoov tias Riak nodes muaj qhov chaw nyob IP tshwj xeeb, txawm tias koj tab tom ua haujlwm nrog tsuas yog ib qho lossis ntxiv cov nodes rau lub kaw lus. Riak IP chaw nyob muaj nyob hauv riak.conf lossis - yog tias koj siv cov ntaub ntawv app.config - hauv cov ntaub ntawv vm.args configuration, uas nyob rau hauv /etc/riak directory (los yog /opt/riak/etc/ ntawm lwm cov kev khiav hauj lwm systems).

Thaum xub thawj, kab uas muaj Riak IP chaw nyob taw qhia rau localhost ntawm qhov chaw no:

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

Hloov 127.0.0.1 nrog koj tus IP chaw nyob lossis hostname ntawm Riak node.

Kev ua tau zoo thiab Bandwidth Settings

Rau qhov ua tau zoo, peb xav kom ntxiv qhov tseem ceeb rau Riak teeb tsa cov ntaub ntawv riak.conf lossis vm.args, nyob hauv /etc/riak/ lossis /opt/riak/etc directory.

RIAK.CONF

 erlang.max_ports = 65536

VM.ARGS

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

Disabling JavaScript MapReduce

Nws raug nquahu kom tsis txhob siv cov cuab yeej cuab tam JavaScript MapReduce nrog ib qho version ntawm Riak CS. Rau qhov ua tau zoo, koj yuav tsum lov tes taw lub tshuab virtual ua JavaScript MapReduce cov haujlwm los ntawm kev teeb tsa hauv riak.conf cov ntaub ntawv teeb tsa, lossis hauv ntu riak_kv ntawm advanced.conf lossis app.config:

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
]}

Tom ntej no peb yuav tsum teeb tsa cov khoom seem ntawm Riak CS system.

Phau ntawv qub.

Tau qhov twg los: www.hab.com

Ntxiv ib saib