แฟ้มระบบ Elastic (EFS) เมานต์ภายนอก AWS


23

ฉันมีเซิร์ฟเวอร์ที่อยู่นอก AWS ฉันต้องการที่จะติดตั้งไดรฟ์ข้อมูล EFS ลงไป แต่ฉันไม่แน่ใจว่าเป็นไปได้หรือไม่

บางทีถ้าคุณสร้าง VPC และคุณสร้างอุโมงค์ผ่าน VPN?

มีใครรู้บ้างไหมว่าสิ่งนี้เป็นไปได้หรือไม่?


เป็นไปได้อย่างแน่นอน ... ฉันได้ใช้ EFS จากนอก AWS ผ่านอุโมงค์ TLS ในขณะนี้ ... แต่มี "เคล็ดลับ" เล็กน้อยที่ฉันเชื่อว่าคุณจะต้องติดตั้งเพื่อให้สามารถใช้งานได้ งาน. ฉันจะยืนยันว่าวิธีการที่ฉันทำมันมีความจำเป็นจริง ๆ แล้ว (มันเป็นเวลานานแล้วตั้งแต่ฉันตั้งค่า) หรือไม่ก็เป็นไปไม่ได้ถ้าไม่มีและฉันจะโพสต์คำตอบเมื่อฉันสามารถยืนยันได้
Michael - sqlbot

EFS นั้นหมายถึงการเป็นระบบไฟล์ที่แชร์สำหรับ EC2 หลาย ๆ อินสแตนซ์ ภายนอกคุณควรพิจารณาใช้ S3 (ซึ่งคล้ายกับระบบไฟล์เป็นที่เก็บอ็อบเจ็กต์จริง ๆ ) หรืออาจเป็นอินสแตนซ์ EC2 ขนาดเล็กที่มีอินสแตนซ์ EBS อาจจะมีราคาถูกกว่า EFS - EBS บน SSD คือ 1/3 ของราคา EFS, EBS บนสนามแม่เหล็กอยู่ที่ 1/6 ค่าใช้จ่ายของ EFS และ S3 คือ 1 / 10th ของต้นทุนของ EFS คุณพยายามทำอะไรให้สำเร็จซึ่งทำให้ EFS เป็นตัวเลือกที่ดีที่สุด
ทิม

ฉันคิดว่าเพราะมันถูกเรียกว่าระบบไฟล์ ELASTIC มันจะง่ายต่อการเชื่อมต่อกับนอก AWS นอกจากนี้ - ถ้าฉันต้องการสำรองไฟล์ไปนอก AWS มันจะยากถ้าไม่สามารถทำได้จาก S3 จาก EFS ฉันสามารถเมาต์กับอินสแตนซ์ EC2 และทำการสำรองข้อมูล แต่ถ้าทั้งคู่ต้องการ VPN ฉันคิดว่ามันสร้างความแตกต่างได้น้อยมาก ...
Adam

S3 สามารถเข้าถึงได้ง่ายจากนอก AWS โดยการออกแบบง่ายขึ้นมากสำหรับการรวม / สำรองข้อมูล / อะไรก็ตาม - มีความยืดหยุ่นสูงเป็นพิเศษ EFS ได้รับการออกแบบให้เป็นระบบไฟล์ที่ใช้ร่วมกันระหว่างอินสแตนซ์ EC2 ดังนั้นจึงมีแนวโน้มที่จะใช้งานนอก AWS ได้ยากขึ้นซึ่งอาจต้องการอินสแตนซ์ EC2 เป็นพร็อกซี ไม่จำเป็นต้องมี VPN ขอแนะนำให้คุณต้องหารือเกี่ยวกับกรณีการใช้งานของคุณกับคนที่มีคุณสมบัติ / ประสบการณ์แทนที่จะตั้งสมมติฐานและกระโดดเข้ามา
ทิม

คำตอบ:


40

การอัปเดตที่สำคัญ:

