Storan Awan Riak. Bahagian 1: Menyediakan Riak KV

Riak CS (Cloud Storage) – perisian yang mudah digunakan untuk mengatur storan objek, berjalan di atas Riak KV. Riak (KV) ialah pangkalan data nilai kunci NoSQL yang diedarkan. Riak CS direka bentuk untuk menyediakan kesederhanaan, ketersediaan, pengedaran storan awan dalam sebarang skala, dan boleh digunakan untuk membina seni bina awan - awam dan peribadi - atau sebagai storan infrastruktur untuk aplikasi dan perkhidmatan yang sangat dimuatkan. API Riak CS serasi dengan Amazon S3 dan menyokong keupayaan untuk menerima laporan tentang pelbagai situasi.

Storan Awan Riak. Bahagian 1: Menyediakan Riak KV
Artikel ini ialah terjemahan percuma manual rasmi untuk sistem Riak CS versi 2.1.1

Dalam sistem storan Riak CS, tiga komponen berfungsi bersama-sama antara satu sama lain, yang bermaksud bahawa setiap komponen mesti dikonfigurasikan untuk berfungsi dengan komponen lain:

  • Riak (KV) – sistem pangkalan data yang bertindak sebagai sistem akhir.
  • Riak CS - Lapisan storan awan di atas Riak yang menyediakan storan dan keupayaan API, menyimpan fail dan metadata dalam Riak, dan kemudian mengedarkannya kepada pengguna akhir.
  • Stanchion - Mengurus pertanyaan yang melibatkan entiti unik di peringkat global seperti baldi dan pengguna dalam contoh Riak. Contohnya, mencipta pengguna, mencipta atau memadam baldi.

Selain itu, anda juga boleh mengkonfigurasi klien S3 untuk digunakan dalam pemesejan dengan sistem Riak CS.

Anda harus merancang untuk mempunyai satu nod Riak untuk setiap nod Riak CS pada sistem anda. Nod Riak dan Riak CS boleh dijalankan pada mesin fizikal yang berbeza, tetapi dalam kebanyakan kes adalah lebih baik untuk menjalankan satu nod Riak dan satu nod Riak CS pada mesin fizikal yang sama. Dengan mengandaikan satu mesin fizikal mempunyai kuasa yang mencukupi untuk memenuhi keperluan kedua-dua nod Riak dan Riak CS, anda secara amnya akan melihat prestasi yang lebih baik disebabkan kependaman rangkaian yang dikurangkan.

Jika sistem anda terdiri daripada beberapa nod, konfigurasi adalah terutamanya mengenai menyediakan komunikasi antara komponen. Tetapan lain, seperti tempat fail log akan disimpan, mempunyai nilai lalai dan hanya perlu ditukar jika anda ingin menggunakan nilai bukan standard.

Menyediakan komponen sistem. Menyediakan Riak KV untuk CS

Memandangkan Riak CS ialah aplikasi yang dibina di atas Riak, adalah sangat penting untuk memberi perhatian kepada konfigurasi Riak anda semasa menjalankan Riak CS. Dokumen ini ialah panduan konfigurasi Riak dan dokumen rujukan yang menerangkan parameter konfigurasi penting.

Sebelum persediaan, pastikan Riak KV dan Riak CS dipasang pada setiap nod dalam kelompok anda. Stanchion, sebaliknya, hanya perlu dipasang pada satu nod dalam keseluruhan kluster.

Storan Awan Riak. Bahagian 1: Menyediakan Riak KV

Bahagian belakang untuk Riak CS

Bahagian belakang lalai yang digunakan oleh Riak ialah Bitcask, tetapi pakej Riak CS termasuk bahagian belakang khas yang mesti digunakan oleh gugusan Riak yang merupakan sebahagian daripada sistem Riak CS. Versi biasa mempunyai bahagian belakang Multi standard yang disertakan dengan Riak.

Baldi Riak yang sama digunakan dalam Riak CS menggunakan indeks sekunder, yang kini memerlukan bahagian belakang LevelDB. Bahagian lain sistem Riak CS boleh mendapat manfaat daripada menggunakan bahagian belakang Bticask. Penggunaan sampel Pelbagai bahagian belakang disertakan dalam Riak CS untuk memanfaatkan kedua-dua hujung belakang ini untuk mencapai gabungan prestasi dan kefungsian yang terbaik. Bahagian seterusnya menerangkan cara mengkonfigurasi Riak dengan betul untuk menggunakan Multi-backend ini.

Bahagian belakang adalah apa yang Riak akan gunakan untuk menyimpan data. Riak KV mempunyai beberapa bahagian belakang dalam senjatanya: Bitcask, LevelDB, Memory dan Multi.

