Riak Cloud Storage. قسمت 1: راه اندازی Riak KV

Riak CS (Cloud Storage) – نرم افزاری با کاربری آسان برای سازماندهی ذخیره سازی اشیا، که در بالای Riak KV اجرا می شود. Riak (KV) یک پایگاه داده کلید-مقدار NoSQL توزیع شده است. Riak CS برای ارائه سادگی، در دسترس بودن، توزیع فضای ذخیره سازی ابری در هر مقیاسی طراحی شده است و می تواند برای ساخت معماری های ابری - هم عمومی و هم خصوصی - یا به عنوان ذخیره سازی زیرساخت برای برنامه ها و خدمات با بارگذاری بالا مورد استفاده قرار گیرد. Riak CS API با آمازون S3 سازگار است و از قابلیت دریافت گزارش در موقعیت های مختلف پشتیبانی می کند.

Riak Cloud Storage. قسمت 1: راه اندازی Riak KV
این مقاله ترجمه رایگان کتابچه راهنمای رسمی سیستم Riak CS نسخه 2.1.1 است

در سیستم ذخیره سازی Riak CS، سه مؤلفه به همراه یکدیگر کار می کنند، به این معنی که هر مؤلفه باید برای کار با سایر مؤلفه ها پیکربندی شود:

  • Riak (KV) - یک سیستم پایگاه داده که به عنوان یک سیستم پایانی عمل می کند.
  • ریاک سی اس - یک لایه ذخیره سازی ابری در بالای Riak که قابلیت های ذخیره سازی و API را فراهم می کند، فایل ها و ابرداده ها را در Riak ذخیره می کند و سپس آنها را بین کاربران نهایی توزیع می کند.
  • استنشیون - پرس و جوهای مربوط به موجودیت های منحصر به فرد جهانی مانند سطل ها و کاربران در نمونه Riak را مدیریت می کند. به عنوان مثال، ایجاد کاربر، ایجاد یا حذف سطل.

علاوه بر این، می‌توانید کلاینت S3 را برای استفاده در پیام‌رسانی با سیستم Riak CS پیکربندی کنید.

شما باید برنامه ریزی کنید که برای هر گره Riak CS در سیستم خود یک گره Riak داشته باشید. گره های Riak و Riak CS را می توان بر روی ماشین های فیزیکی مختلف اجرا کرد، اما در بیشتر موارد ترجیح داده می شود که یک گره Riak و یک گره Riak CS بر روی یک ماشین فیزیکی اجرا شود. با فرض اینکه یک ماشین فیزیکی قدرت کافی برای برآوردن نیازهای گره های Riak و Riak CS را داشته باشد، به طور کلی به دلیل کاهش تاخیر شبکه، عملکرد بهتری را مشاهده خواهید کرد.

اگر سیستم شما از چندین گره تشکیل شده است، پیکربندی در درجه اول مربوط به برقراری ارتباط بین اجزا است. تنظیمات دیگر، مانند محل ذخیره فایل‌های گزارش، دارای مقادیر پیش‌فرض هستند و فقط اگر می‌خواهید از مقادیر غیر استاندارد استفاده کنید، باید تغییر داده شوند.

راه اندازی اجزای سیستم راه اندازی Riak KV برای CS

از آنجایی که Riak CS یک برنامه کاربردی است که بر روی Riak ساخته شده است، توجه به پیکربندی Riak هنگام اجرای Riak CS بسیار مهم است. این سند هم یک راهنمای پیکربندی Riak و هم یک سند مرجع است که پارامترهای پیکربندی مهم را توصیف می کند.

قبل از راه‌اندازی، مطمئن شوید که Riak KV و Riak CS روی هر گره در خوشه شما نصب شده‌اند. از طرف دیگر، Stanchion باید فقط روی یک گره در کل خوشه نصب شود.

Riak Cloud Storage. قسمت 1: راه اندازی Riak KV

Backend برای Riak CS

Backend پیش فرض مورد استفاده توسط Riak Bitcask است، اما بسته Riak CS شامل یک backend ویژه است که باید توسط خوشه Riak که بخشی از سیستم Riak CS است استفاده شود. نسخه معمولی دارای استاندارد Multi Backend است که با Riak ارائه می شود.