ในเดือนตุลาคมปี 2018 AWS ได้ขยายขีดความสามารถของเทคโนโลยีเครือข่ายที่สนับสนุน EFS เพื่อให้สามารถใช้งานได้ผ่านการเชื่อมต่อ VPN ที่ได้รับการจัดการและ VPC ข้ามภูมิภาคที่ได้รับการจัดการ

https://aws.amazon.com/about-aws/whats-new/2018/10/amazon-efs-now-supports-aws-vpn-and-inter-region-vpc-peering/

EFS ได้เพิ่มการรองรับการเชื่อมต่อผ่านวงจร AWS Direct Connect ในปลายปี 2559

https://aws.amazon.com/blogs/aws/amazon-efs-update-on-premises-access-via-direct-connect-vpc/


ความคิดเห็นทำให้เกิดปัญหาที่น่าสนใจเนื่องจากในการอ่านคำถามครั้งแรกของฉันฉันอาจสันนิษฐานว่ามีความคุ้นเคยกับ EFS มากกว่าที่คุณอาจมี

ดังนั้นก่อนเล็กน้อยของพื้นหลัง:

"Elastic" ใน Elastic File System หมายถึงการปรับขนาดพื้นที่จัดเก็บและปริมาณงานโดยอัตโนมัติไม่ใช่ความยืดหยุ่นในการเข้าถึงจากภายนอก

EFS ดูเหมือนจะไม่มีข้อ จำกัด ที่มีความหมายต่อปริมาณข้อมูลที่คุณสามารถจัดเก็บได้ ขนาดสูงสุดของไฟล์เอกสารใด ๆ เดียวบนไดรฟ์ EFS เป็น52.673.613.135.872 ไบต์ (52 TiB) ข้อ จำกัด อื่น ๆ ส่วนใหญ่มีขนาดใกล้เคียงกัน

EFS โดยเฉพาะอย่างยิ่ง "ยืดหยุ่น" ในวิธีการเรียกเก็บเงิน แตกต่างจากระบบไฟล์ในปริมาณ EBS พื้นที่จะไม่ได้รับการจัดสรรล่วงหน้าบน EFS และคุณจ่ายเฉพาะค่าที่คุณจัดเก็บตามค่าเฉลี่ยรายชั่วโมง ค่าใช้จ่ายของคุณจะเพิ่มขึ้นและลดลง (พวกเขา "ยืดหยุ่น") ตามจำนวนเงินที่คุณเก็บไว้ เมื่อคุณลบไฟล์คุณจะหยุดจ่ายสำหรับพื้นที่ที่พวกเขาครอบครองภายในหนึ่งชั่วโมง หากคุณเก็บ 1 GB เป็นเวลา 750 ชั่วโมง (≅1เดือน) แล้วลบทิ้งหรือถ้าคุณเก็บ 375 GB เป็นเวลา 2 ชั่วโมงแล้วลบออกบิลรายเดือนของคุณจะเท่ากัน ... $ 0.30 ซึ่งแตกต่างจาก EBS อย่างแน่นอนซึ่งจะทำให้คุณมีค่าใช้จ่าย $ 37.50 สำหรับการจัดเก็บ 375 GB 0x00สำหรับเวลาที่เหลือในเดือนนี้

รูปแบบการกำหนดราคาพื้นที่เก็บข้อมูลของ S3 นั้นเหมือนกับ EFS เนื่องจากการเรียกเก็บเงินสำหรับที่เก็บข้อมูลหยุดลงทันทีที่คุณลบวัตถุและค่าใช้จ่ายคือ EFS ประมาณ 1/10 แต่ในขณะที่ฉันและคนอื่น ๆ พูดถึงหลายครั้ง S3 ไม่ใช่ ระบบแฟ้ม ยูทิลิตี้อย่าง s3fs-fuse พยายามที่จะให้ "สะพานอิมพีแดนซ์" แต่มีปัญหาในการพยายามรักษาบางสิ่งที่ไม่ใช่ระบบไฟล์อย่างแท้จริงราวกับว่ามันเป็น (ความสอดคล้องในที่สุดสำหรับการเขียนทับไม่ได้น้อยที่สุด) ดังนั้นหากระบบไฟล์ "ของจริง" คือสิ่งที่คุณต้องการและเป็นแอปพลิเคชันที่ต้องใช้การเข้าถึงร่วมกันหรือพื้นที่หน่วยความจำที่ต้องการนั้นยากต่อการพิจารณาหรือคุณต้องการปรับขนาดตามความต้องการ EFS อาจมีประโยชน์

