ฉันจะอัพเดตไฟล์คอนฟิกูเรชัน Nginx บนเซิร์ฟเวอร์ที่เหมือนกันจำนวนมากพร้อมกันได้อย่างไร?


12

เรามีเซิร์ฟเวอร์ Nginx มากมายใน Amazon EC2 ซึ่งบางครั้งเราจำเป็นต้องอัปเดตไฟล์กำหนดค่าเพื่อใช้การตั้งค่าใหม่

ขณะนี้เรามีการกำหนดค่าใน AMI ที่กำหนดเองและหากเราต้องการอัปเดตเราต้องสร้าง AMI ขึ้นใหม่และจากนั้นอินสแตนซ์ EC2 เรามีสคริปต์ตัวช่วย แต่ก็ยังค่อนข้างพยายามทำเช่นนั้น มีวิธีที่ดีกว่านี้ไหม?


3
ansible, saltstack เพื่อชื่อไม่กี่
poige

คำตอบ:


26

มีแนวคิดหลายประการที่คุณสามารถใช้ประโยชน์ได้

กุญแจสู่ความสำเร็จคือระบบอัตโนมัติ

ตัวเลือกแรกคือการให้ทำสิ่งที่คุณกำลังทำอยู่ตอนนี้คือสร้าง EC2s กับเปลี่ยนการตั้งค่าทุก ในวิธีอัตโนมัติอย่างสมบูรณ์

ในขณะที่คุณกำลังทำในขณะนี้การปรับปรุงการกำหนดค่าผ่าน Amis คุณใช้เวลานี้หนึ่งก้าวและสร้างท่อที่เมื่อมีการเปลี่ยนแปลงการตั้งค่าไฟล์ในพื้นที่เก็บข้อมูลบางอย่างจะ:

  1. สร้าง AMI ใหม่โดยอัตโนมัติ- หนึ่งในเครื่องมือที่ได้รับความนิยมมากที่สุดในการทำนั่นคือPacker
  2. สร้างกอง Nginx ของคุณใหม่โดยอัตโนมัติ- คุณควรมีเซิร์ฟเวอร์ Nginx ทั้งหมดในกลุ่มการปรับขนาดอัตโนมัติที่มีApplication Load Balancerอยู่ข้างหน้า หากคุณไม่ควรทำอย่างนั้นมันจะทำให้การอัปเดตนั้นง่ายเหมือนการอัปเดตการกำหนดค่าการเปิดตัว ASGและรอให้อินสแตนซ์สร้างขึ้นใหม่จาก AMI ใหม่

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

  • AWS Elastic Beanstalkที่ใช้ Chefภายในและคุณสามารถเขียนสคริปต์ Nginx ของคุณได้ด้วยวิธีนี้
  • การปรับใช้รหัส AWSซึ่งเป็นเครื่องมือการปรับใช้สคริปต์ที่ทำงานร่วมกับส่วนอื่น ๆ ของ AWS Code Suite ได้ดี :
    • Code Commitที่คุณสามารถเก็บไฟล์การกำหนดค่า Nginx ไว้ใน Git
    • รหัสไปป์ไลน์ที่สามารถทริกเกอร์การปรับใช้โดยอัตโนมัติเมื่อใดก็ตามที่ไฟล์การกำหนดค่าถูกอัพเดตใน Code Commit
  • Ansibleหรือ Puppetซึ่งเป็นเครื่องมือที่ไม่ใช่ของ AWS ที่ได้รับความนิยมซึ่งสามารถช่วยคุณให้เซิร์ฟเวอร์ทั้งหมดได้รับการกำหนดค่าแบบเดียวกัน

เมื่อคุณพอใจกับการอัปเดตการกำหนดค่า Nginx เหล่านี้โดยอัตโนมัติคุณอาจต้องการขยายระบบอัตโนมัติไปยังส่วนที่เหลือของโครงสร้างพื้นฐานของคุณ


มีเอกสารไวท์เปเปอร์ที่ยอดเยี่ยมเกี่ยวกับตัวเลือกการปรับใช้บน AWSที่จะให้ภาพรวมที่ดี

ฉันหวังว่าจะช่วย :)


อีกทางเลือกหนึ่งสำหรับ Ansible หรือ Puppet คือ Salt ซึ่งได้รับการออกแบบมาสำหรับการตั้งค่าหลัก / minion และปรับให้เหมาะสมที่สุดสำหรับการปรับใช้ขนาดใหญ่
Araho

5

เก็บการกำหนดค่าของคุณบน EFS และกำหนดใช้ EFS ในการกำหนดค่าที่ตั้ง Nginx อีกทางเลือกวางไว้ใน Amazon S3 และเรียกใช้การซิงค์เป็นครั้งคราวหรือใช้ s3fs (ระวัง s3fs อาจไม่ดีพอสำหรับการใช้งานจริง)

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

อีกทางเลือกหนึ่งคือเพียงแค่ส่งการกำหนดค่าใหม่ไปยังเซิร์ฟเวอร์ของคุณโดยใช้เครื่องมืออัตโนมัติขั้นพื้นฐานเช่นการปรับใช้รหัส AWS

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



1

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


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