همان سطل‌های Riak که در داخل Riak CS استفاده می‌شوند از ایندکس‌های ثانویه استفاده می‌کنند که اکنون به یک Backend LevelDB نیاز دارند. سایر بخش‌های سیستم Riak CS می‌توانند از استفاده از باطن Bticask بهره‌مند شوند. استفاده از نمونه Multi Backend در Riak CS گنجانده شده است تا از هر دوی این backendها برای دستیابی به بهترین ترکیب عملکرد و عملکرد استفاده کنید. بخش بعدی نحوه پیکربندی صحیح Riak برای استفاده از این Multi-Backend را شرح می دهد.

Backend چیزی است که Riak برای ذخیره داده ها استفاده می کند. Riak KV چندین پشتوانه در زرادخانه خود دارد: Bitcask، LevelDB، Memory و Multi.

علاوه بر این، سیستم محاسبه ذخیره سازی از Riak MapReduse برای جمع آوری فایل ها در سطل ها استفاده می کند. این به این معنی است که شما باید به تمام گره های Riak بگویید قبل از محاسبات ذخیره سازی، به دنبال فایل های آماده Riak CS بگردند.

چندین پارامتر دیگر باید برای پیکربندی گره Riak به عنوان بخشی از سیستم Riak CS تغییر کنند، مانند آدرس IP و آدرس IP و پورت برای ارسال پیام از طریق بافرهای پروتکل. در صورت لزوم می توان تنظیمات دیگر را تغییر داد. بخش های زیر نحوه پیکربندی یک گره Riak را برای عملکرد به عنوان بخشی از سیستم Riak CS شرح می دهد.

راه اندازی Riak Backend

ابتدا فایل های پیکربندی 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},
]}

در مرحله بعد، ما باید نیاز به ماژول های RiakCS را برای Riak نشان دهیم و به Riak دستور دهیم که از پشتیبان پیکربندی شده ای که Riak CS را ارائه می دهد استفاده کند. برای این کار باید از فایل 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 فرض می کند که 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 یا یک بخش riak_core در advanced.config یا 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
]}

این به Riak اجازه می دهد تا خواهر و برادرهایی ایجاد کند که برای عملکرد Riak CS ضروری هستند. اگر با استفاده از کتابخانه سرویس گیرنده به Riak CS متصل می شوید، نگران نباشید: شما مجبور نخواهید بود تضادها را حل کنید، زیرا تمام عملیات Riak CS کاملاً مطابق تعریف شده است.

خواهر و برادر روشی است برای ذخیره چندین شی در یک کلید به طوری که شی مقادیر متفاوتی در گره های مختلف داشته باشد.

توجه: allow_mult
هر گره Riak که از Riak CS نیز پشتیبانی می‌کند، در هر زمان، allow_mult روی true تنظیم می‌شود. اگر مقدار نادرست باشد، Riak CS راه‌اندازی را بازنشانی می‌کند.

تنظیم نام میزبان و آدرس IP

هر گره Riak یک نام دارد که می توان آن را در riak.conf در گزینه nodename مشخص کرد. اگر از فایل پیکربندی app.config استفاده می کنید، باید فایلی به نام vm.args در همان دایرکتوری app.config ایجاد کنید و نام میزبان را با استفاده از پرچم -name مشخص کنید. توصیه می کنیم نام گره ها را در قالب @ مشخص کنید. و بنابراین اگر سه گره دارید که روی یک میزبان 100.0.0.1 اجرا می شوند، می توانید آنها را فراخوانی کنید [ایمیل محافظت شده], [ایمیل محافظت شده]و [ایمیل محافظت شده] یا می توانید نام های خاص تری مانند [ایمیل محافظت شده], [ایمیل محافظت شده] و غیره مثال زیر تغییر نام میزبان را نشان می دهد [ایمیل محافظت شده]، که روی لوکال هاست اجرا خواهد شد.

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

شما باید همه گره ها را قبل از راه اندازی و پیوستن به خوشه نام گذاری کنید.

تست راه اندازی

اکنون که تمام تنظیمات گره لازم تکمیل شده است، می توانیم Riak را راه اندازی کنیم:

پوسته

 riak start 

توجه داشته باشید پاسخ در مورد من:

Riak Cloud Storage. قسمت 1: راه اندازی Riak KV

در اینجا باید کمی صبر کنید. سپس می توانید شروع به آزمایش گره در حال اجرا کنید.

پوسته

 riak ping

اگر پاسخ پونگ باشد، ریاک در حال اجرا است؛ اگر پاسخ Node به پینگ پاسخ نمی دهد، مشکلی پیش آمده است.