และดูดีเมื่อคุณมีพื้นที่ว่าง 8.0 EiB

$ df -h | egrep '^Filesystem|efs'
Filesystem                                            Size  Used Avail Use% Mounted on
us-west-2a.fs-5ca1ab1e.efs.us-west-2.amazonaws.com:/  8.0E  121G  8.0E   1% /srv/efs/fs-5ca1ab1e
us-west-2a.fs-acce55ed.efs.us-west-2.amazonaws.com:/  8.0E  7.2G  8.0E   1% /srv/efs/fs-acce55ed

แต่เป็นเรื่องสำคัญที่จะต้องใช้บริการจัดเก็บข้อมูลที่เหมาะสมที่สุดสำหรับแอปพลิเคชันของคุณ ตัวเลือกแต่ละตัวมีกรณีการใช้งานที่ถูกต้อง EFS น่าจะเป็นโซลูชันเฉพาะด้านการจัดเก็บข้อมูลที่นำเสนอโดย AWS มีกรณีการใช้งานที่แคบกว่า EBS หรือ S3


แต่คุณสามารถใช้มันจากภายนอก VPC ได้หรือไม่?

คำตอบอย่างเป็นทางการคือไม่ :

ไม่สนับสนุนการเมานต์ระบบไฟล์ผ่านกลไกการเชื่อมต่อส่วนตัวของ VPC เช่นการเชื่อมต่อ VPN, VPC peering และ AWS Direct Connect

- http://docs.aws.amazon.com/efs/latest/ug/limits.html

ปัจจุบัน EFS ถูก จำกัด ให้เข้าถึงเฉพาะ EC2 Linux เท่านั้น นั่นก็เช่นกันภายใน VPC คุณสมบัติเพิ่มเติมจะถูกเพิ่มในไม่ช้า คุณสามารถติดตามประกาศ AWS สำหรับคุณสมบัติใหม่ที่เปิดตัว

- https://forums.aws.amazon.com/thread.jspa?messageID=732749

อย่างไรก็ตามคำตอบที่เป็นประโยชน์คือใช่แม้ว่านี่ไม่ใช่การกำหนดค่าที่รองรับอย่างเป็นทางการ เพื่อให้ทำงานได้ต้องมีขั้นตอนพิเศษบางอย่าง

แต่ละระบบไฟล์ EFS ได้รับการกำหนดที่อยู่ IP ปลายทางใน VPC ของคุณโดยใช้ Elastic network Interface (ENI) ซึ่งโดยทั่วไปจะมีหนึ่งรายการต่อหนึ่งโซนความพร้อมใช้งานและคุณต้องการให้แน่ใจว่าคุณติดตั้งที่อยู่ในโซนว่างที่ตรงกับอินสแตนซ์ ยังเป็นเพราะค่าใช้จ่ายแบนด์วิดธ์ใช้เมื่อมีการขนส่งข้อมูลข้ามเขตพื้นที่ว่าง

สิ่งที่น่าสนใจเกี่ยวกับ ENIs เหล่านี้คือไม่ปรากฏว่าใช้ตารางเส้นทางสำหรับซับเน็ตที่แนบมา ดูเหมือนว่าพวกเขาจะสามารถตอบสนองต่ออินสแตนซ์ภายใน VPC เท่านั้นโดยไม่คำนึงถึงการตั้งค่ากลุ่มความปลอดภัย (แต่ละระบบไฟล์ EFS มีกลุ่มความปลอดภัยของตนเองเพื่อควบคุมการเข้าถึง)

