Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

วิธีตั้งค่า Elasticsearch สำหรับการสำรองข้อมูลแบบ Snapshot ไปยัง S3

เผยแพร่ครั้งแรกเมื่อวันที่ 2 มีนาคม 2560 ที่ ObjectRocket.com/blog

แพลตฟอร์มข้อมูลยังคงขยายและเปลี่ยนแปลงไปเรื่อยๆ แต่มีด้านหนึ่งที่ไม่เคยเปลี่ยนแปลง—ทุกคนยังต้องการสำเนาสำรองข้อมูลของตน! บทความนี้จะแนะนำวิธีใช้ปลั๊กอิน S3 repository กับอินสแตนซ์ Rackspace ObjectRocket for Elasticsearch® ของคุณ

วิธีตั้งค่า Elasticsearch สำหรับการสำรองข้อมูลแบบ Snapshot ไปยัง S3

ในขณะที่แพลตฟอร์มข้อมูลยังคงขยายและเปลี่ยนแปลง ด้านหนึ่งยังคงเหมือนเดิม—ทุกคนยังต้องการสำเนาสำรองข้อมูล! วิวัฒนาการของเทคโนโลยียังคงต้องการการเข้าถึงสำรองข้อมูลเพื่อกู้คืนสู่สภาพแวดล้อมพัฒนาท้องถิ่น สำเนาสำหรับการเก็บรักษาหรือการปฏิบัติตามข้อกำหนด และกรณีอื่นๆ โพสต์นี้อธิบายวิธีใช้ปลั๊กอิน S3 repository กับอินสแตนซ์ Rackspace® ObjectRocket® for Elasticsearch

ส่วนประกอบของ Snapshot

Elasticsearch snapshots ประกอบด้วย 3 ส่วนหลัก: repository, snapshot(s) และชื่อ snapshot ที่ไม่ซ้ำกัน Repository มีรายละเอียดเฉพาะเกี่ยวกับที่ตั้งและวิธีการเก็บ snapshot การสำรองข้อมูลคืนคืนของ ObjectRocket เริ่มต้นเป็นประเภท: fs และการสำรอง S3 เป็นประเภท: S3 ทั้งสองมีโครงสร้างการตั้งค่าที่แตกต่างกันเล็กน้อย นี่คือตัวอย่างโค้ดของ repository:

GET /_snapshot?pretty ... { "s3_repository" : { "type" : "s3", "settings" : { "bucket" : "MYBUCKETNAME", "server_side_encryption" : "false", "region" : "us-east-1", "compress" : "false" } } } ... 

แต่ละ repository ที่แสดงประกอบด้วย snapshot หนึ่งหรือหลายรายการในรูปแบบอาร์เรย์:

GET /_snapshot/s3_repository/_all?pretty [... { "snapshot" : "20170208225601", "uuid" : "t6R6jxLJTIueQizv9clJYg", "version_id" : 5010499, "version" : "5.1.1", "indices" : [ ".triggered_watches", ".watch_history-2016.10.26", "elastalert_status", "coffee-2016.10.301", ".kibana", "coffee-2016.10.305", "coffee-2016.10.304", "coffee-2016.10.303", "coffee-2016.10.302", ".watches" ], "state" : "SUCCESS", "start_time" : "2017-02-09T06:56:01.191Z", "start_time_in_millis" : 1486623361191, "end_time" : "2017-02-09T06:56:12.179Z", "end_time_in_millis" : 1486623372179, "duration_in_millis" : 10988, "failures" : [ ], "shards" : { "total" : 57, "failed" : 0, "successful" : 57 } }] 

สำหรับการดำเนินการ _snapshot ทั้งหมด คุณต้องอ้างอิง repository, snapshot และตัวระบุ snapshot ให้ถูกต้อง จากตัวอย่างก่อนหน้า ให้ใช้ snapshot : 20170208225601 เป็นตัวระบุที่ไม่ซ้ำกัน

#### การส่งการสำรองข้อมูลไปยัง S3

