Riak Cloud Storage. الجزء 1. إعداد Riak KV

Riak CS (Cloud Storage) هو برنامج تخزين كائنات سهل الاستخدام يتم تشغيله أعلى Riak KV. Riak (KV) هي قاعدة بيانات NoSQL موزعة للقيمة الرئيسية. تم تصميم Riak CS لتوفير البساطة والتوافر والتوزيع للتخزين السحابي من أي حجم ، ويمكن استخدامه لبناء بنى سحابية - عامة وخاصة - أو كتخزين للبنية التحتية للتطبيقات والخدمات عالية التحميل. تتوافق واجهة Riak CS API مع Amazon S3 وتدعم القدرة على إنشاء تقارير لمواقف مختلفة.



صورة


هذه المقالة هي ترجمة مجانية للدليل الرسمي للإصدار 2.1.1 من



نظام Riak CS ، في نظام تخزين Riak CS ، تعمل ثلاثة مكونات مع بعضها البعض ، مما يعني أنه يجب تكوين كل مكون للعمل مع المكونات الأخرى:



  • Riak (KV) هو نظام قاعدة بيانات يعمل كنظام نهائي.
  • Riak CS عبارة عن طبقة تخزين سحابي أعلى Riak توفر إمكانات التخزين وواجهة برمجة التطبيقات ، وتخزن الملفات والبيانات الوصفية في Riak ، ثم تنقلها إلى المستخدمين النهائيين.
  • Stanchion - إدارة الاستعلامات التي تتضمن كيانات فريدة عالميًا مثل الحاويات والمستخدمين في مثيل Riak. على سبيل المثال ، إنشاء المستخدمين ، إنشاء أو حذف الحاويات.


بالإضافة إلى ذلك ، يمكنك أيضًا تكوين عميل S3 لاستخدامه في المراسلة باستخدام نظام Riak CS.



يجب أن تخطط لامتلاك عقدة Riak واحدة لكل عقدة Riak CS على نظامك. يمكن أن تعمل عقدتي 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 CS



بشكل افتراضي ، تكون الواجهة الخلفية المستخدمة من قبل Riak هي Bitcask ، لكن حزمة Riak CS تتضمن واجهة خلفية خاصة يجب أن تستخدمها مجموعة Riak التي تعد جزءًا من نظام Riak CS. يحتوي الإصدار العادي على واجهة خلفية متعددة قياسية تأتي مع Riak.



تستخدم نفس دلاء Riak داخليًا بواسطة Riak CS فهارس ثانوية تتطلب الآن الواجهة الخلفية لـ LevelDB. يمكن أن تستفيد الأجزاء الأخرى من نظام Riak CS من الخلفية Bticask. تم تضمين استخدام الواجهة الخلفية المتعددة النموذجية في Riak CS للاستفادة من هاتين الخلفيتين لتحقيق أفضل مزيج من الأداء والوظائف. يصف القسم التالي كيفية تكوين Riak بشكل صحيح لاستخدام هذه الواجهة الخلفية المتعددة.



الواجهة الخلفية هي ما سيستخدمه Riak لحفظ البيانات. لدى Riak KV العديد من الخلفيات في ترسانتها: Bitcask و LevelDB و Memory و Multi.


بالإضافة إلى ذلك ، يستخدم نظام حساب التخزين Riak MapReduse لتلخيص الملفات في مجموعات. هذا يعني أنه يجب عليك إخبار جميع عقد Riak بمكان البحث عن ملفات Riak CS المتوفرة قبل حساب التخزين.



يجب تغيير العديد من المعلمات الأخرى من أجل تكوين عقدة Riak كجزء من نظام Riak CS ، مثل عنوان IP وعنوان IP والمنفذ للمراسلة عبر Protocol Buffers. يمكن تغيير باقي الإعدادات إذا لزم الأمر. تصف الأقسام التالية كيفية تكوين عقدة Riak لتعمل كجزء من نظام Riak CS.



إنشاء خلفية 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},
 ]}


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.



رياك كونف



buckets.default.allow_mult = true




متقدم

{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 ، فيمكنك تسميتها 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 ، والذي سيعمل على المضيف المحلي.



رياك كونف



 nodename = riak1@127.0.0.1 


VM.ARGS



 -name riak1@127.0.0.1


يجب عليك تسمية جميع العقد قبل البدء وإضافتها إلى الكتلة.



اختبار التوليف



الآن وقد اكتملت جميع إعدادات العقدة الضرورية ، يمكننا محاولة بدء Riak:



SHELL



 riak start 


تقريبا. الجواب في حالتي:



صورة



هنا عليك الانتظار قليلاً. ثم يمكنك البدء في اختبار العقدة قيد التشغيل.



الصدف



 riak ping


إذا كانت الاستجابة هي pong ، فإن Riak يعمل: إذا كانت الاستجابة Node لا تستجيب للأصوات ، فهذا يعني أنه حدث خطأ ما.



تقريبا. الإجابة في حالتي:



صورة



إذا لم تبدأ العقدة بشكل صحيح ، فابحث عن سجل erlang.log.1 في دليل / log الخاص بالعقدة إذا كان من الممكن تحديد المشكلة. أحد الأخطاء الأكثر شيوعًا هو غير صالح_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 بـ Riak host IP والمنفذ 8087 بآخر مناسب.



رياك كونف



 listener.protobuf.internal = 10.0.2.10:10001


متقدم



{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 على التوالي) في ملفات Advanced.config / app.config).


ملاحظة حول رقم المنفذ

قد تحتاج إلى رقم منفذ مختلف إذا كان المنفذ يتعارض مع المنافذ التي يستخدمها تطبيق آخر ، أو إذا كنت تستخدم موازن تحميل أو خادم وكيل.


من المستحسن أيضًا أن يتأكد المستخدمون من أن حجم Riak protobuf.backlog (أو pb_backlog في ملفات Advanced.config / app.config) يساوي أو أكبر من حجم 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 = riak@127.0.0.1


VM.ARGS



 -name riak@127.0.0.1


استبدل 127.0.0.1 بعنوان IP المفضل لديك أو اسم المضيف لمضيف Riak.



إعدادات الأداء وعرض النطاق الترددي



لأسباب تتعلق بالأداء ، نوصي بشدة بإضافة قيم إلى ملفات تكوين riak.conf أو vm.args الموجودة في الدليل / etc / riak / أو / opt / riak / etc.



رياك كونف



 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. لأسباب تتعلق بالأداء ، يجب عليك تعطيل الجهاز الظاهري الذي يقوم بعمليات JavaScript 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 


متقدم



{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.



الروابط



Riak Cloud Storage. الجزء 1. تكوين Riak KV

Riak Cloud Storage. الجزء 2. تكوين مكون Riak CS

Riak Cloud Storage. الجزء 3. الدعامة والوكيل وموازنة الحمل ، دليل S3 Client



الأصلي.



All Articles