เนื่องจากไม่มีเส้นทางภายนอกที่เข้าถึงได้ฉันจึงไม่สามารถเข้าถึงจุดปลาย EFS โดยตรงผ่านฮาร์ดแวร์ VPN ของฉัน ... ดังนั้นฉันจึงหันไปใช้ HAProxy เพื่อนเก่าของฉันซึ่งแน่นอน (ตามที่ @ Tim คาดการณ์ไว้) เป็นสิ่งจำเป็นเพื่อให้งานนี้สำเร็จ มันเป็นการกำหนดค่าที่ตรงไปตรงมาเนื่องจาก EFS ใช้พอร์ต TCP เพียง 2049

ฉันใช้ HAProxy ใน t2.nano (HAProxy มีประสิทธิภาพมาก) ด้วยการกำหนดค่าที่มีลักษณะดังนี้:

listen fs-8d06f00d-us-east-1
    bind :2049
    mode tcp
    option tcplog
    timeout tunnel 300000 
    server fs-8d06f00d-us-east-1b us-east-1b.fs-8d06f00d.efs.us-east-1.amazonaws.com:2049 check inter 60000 fastinter 15000 downinter 5000
    server fs-8d06f00d-us-east-1c us-east-1c.fs-8d06f00d.efs.us-east-1.amazonaws.com:2049 check inter 60000 fastinter 15000 downinter 5000 backup
    server fs-8d06f00d-us-east-1d us-east-1d.fs-8d06f00d.efs.us-east-1.amazonaws.com:2049 check inter 60000 fastinter 15000 downinter 5000 backup

เซิร์ฟเวอร์นี้อยู่ใน us-east-1b ดังนั้นจึงใช้จุดปลาย us-east-1b เป็นเซิร์ฟเวอร์หลักอีกสองเซิร์ฟเวอร์เป็นข้อมูลสำรองหากปลายทางใน 1b ไม่ผ่านการตรวจสุขภาพ

หากคุณมี VPN ใน VPC ของคุณคุณจะเมานต์ไดรฟ์โดยใช้ที่อยู่ IP ของพร็อกซีอินสแตนซ์นี้เป็นเป้าหมาย (แทนที่จะใช้ EFS endpoint โดยตรง) และvoilàคุณได้ติดตั้งระบบไฟล์ EFS จากภายนอก VPC

ฉันติดตั้งมันเรียบร้อยแล้วบนเครื่อง Ubuntu ภายนอกรวมถึงเซิร์ฟเวอร์ Solaris (ที่ EFS ได้พิสูจน์แล้วว่ามีประโยชน์มากสำหรับการเร่งการรื้อถอนโดยการทำให้การย้ายบริการออกไปง่ายกว่า)

สำหรับบางสถานการณ์เช่นการย้ายข้อมูลไปยัง AWS หรือใช้งานระบบดั้งเดิมและระบบคลาวด์ควบคู่ไปกับข้อมูลเฉพาะในระหว่างการย้ายข้อมูล EFS ดูเหมือนจะเป็นผู้ชนะ

แน่นอนว่าระบบดั้งเดิมที่มีเวลาในการไปกลับสูงกว่าจะไม่ทำงานเช่นเดียวกับ EC2 แต่คาดว่าจะไม่มีข้อยกเว้นสำหรับกฎของฟิสิกส์ ทั้งๆที่ EFS และเกตเวย์ HAProxy ดูเหมือนจะเป็นทางออกที่มั่นคงสำหรับการทำให้มันทำงานจากภายนอก