توجه داشته باشید پاسخ در مورد من:

Riak Cloud Storage. قسمت 1: راه اندازی Riak KV

اگر گره به درستی شروع نشده است، اگر مشکل قابل شناسایی است، به ورود به سیستم erlang.log.1 در فهرست /log گره نگاه کنید. یکی از رایج ترین خطاها invalid_storage_backend است. که نشان می دهد مسیر کتابخانه Riak CS در advanced.config یا app.config نادرست است (یا Riak CS روی سرور نصب نشده است). با وجود این خطا، مطمئن شوید که از riak_cs_kv_multi_backend به riak_kv_multi_backend تغییر نکرده اید.

پیکربندی Riak برای استفاده از بافرهای پروتکل

تنظیمات بافر پروتکل Riak در riak.conf یا در قسمت riak_api در فایل های advanced.config یا app.config قرار دارند که در پوشه /etc/riak/ قرار دارند. به طور پیش فرض، هاست دارای آدرس IP 127.0.0.1 و پورت 8087 است. اگر قصد دارید Riak و Riak CS را در یک محیط غیر محلی اجرا کنید، باید اینها را تغییر دهید. 127.0.0.1 را با آدرس 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
]}

توجه:مقدار پارامتر listener.protobuf.internal در فایل riak.conf (یا مقدار پارامتر pb در advanced.conf/app.config) باید با مقادیر riak_host در Riak CS riak-cs.config و Stanchion stanchion.conf (یا riak_host به ترتیب در فایل های پیشرفته .config/app.config).

نکته ای در مورد شماره پورت
اگر پورت با پورت های استفاده شده توسط برنامه دیگری مغایرت داشته باشد یا اگر از یک متعادل کننده بار یا سرور پراکسی استفاده می کنید، ممکن است به شماره پورت دیگری نیاز باشد.

همچنین توصیه می‌شود که کاربران اطمینان حاصل کنند که اندازه Riak protobuf.backlog (یا در فایل‌های advanced.config/app.config این pb_backlog است) برابر یا بیشتر از pool.request.size تعیین‌شده برای Riak CS در riak-cs است. config (یا request_pool_size در فایل های advanced.config/app.conf).

اگر مقدار pool.request.size در Riak CS تغییر کرده باشد، مقدار protobuf.backlog نیز باید در Riak به روز شود.

سایر تنظیمات Riak

فایل‌های riak.conf و advanced.config شامل تنظیمات دیگری هستند که ایجاد فایل‌های گزارش و مکان ذخیره آن‌ها را پیکربندی می‌کنند. این تنظیمات دارای مقادیر پیش فرض هستند و در بیشتر موارد باید کار کنند. برای اطلاعات بیشتر، توصیه می کنیم اسناد ما را در مورد فایل های پیکربندی مطالعه کنید.

تنظیم یک آدرس IP برای Riak

هنگام تنظیم یک آدرس IP برای Riak، باید مطمئن شوید که گره های Riak دارای یک آدرس IP منحصر به فرد هستند، چه فقط با یک گره کار کنید یا گره های بیشتری را به سیستم اضافه کنید. آدرس IP Riak در riak.conf یا - اگر از فایل app.config استفاده می‌کنید - در فایل پیکربندی vm.args که در فهرست /etc/riak (یا /opt/riak/etc/) قرار دارد، موجود است. در سایر سیستم عامل ها).

در ابتدا، خط حاوی آدرس IP Riak به لوکال هاست در این مکان اشاره می کند:

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

127.0.0.1 را با آدرس IP ترجیحی یا نام میزبان گره Riak جایگزین کنید.

تنظیمات عملکرد و پهنای باند

به دلایل عملکرد، ما قویاً توصیه می کنیم مقادیری را به فایل های پیکربندی Riak riak.conf یا vm.args که در فهرست /etc/riak/ یا /opt/riak/etc قرار دارند اضافه کنید.

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

توصیه می شود از JavaScript MapReduce قدیمی با هیچ نسخه ای از Riak CS استفاده نکنید. به دلایل عملکرد، باید ماشین مجازی را که عملیات MapReduce جاوا اسکریپت را انجام می دهد، با تنظیم در فایل پیکربندی riak.conf یا در بخش riak_kv در advanced.conf یا 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
]}

در مرحله بعد باید اجزای باقیمانده سیستم Riak CS را پیکربندی کنیم.

دفترچه راهنمای اصلی.

منبع: www.habr.com

اضافه کردن نظر