คุณจะทำการ failover อัตโนมัติบน EC2 ได้อย่างไร


13

จากคนที่จัดการกับกลุ่มของตัวเอง (เช่นไม่ได้ใช้ / จ่ายเงินสำหรับ Amazon Autoscale, Rightscale, Scalr, ฯลฯ ) คุณจัดการกับอินสแตนซ์ของคุณบน EC2 และการจัดการความล้มเหลวได้อย่างไร (เช่น) ฉันสงสัยว่าคนส่วนใหญ่เพิ่งจบการเขียนสคริปต์ของตนเองที่โหลดกับ EC2 API อย่างที่ฉันสงสัย

นั่นเป็นวิธีการของเรา: ใช้ Python Boto ในการตรวจสอบ / เริ่มต้น daemon ใหม่ที่ทำงานนอกสถานที่และรับฟัง UDP Keep-alives จากอินสแตนซ์ของเรา เมื่อล้มเหลวเราถ่ายภาพจำนวนลงทะเบียนเริ่มต้นอินสแตนซ์ใหม่ลบโวลุ่มเก่าและอื่น ๆ

บ่อยครั้งที่เมื่อแฮ็คสคริปต์ของเราฉันคิดว่าจะต้องมีเครื่องมือโอเพนซอร์สบางอย่างที่จัดการกับปัญหาเหล่านี้แล้วและไม่มีข้อ จำกัด ของ (พูด) Scalr แต่ฉันกลับมาจาก Google เสมอ มือเปล่า (สิ่งต่าง ๆ เช่น Scalr นั้นค่อนข้าง จำกัด ในชุด / รุ่น / การกำหนดค่าของซอฟต์แวร์ที่สนับสนุนและมีวิธีที่ยุ่งยากและ IMO ในการจัดการการตั้งค่าเหล่านี้)

นอกจากนี้ระบบนิเวศ Linux-HA / Pacemaker (Heartbeat, ldirectord ฯลฯ ) เสียงเหมือนมันไม่เหมาะจริงๆสำหรับ EC2 (แต่ฉันก็พบสิ่งนี้ - แม้ว่าฉันไม่แน่ใจว่านี่เป็นทางออกที่มีคุณภาพสูงจริงๆ)

คำตอบ:


5

ฉันไม่ได้ตั้งใจที่จะบอกให้ชัดเจน แต่แนวคิดทั่วไปคือการผลักดันความซับซ้อนนี้ไปสู่บริการที่จัดการโดยอเมซอน

ดังนั้นในส่วนหน้าคุณจะต้องใช้ Amazon Elastic Load Balancing (ELB) เพื่อสร้างสมดุลในการโหลดที่พร้อมใช้งานสูง ท้ายสุดคุณใช้บริการฐานข้อมูลเชิงสัมพันธ์ของ Amazon (โฮสต์ MySQL), SimpleDB และ S3 สำหรับการจัดเก็บ ทั้งหมดนี้ได้รับการจัดการโดย Amazon และมีการจัดการความพร้อมใช้งานสูง / การจัดการความล้มเหลวบางประเภท

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

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

เซิร์ฟเวอร์ที่กำหนดเองของคุณเป็นเรื่องอื่น สำหรับสิ่งเหล่านี้เป็นจริงคุณต้องดำเนินการเองด้วยวิธีการที่มีอยู่แล้วภายในแอปพลิเคชันหรือใช้เทปพันเทปร่วมกับเครื่องมือ HA / โอเพ่นซอร์ส HA แบบกำหนดเอง

การแก้ปัญหาการซื้อ Rightscale อาจแพงเกินไป แต่เครื่องมือของ Amazon ที่แพงน้อยกว่าเช่น ELB, การแจ้งเตือน CloudWatch พื้นฐาน (ตอนนี้ฟรีสำหรับความละเอียด 5 นาที) หรือ AutoScale คุ้มค่าหากคุณต้องการความพร้อมใช้งานสูง


3
เราคุ้นเคยกับชุดคุณสมบัติ AWS รวมถึงข้อ จำกัด ในการยกตัวอย่างแรกของคุณ ELB สามารถเข้าถึงได้ผ่าน CNAME RRs ซึ่งไม่สามารถอยู่ร่วมกับ SOA RR ได้ดังนั้นจึงไม่สามารถให้บริการ TLD ได้และไม่สามารถเข้าถึงได้ผ่านทาง IP คงที่ - ผิดหวังอย่างมากในฟอรัม เพื่อยกตัวอย่างที่สองของคุณอ๋อ RDS คือ MySQL ซึ่งเป็นข้อ จำกัด ที่ยิ่งใหญ่ ใช่เราสนใจที่จะทำการ failover อัตโนมัติของประเภทเครื่องของเราเอง ใช่การปรับใช้คลาวด์ส่วนตัวนั้นเกี่ยวข้องกับเรา ใช่ฉันแค่อยากรู้ อื่น ๆ
หยาง