หากคุณไม่มี VPN จากนั้นเครื่อง HAProxy หนึ่งเครื่องใน AWS และอีกหนึ่งเครื่องในศูนย์ข้อมูลของคุณยังสามารถส่งสัญญาณ EFS ผ่าน TLS สร้างการเชื่อมต่อ TCP เดี่ยว ๆ ด้วย payload ที่ห่อไว้ใน TLS สำหรับการขนส่งแต่ละ EFS แต่ละรายการ การเชื่อมต่อผ่านอินเทอร์เน็ต ไม่ใช่ทางเทคนิค VPN แต่ใช้ช่องทางการเข้ารหัสของการเชื่อมต่อ นี่ก็ดูเหมือนว่าจะทำงานได้ค่อนข้างดี


ol โซลาริส 10 คือ (ไม่น่าแปลกใจ) ค่อนข้างผิดปกติ - ในขั้นต้นรูทไม่ได้รับสิทธิ์พิเศษ - ไฟล์บนไดรฟ์ข้อมูล EFS ที่สร้างโดยรูทนั้นเป็นของรูท แต่ไม่สามารถchownแก้ไขให้ผู้ใช้รายอื่นได้ เครื่อง Solaris ( Operation not permitted) แม้ว่าทุกอย่างทำงานได้ตามที่คาดหวังจากไคลเอนต์ Ubuntu วิธีการแก้ปัญหาในกรณีนี้คือการพ่ายแพ้การทำแผนที่ภูต NFS ID บนเครื่อง Solaris svcadm disable svc:/network/nfs/mapid:defaultใช้ การหยุดบริการนี้ทำให้ทุกอย่างทำงานได้อย่างที่คาดไว้ นอกจากนี้การภาวนาของแต่ละความต้องการเข้าสู่ระบบเพื่อใช้งานในการ/usr/sbin/quota /etc/profileอาจจะมีวิธีแก้ปัญหาที่ดีกว่าหรือถูกกว่า แต่ก็เป็น Solaris ดังนั้นฉันจึงไม่อยากรู้อยากเห็นมากนัก


2
มันเป็นคำตอบที่ยอดเยี่ยม แต่ฉันเชื่อว่าคุณได้ถามคำถามที่ผิด ฉันสามารถตัดต้นไม้ด้วยส้อมได้ แต่มีเครื่องมือที่ดีกว่าสำหรับงานนี้
ทิม

บางครั้งฉันสงสัยว่ามีใครเห็นไข่อีสเตอร์ตัวเล็ก ๆ 3 ตัวที่ฉันรวมอยู่ในคำตอบนี้
Michael - sqlbot

4
5ca1ab1e (ปรับขนาดได้) และ acce55ed (เข้าถึงได้) และ 8d06f00d (dogfood)?
runamok

2
มันเป็น "กินอาหารสุนัข" ... แต่ใกล้พอ @runamok :)
ไมเคิล - sqlbot

3
ฉันชอบที่จะเห็นใครบางคนตัดต้นไม้ด้วยส้อม
Jam Risser

0

ณ วันที่ 20 ธันวาคม 2559, Amazon ประกาศ AWS Direct Connect ซึ่งสามารถใช้เพื่อเมาท์ระบบไฟล์ EFS บนเซิร์ฟเวอร์ในสถานที่ ดังนั้นโดยทั่วไปมีคุณสมบัติดั้งเดิมที่ให้คุณใช้ AWS EFS นอก VPC ได้

ตามข้อกำหนดเบื้องต้นคุณจะต้องเปิดใช้งานและสร้างการเชื่อมต่อ AWS Direct Connect จากนั้นใช้ nfs-utils ตามที่คุณควรใช้เมื่อติดตั้ง EFS ภายในอินสแตนซ์ EC2

ข้อมูลเพิ่มเติมสามารถดูได้ที่URLต่อไปนี้ ฉันเพิ่งโพสต์สิ่งนี้เนื่องจากฉันได้ค้นหาอนาคตนี้เช่นกันเพื่อให้ผู้อื่นทราบว่ามีวิธีแก้ปัญหาดั้งเดิมสำหรับการเชื่อมต่อ EFS นอก VPC

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.