Selain itu, sistem pengiraan storan menggunakan Riak MapReduse untuk mengagregatkan fail ke dalam baldi. Ini bermakna anda mesti memberitahu semua nod Riak tempat untuk mencari fail Riak CS yang disediakan sebelum mengira storan.

Beberapa parameter lain mesti ditukar untuk mengkonfigurasi nod Riak sebagai sebahagian daripada sistem Riak CS, seperti alamat IP dan alamat IP dan port untuk pemesejan melalui Penampan Protokol. Tetapan lain boleh ditukar jika perlu. Bahagian berikut menerangkan cara mengkonfigurasi nod Riak untuk beroperasi sebagai sebahagian daripada sistem CS Riak.

Menyediakan bahagian belakang Riak

Pertama, fail konfigurasi riak.conf atau advanced.config/app.config diedit. Fail ini boleh didapati dalam direktori /etc/riak atau /opt/riak/etc. Secara lalai, Riak menggunakan bahagian belakang Bitcask. Perkara pertama yang perlu kita lakukan ialah menukar fail konfigurasi dengan mengalih keluar baris berikut:

RIAK.CONF

## Delete this line:
storage_backend = bitcask

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

Seterusnya, kami perlu menunjukkan keperluan untuk modul RiakCS untuk Riak dan mengarahkan Riak untuk menggunakan bahagian belakang yang dikonfigurasikan yang menyediakan Riak CS. Kita perlu menggunakan fail advanced.config atau app.config untuk ini dan menambah pilihan berikut:

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

Adalah sangat penting untuk ambil perhatian bahawa kebanyakan nilai ini akan bergantung pada variasi direktori khusus untuk sistem pengendalian anda, jadi ikut arahan dengan sewajarnya. Sebagai contoh, pilihan add_paths mengandaikan bahawa Riak CS dipasang dalam /usr/lib/riak-cs, manakala pilihan data_root menganggap bahawa Riak dipasang dalam /var/lib. (Nota: Dalam kes saya ia adalah add_paths - /usr/lib64/riak-cs/).

Konfigurasi ini mengandaikan bahawa Riak CS dipasang pada mesin yang sama seperti Riak. Jika tidak, maka pakej tersebut perlu disalin ke hos yang berasingan.

Menyediakan ciptaan adik beradik

Sekarang, kita perlu menetapkan parameter allow_mult kepada benar. Kami boleh menambah baris dalam fail konfigurasi riak.conf, atau bahagian riak_core dalam advanced.config atau app.config.

RIAK.CONF

buckets.default.allow_mult = true

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

Ini akan membolehkan Riak mencipta adik-beradik yang diperlukan untuk Riak CS berfungsi. Jika anda menyambung ke Riak CS menggunakan pustaka klien, jangan risau: anda tidak perlu menyelesaikan konflik, kerana semua operasi Riak CS adalah konsisten seperti yang ditakrifkan.

Adik beradik ialah cara menyimpan berbilang objek dalam satu kunci supaya objek mempunyai nilai yang berbeza pada nod yang berbeza.

Nota: allow_mult
Mana-mana nod Riak yang turut menyokong Riak CS akan mempunyai allow_mult ditetapkan kepada benar pada setiap masa. Riak CS akan menetapkan semula pelancaran jika nilainya palsu.

Menetapkan Nama Hos dan Alamat IP

Setiap nod Riak mempunyai nama, yang boleh ditentukan dalam pilihan nama nod dalam riak.conf. Jika anda menggunakan fail konfigurasi app.config, anda perlu mencipta fail yang dipanggil vm.args dalam direktori yang sama seperti app.config dan nyatakan nama hos menggunakan bendera -name. Kami mengesyorkan untuk menentukan nama nod dalam format @. Oleh itu, jika anda mempunyai tiga nod yang berjalan pada satu hos 100.0.0.1, anda boleh memanggilnya [e-mel dilindungi], [e-mel dilindungi]dan [e-mel dilindungi] atau anda boleh memberikan nama yang lebih khusus, seperti [e-mel dilindungi], [e-mel dilindungi] dan sebagainya. Contoh di bawah menunjukkan menukar nama hos kepada [e-mel dilindungi], yang akan dijalankan pada localhost.

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Anda mesti menamakan semua nod sebelum memulakannya dan menyertai kluster.

Ujian persediaan

Sekarang setelah semua tetapan nod yang diperlukan telah selesai, kami boleh cuba melancarkan Riak:

SHELL

 riak start 

Catatan Jawapannya dalam kes saya:

Storan Awan Riak. Bahagian 1: Menyediakan Riak KV

