ที่เก็บข้อมูลบนคลาวด์ 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) – ระบบฐานข้อมูลที่ทำหน้าที่เป็นระบบปลายทาง
  • เรียค ซีเอส - เลเยอร์พื้นที่จัดเก็บข้อมูลบนคลาวด์ที่อยู่ด้านบนของ Riak ที่ให้พื้นที่จัดเก็บและความสามารถของ API จัดเก็บไฟล์และข้อมูลเมตาใน Riak จากนั้นแจกจ่ายให้กับผู้ใช้ปลายทาง
  • เสาตอม่อ - จัดการคำค้นหาที่เกี่ยวข้องกับเอนทิตีที่ไม่ซ้ำกันทั่วโลก เช่น บัคเก็ตและผู้ใช้ในอินสแตนซ์ 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 ส่วนที่ 1: การตั้งค่า Riak KV

แบ็กเอนด์สำหรับ Riak CS

แบ็กเอนด์เริ่มต้นที่ใช้โดย Riak คือ Bitcask แต่แพ็คเกจ Riak CS มีแบ็กเอนด์พิเศษที่คลัสเตอร์ Riak ต้องใช้ซึ่งเป็นส่วนหนึ่งของระบบ Riak CS เวอร์ชันปกติมีแบ็กเอนด์ Multi มาตรฐานที่มาพร้อมกับ Riak

ที่เก็บข้อมูล Riak แบบเดียวกับที่ใช้ใน Riak CS ใช้ดัชนีรอง ซึ่งตอนนี้ต้องใช้แบ็กเอนด์ LevelDB ส่วนอื่นๆ ของระบบ Riak CS จะได้รับประโยชน์จากการใช้แบ็กเอนด์ Bticask การใช้แบ็กเอนด์หลายตัวอย่างรวมอยู่ใน Riak CS เพื่อใช้ประโยชน์จากแบ็กเอนด์ทั้งสองนี้เพื่อให้ได้การผสมผสานระหว่างประสิทธิภาพและฟังก์ชันการทำงานที่ดีที่สุด ส่วนถัดไปจะอธิบายวิธีกำหนดค่า Riak เพื่อใช้ Multi-backend นี้อย่างเหมาะสม

แบ็กเอนด์ คือสิ่งที่ Riak จะใช้บันทึกข้อมูล Riak KV มีแบ็กเอนด์หลายตัวในคลังแสง: Bitcask, LevelDB, Memory และ Multi

นอกจากนี้ระบบคำนวณพื้นที่เก็บข้อมูลยังใช้ Riak MapReduse เพื่อรวมไฟล์ลงในที่เก็บข้อมูล ซึ่งหมายความว่าคุณต้องบอกโหนด Riak ทั้งหมดว่าจะค้นหาไฟล์ Riak CS ที่เตรียมไว้ได้ที่ไหนก่อนที่จะคำนวณพื้นที่เก็บข้อมูล

ต้องเปลี่ยนพารามิเตอร์อื่นๆ อีกหลายตัวเพื่อกำหนดค่าโหนด Riak ให้เป็นส่วนหนึ่งของระบบ Riak CS เช่น ที่อยู่ IP และที่อยู่ IP และพอร์ตสำหรับการส่งข้อความผ่านบัฟเฟอร์โปรโตคอล การตั้งค่าอื่นๆ สามารถเปลี่ยนแปลงได้หากจำเป็น ส่วนต่อไปนี้อธิบายวิธีกำหนดค่าโหนด Riak ให้ทำงานโดยเป็นส่วนหนึ่งของระบบ Riak CS

การตั้งค่าแบ็กเอนด์ Riak

ขั้นแรก ไฟล์การกำหนดค่า riak.conf หรือ Advanced.config/app.config จะได้รับการแก้ไข ไฟล์เหล่านี้สามารถอยู่ในไดเร็กทอรี /etc/riak หรือ /opt/riak/etc ตามค่าเริ่มต้น Riak จะใช้แบ็กเอนด์ Bitcask สิ่งแรกที่เราต้องทำคือเปลี่ยนไฟล์กำหนดค่าโดยลบบรรทัดต่อไปนี้:

RIAK.คอนเฟอเรนซ์

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