การตั้งค่า S3 repository กับ Elasticsearch เป็นกระบวนการที่ค่อนข้างง่าย มีเพียงไม่กี่ข้อกำหนดเบื้องต้นสำหรับการส่งการสำรองข้อมูลไปยัง S3 bucket ของคุณ:

  1. ติดตั้งปลั๊กอิน repository-s3
  2. ให้แน่ใจว่าเคลสเตอร์ของคุณสามารถเข้าถึง S3 ภายนอกได้
  3. มีข้อมูลประจำตัวที่เหมาะสม (bucket, secret และ key) สำหรับ S3

หากคุณมีอินสแตนซ์ ObjectRocket Elasticsearch ขั้นตอนแรกและสองควรจะตั้งค่าไว้โดยอัตโนมัติแล้ว และคุณต้องมีข้อมูลประจำตัว S3 สำหรับองค์ประกอบที่สาม หากคุณต้องการจำกัดกระบวนการสแนปชอตของ Elasticsearch ให้สร้าง นโยบายแบบกำหนดเอง (Custom Policy) ด้วยคอนโซล AWS® IAM เอกสารนโยบายควรมีลักษณะคล้ายตัวอย่างต่อไปนี้ (แทนที่ MYBUCKETNAME):

{ "Statement": [ { "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads", "s3:ListBucketVersions" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::MYBUCKETNAME" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::MYBUCKETNAME/*" ] } ], "Version": "2012-10-17" 

}

เมื่อข้อกำหนดเบื้องต้นเสร็จสิ้น ขั้นตอนแรกคือการสร้าง S3 repository ของคุณ:

PUT /_snapshot/s3_repository { "type": "s3", "settings": { "bucket": "MYBUCKETNAME", "region": "us-east-1", "access_key": "KEY", "secret_key": "SECRET" } }' 

หลังจากสร้าง repository แล้ว คุณสามารถดำเนินการ _snapshot ทั้งหมดได้ หากต้องการสร้าง snapshot ใหม่ ให้เข้าถึงเอนด์พอยต์ต่อไปนี้และกำหนด SNAPSHOT_NAME ของคุณ:

PUT /_snapshot/s3_repository/SNAPSHOT_NAME?wait_for_completion=false 

Snapshot บางครั้งอาจใช้เวลารันนาน คุณอาจต้องการตรวจสอบสถานะของ snapshot ที่ กำลังดำเนินการ (in-flight) การใช้เอนด์พอยต์นี้จะแสดงรายละเอียดเพิ่มเติมเกี่ยวกับ snapshot หรือการดำเนินการกู้คืนที่กำลังทำงานอยู่:

GET /_snapshot/_status 

สมมติว่าเราลบดัชนีทั้งหมดทันทีหลังจาก snapshot ล่าสุดเสร็จสิ้น และหลังจากนั้นก็นิดหน่อย กู้คืนดัชนีทั้งหมดจาก S3 snapshot ให้รันคำสั่งต่อไปนี้:

POST /_snapshot/s3_repository/SNAPSHOT_NAME/_restore 

หากคุณต้องการกู้คืนดัชนีแบบเลือกได้ ให้ปรับรูปแบบเล็กน้อย ตัวอย่างเช่น:

POST /_snapshot/s3_repository/SNAPSHOT_NAME/_restore { "indices": "myindex_1,myindex_2", "ignore_unavailable": true } 

ควรระบุไว้ว่าในเวลาเดียวกันสามารถมีการดำเนินการ snapshot หรือ restore เพียงหนึ่งรายการต่อเคลสเตอร์ นอกจากนี้ snapshot ยังมีผลกระทบเล็กน้อยต่อประสิทธิภาพของเคลสเตอร์ ดังนั้นให้แน่ใจว่านโยบายการสำรองข้อมูลของคุณไม่ได้รุนแรงเกินไป!

как всегда, не стесняйтесь связываться с нами, если у вас возникнут проблемы с этими шагами по адресу support@objectrocket.com

ใช้แท็บ Feedback เพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังสามารถคลิก Sales Chat เพื่อแชททันทีและเริ่มสนทนาได้