2
@ หยาง: คุณควรที่จะใช้ถ้อยคำคำถามของคุณให้ละเอียดยิ่งขึ้นและช่วยฉันในการพิมพ์คำตอบของฉัน ไม่มีวิธีแก้ปัญหาเดียวที่เหมาะกับ HA ขึ้นอยู่กับบริการที่สงสัยวิธีรักษาสถานะคุณสมบัติการเข้าแทนที่โปรโตคอล ฯลฯ คุณถูกต้องเกี่ยวกับข้อ จำกัด / ความยากลำบากในการใช้เครื่องมือ HA ระดับ IP ทั่วไปบน EC2 แต่ไม่มีคำตอบเดียวที่ใช้กับ "HA on AWS" ในระดับสากล
Jesper M

0

RightScale มีบทความที่ยอดเยี่ยมเกี่ยวกับวิธีการทำให้ Failover อัตโนมัติบน EC2 ในขณะที่ส่วนใหญ่แสดงวิธีการใช้ RightScale เองหลักการทั่วไปและอาจเป็นประโยชน์กับทุกคนที่คิดว่าจะตั้งค่าสถาปัตยกรรมการเฟลโอเวอร์ใน EC2 ได้อย่างไร


0

ปัญหาที่คุณอธิบาย (HA, การตรวจสอบเซิร์ฟเวอร์ที่กำหนดเอง, บริการ 'การอัดเทป') ได้รับการจัดการโดยผู้ให้บริการ PaaS Rightscale และ Scalr ถูกกล่าวถึงแล้วในคำตอบก่อนหน้าและมีตัวเลือกที่ดีเพิ่มเติม (ดูที่นี่สำหรับตัวเลือก PaaS บางตัว:

/programming/9542784/look-for-paas-providers-recommendations )

คุณควรพิจารณาว่าผู้ให้บริการรายใดให้ความพอดีกับสิ่งที่คุณต้องการมากที่สุด

แจ้งให้ทราบล่วงหน้าเนื่องจากฉันทำงานให้กับ cloudify ซึ่งเป็นผู้ให้บริการ PaaS แบบโอเพ่นซอร์ส


0

ฉันเพิ่งเขียนโพสต์ในบล็อกวิศวกรรมของเราเกี่ยวกับวิธีการใช้ ELB ร่วมกับ Auto Scaling เพื่อให้เกิดการ failover อัตโนมัติสำหรับแอพทุกประเภท ครอบคลุมถึงวิธีการตรวจสอบสุขภาพของ ELB เพื่อใช้ในการ ping สถานะของแอพของคุณและเรียกใช้การดำเนินการปรับขนาดอัตโนมัติ


0

คุณติดตั้ง heartbeat บนเซิร์ฟเวอร์ทั้งสองคุณได้แนบ IP แบบยืดหยุ่นกับเซิร์ฟเวอร์ 'ที่ใช้งานอยู่' คุณกำหนดค่าสคริปต์ให้ทำ failover โดยเริ่มต้นคำขอ API เพื่อรับ IP แบบยืดหยุ่นทันทีที่เซิร์ฟเวอร์ 'สแตนด์บาย' รับ IP แบบยืดหยุ่น ( ใช้เวลาประมาณ 30-60 วินาที) มันสามารถเป็น master / active

ฉันไม่มีข้อมูลเฉพาะที่จะให้ที่นี่


-1

Amazon ให้บริการElastic Load Balancing แล้ว ... ทำไมต้องคิดค้นล้ออีกครั้ง


3
เนื่องจากข้อ จำกัด ต่าง ๆ ของ ELB? เนื่องจากต้องใช้ CNAME และไม่สามารถให้บริการทั้ง foo.com และ www.foo.com ได้ เพราะฉันต้องการใช้ตรรกะการจัดตารางเวลาที่กำหนดเอง? เพราะฉันแค่อยากรู้ว่าคุณจะใช้ ELB อย่างไรในกลุ่มของ VM ที่ไม่น่าเชื่อถือ? เลือกของคุณ
Yang

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