ต่อไป เราต้องแสดงให้เห็นถึงความต้องการโมดูล RiakCS สำหรับ Riak และสั่งให้ Riak ใช้แบ็กเอนด์ที่กำหนดค่าไว้เพื่อ Riak CS เราจำเป็นต้องใช้ไฟล์ 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 ให้เป็นจริง เราสามารถเพิ่มบรรทัดในไฟล์การกำหนดค่า riak.conf หรือส่วน riak_core ใน Advanced.config หรือ app.config

RIAK.คอนเฟอเรนซ์

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 สามารถสร้างพี่น้องที่จำเป็นสำหรับ Riak CS ในการทำงาน หากคุณเชื่อมต่อกับ Riak CS โดยใช้ไลบรารีไคลเอ็นต์ ไม่ต้องกังวล คุณจะไม่ต้องแก้ไขข้อขัดแย้ง เนื่องจากการดำเนินการ Riak CS ทั้งหมดมีความสอดคล้องตามที่กำหนดไว้อย่างเคร่งครัด

พี่น้อง เป็นวิธีการจัดเก็บอ็อบเจ็กต์หลายรายการไว้ในคีย์เดียวเพื่อให้อ็อบเจ็กต์มีค่าต่างกันบนโหนดที่ต่างกัน

หมายเหตุ: Allow_mult
โหนด Riak ใด ๆ ที่รองรับ Riak CS จะมีการตั้งค่า Allow_mult ให้เป็นจริงตลอดเวลา Riak CS จะรีเซ็ตการเปิดตัวหากค่าเป็นเท็จ

การตั้งชื่อโฮสต์และที่อยู่ IP

แต่ละโหนด Riak มีชื่อ ซึ่งสามารถระบุได้ในตัวเลือก nodename ใน riak.conf หากคุณใช้ไฟล์การกำหนดค่า app.config คุณจะต้องสร้างไฟล์ชื่อ vm.args ในไดเร็กทอรีเดียวกับ app.config และระบุชื่อโฮสต์โดยใช้แฟล็ก -name เราขอแนะนำให้ระบุชื่อโหนดในรูปแบบ @ ดังนั้นหากคุณมีสามโหนดที่ทำงานบนโฮสต์เดียว 100.0.0.1 คุณสามารถเรียกโหนดเหล่านั้นได้ [ป้องกันอีเมล], [ป้องกันอีเมล]และ [ป้องกันอีเมล] หรือจะตั้งชื่อให้เจาะจงกว่านี้ก็ได้ เช่น [ป้องกันอีเมล], [ป้องกันอีเมล] และอื่น ๆ ตัวอย่างด้านล่างสาธิตการเปลี่ยนชื่อโฮสต์เป็น [ป้องกันอีเมล]ซึ่งจะทำงานบน localhost

RIAK.คอนเฟอเรนซ์

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

คุณต้องตั้งชื่อโหนดทั้งหมดก่อนที่จะเริ่มต้นและเข้าร่วมคลัสเตอร์

ทดสอบการตั้งค่า

ตอนนี้การตั้งค่าโหนดที่จำเป็นทั้งหมดเสร็จสิ้นแล้ว เราสามารถลองเปิดใช้งาน Riak ได้:

SHELL

 riak start 

บันทึก คำตอบในกรณีของฉัน:

ที่เก็บข้อมูลบนคลาวด์ Riak ส่วนที่ 1: การตั้งค่า Riak KV

ที่นี่คุณต้องรอสักครู่ จากนั้นคุณก็สามารถเริ่มทดสอบโหนดที่กำลังรันอยู่ได้

SHELL

 riak ping

หากการตอบกลับคือ pong แสดงว่า Riak กำลังทำงานอยู่ หากการตอบกลับคือ Node ไม่ตอบสนองต่อการ Ping แสดงว่ามีสิ่งผิดปกติเกิดขึ้น

บันทึก คำตอบในกรณีของฉัน:

ที่เก็บข้อมูลบนคลาวด์ Riak ส่วนที่ 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 ของโฮสต์ Riak และพอร์ต 8087 ด้วยที่อยู่ IP ที่เหมาะสม

RIAK.คอนเฟอเรนซ์

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

หมายเหตุ:ค่าของพารามิเตอร์ 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 ในไฟล์ขั้นสูง.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.คอนเฟอเรนซ์

 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.คอนเฟอเรนซ์

 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.คอนเฟอเรนซ์

 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

คู่มือต้นฉบับ

ที่มา: will.com

เพิ่มความคิดเห็น