Di sini anda perlu menunggu sedikit. Kemudian anda boleh mula menguji nod yang sedang berjalan.

SHELL

 riak ping

Jika respons adalah pong, maka Riak sedang berjalan; jika respons Node tidak bertindak balas kepada ping, maka sesuatu telah berlaku.

Catatan Jawapannya dalam kes saya:

Storan Awan Riak. Bahagian 1: Menyediakan Riak KV

Jika nod tidak bermula dengan betul, lihat log erlang.log.1 dalam direktori /log nod jika masalah boleh dikenal pasti. Salah satu ralat yang paling biasa ialah invalid_storage_backend. Yang menunjukkan bahawa laluan ke perpustakaan Riak CS dalam advanced.config atau dalam app.config adalah tidak betul (atau Riak CS tidak dipasang pada pelayan). Walaupun ralat ini, pastikan anda tidak menukar daripada riak_cs_kv_multi_backend kepada riak_kv_multi_backend.

Mengkonfigurasi Riak untuk menggunakan penimbal protokol

Tetapan penimbal protokol Riak terletak dalam riak.conf atau dalam bahagian riak_api dalam fail advanced.config atau app.config, yang terletak dalam direktori /etc/riak/. Secara lalai, hos mempunyai alamat IP 127.0.0.1 dan port 8087. Anda perlu menukar ini jika anda bercadang untuk menjalankan Riak dan Riak CS dalam persekitaran bukan tempatan. Gantikan 127.0.0.1 dengan alamat IP hos Riak dan port 8087 dengan yang sesuai.

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

Nota:Nilai parameter listener.protobuf.internal dalam riak.conf (atau nilai parameter pb dalam fail advanced.conf/app.config) mesti sepadan dengan nilai untuk riak_host dalam Riak CS riak-cs.config dan Stanchion stanchion.conf (atau riak_host masing-masing dalam fail .config/app.config lanjutan).

Nota tentang nombor port
Nombor port yang berbeza mungkin diperlukan jika port bercanggah dengan port yang digunakan oleh aplikasi lain atau jika anda menggunakan pengimbang beban atau pelayan proksi.

Ia juga disyorkan agar pengguna memastikan bahawa saiz protobuf.backlog Riak (atau dalam fail advanced.config/app.config ini adalah pb_backlog) adalah sama atau lebih besar daripada pool.request.size yang ditentukan untuk Riak CS dalam riak-cs. config (atau request_pool_size dalam fail advanced.config/ app.conf).

Jika nilai pool.request.size dalam Riak CS telah diubah, maka nilai protobuf.backlog juga mesti dikemas kini dalam Riak.

Tetapan Riak yang lain

Fail riak.conf dan advanced.config termasuk tetapan lain yang mengkonfigurasi penciptaan fail log dan tempat ia disimpan. Tetapan ini mempunyai nilai lalai dan harus berfungsi dalam kebanyakan kes. Untuk mendapatkan maklumat lanjut, kami mengesyorkan membaca dokumentasi kami tentang fail konfigurasi.

Menyediakan alamat IP untuk Riak

Apabila menyediakan alamat IP untuk Riak, anda mesti memastikan bahawa nod Riak mempunyai alamat IP yang unik, sama ada anda bekerja dengan hanya satu nod atau menambah lebih banyak nod pada sistem. Alamat IP Riak terkandung dalam riak.conf atau - jika anda menggunakan fail app.config - dalam fail konfigurasi vm.args, yang terletak di sana dalam direktori /etc/riak (atau /opt/riak/etc/ pada sistem pengendalian lain).

Pada mulanya, baris yang mengandungi alamat IP Riak menghala ke localhost di lokasi ini:

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

Gantikan 127.0.0.1 dengan alamat IP pilihan anda atau nama hos nod Riak.

Tetapan Prestasi dan Lebar Jalur

Atas sebab prestasi, kami amat mengesyorkan agar anda menambah nilai pada fail konfigurasi Riak riak.conf atau vm.args, yang terletak dalam direktori /etc/riak/ atau /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

Melumpuhkan JavaScript MapReduce

Adalah disyorkan untuk tidak menggunakan JavaScript MapReduce lama dengan mana-mana versi Riak CS. Atas sebab prestasi, anda harus melumpuhkan mesin maya yang menjalankan operasi JavaScript MapReduce dengan menetapkan dalam fail konfigurasi riak.conf atau dalam bahagian riak_kv advanced.conf atau app.config:

RIAK.CONF

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

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

Seterusnya kita perlu mengkonfigurasi baki komponen sistem Riak CS.

Manual asal.

Sumber: www.habr.com

Tambah komen