ในโมดูลนี้ คุณจะได้ใช้ Amazon Elastic Container Service (Amazon ECS) เพื่อสร้างคลัสเตอร์อินสแตนซ์การประมวลผล EC2 ที่มีการจัดการและปรับใช้อิมเมจของคุณเป็นคอนเทนเนอร์ที่ทำงานบนคลัสเตอร์ เริ่มสร้าง

ภาพรวมของสถาปัตยกรรม

a. ไคลเอนต์
ไคลเอนต์สร้างคำขอปริมาณงานบนพอร์ต 80 ไปยังโหลดบาลานเซอร์

b. โหลดบาลานเซอร์
โหลดบาลานเซอร์จะกระจายคำขอไปยังพอร์ตที่พร้อมใช้งานทั้งหมด

d. กลุ่มเป้าหมาย
อินสแตนซ์จะได้รับการลงทะเบียนในกลุ่มเป้าหมายของแอปพลิเคชัน

d. พอร์ตคอนเทนเนอร์
คอนเทนเนอร์แต่ละรายการจะเรียกใช้กระบวนการเดียวของแอปพลิเคชัน ซึ่งผูกคลัสเตอร์ node.js หลักกับพอร์ต 80 ภายในเนมสเปซ

e. จัดเก็บระบบ node.js ขนาดใหญ่ในคอนเทนเนอร์
คลัสเตอร์ node.js หลักมีหน้าที่ในการกระจายการรับส่งข้อมูลไปยังตัวปฏิบัติการภายในแอปพลิเคชันที่มีขนาดใหญ่ สถาปัตยกรรมนี้จะถูกจัดเก็บในคอนเทนเนอร์ แต่ยังคงมีขนาดใหญ่ เนื่องจากคอนเทนเนอร์แต่ละรายการมีคุณสมบัติเหมือนกันในคอนเทนเนอร์ที่เหลือ

Amazon Elastic Container Service (Amazon ECS) เป็นบริการจัดการคอนเทนเนอร์ประสิทธิภาพสูงที่ปรับขนาดได้ในระดับสูงซึ่งสนับสนุนคอนเทนเนอร์ Docker และช่วยให้คุณสามารถเรียกใช้แอปพลิเคชันในคลัสเตอร์ Amazon EC2 instance ที่มีการจัดการได้ ด้วยการเรียกใช้ API ที่เรียบง่าย คุณจะสามารถเปิดใช้และหยุดแอปพลิเคชันที่เปิดใช้งาน Docker สืบค้นสถานะคลัสเตอร์ที่สมบูรณ์ และเข้าใช้งานคุณสมบัติที่คุ้นเคยมากมาย อย่างเช่น กลุ่มความปลอดภัย, Elastic Load Balancing, ไดรฟ์ข้อมูล EBS และบทบาท IAM

คุณสามารถใช้ Amazon ECS ในการกำหนดเวลาการจัดวางคอนเทนเนอร์ในคลัสเตอร์ของคุณตามความต้องการด้านทรัพยากรและข้อกำหนดด้านความพร้อมใช้งาน นอกจากนี้ คุณยังสามารถรวมตัวกำหนดเวลาของคุณเองหรือตัวกำหนดเวลาจากภายนอกเพื่อให้สอดคล้องกับข้อกำหนดด้านธุรกิจหรือข้อกำหนดเฉพาะแอปพลิเคชันได้เช่นกัน

ไม่มีค่าบริการเพิ่มเติมสำหรับ Amazon ECS คุณชำระเพียงแค่ค่าทรัพยากร AWS (เช่น EC2 instance หรือปริมาณ EBS) ที่คุณสร้างขึ้นเพื่อจัดเก็บและเรียกใช้แอปพลิเคชันของคุณ

เวลาดำเนินการ: 30 นาที

บริการที่ใช้:


ทำตามคำแนะนำแบบทีละขั้นตอนด้านล่างเพื่อปรับใช้แอปพลิเคชัน node.js โดยใช้ Amazon ECS เลือกหมายเลขขั้นตอนเพื่อขยายส่วนนั้น

break-the-monolith
  • ขั้นตอนที่ 1 เปิดใช้คลัสเตอร์ ECS โดยใช้ AWS CloudFormation

    สร้างคลัสเตอร์ Amazon ECS ที่ปรับใช้เบื้องหลัง Application Load Balancer

    1. ไปที่ คอนโซลของ AWS CloudFormation
    2. เลือก สร้างสแตก
    3. เลือก อัปโหลดไฟล์เทมเพลต และเลือกไฟล์ ecs.yml จากโปรเจกต์ GitHub ที่ amazon-ecs-nodejs-microservice/2-containerized/infrastructure/ecs.yml จากนั้นเลือก ถัดไป
    4. สำหรับชื่อสแตก ให้ป้อน BreakTheMonolith-Demo ตรวจสอบว่าพารามิเตอร์อื่นๆ มีค่าต่อไปนี้หรือไม่:
      1. ความจุที่ต้องการ = 2
      2. InstanceType = t2.micro
      3. MaxSize = 2
    5. เลือก ถัดไป
    6. ในหน้า กำหนดค่าตัวเลือกสแตก ให้ใช้ตัวเลือกเริ่มต้นตามเดิม และเลื่อนลง จากนั้นเลือก ถัดไป
    7. ในหน้า ตรวจสอบ BreakTheMonolith-Demo ให้เลื่อนไปที่ล่างสุดของหน้า ตอบรับข้อความเกี่ยวกับ ความจุ โดยเลือกที่กล่องทำเครื่องหมาย และเลือก สร้างสแตก

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

    สร้างสแตก

    ⚐ หมายเหตุ: นอกจากนี้ คุณสามารถใช้ AWS Command Line Interface (AWS CLI) เพื่อปรับใช้สแตก AWS CloudFormation ได้ เรียกใช้โค้ดต่อไปนี้ในเทอร์มินัลจากโฟลเดอร์ amazon-ecs-nodejs-microservices/3-microservices และเปลี่ยน [region] ตามภูมิภาค AWS ของคุณ

    $ aws cloudformation deploy \
       --template-file infrastructure/ecs.yml \
       --region [region] \
       --stack-name BreakTheMonolith-Demo \
       --capabilities CAPABILITY_NAMED_IAM
  • ขั้นตอนที่ 2 ตรวจสอบว่าคลัสเตอร์ของคุณทำงานหรือไม่

    การตรวจสอบคลัสเตอร์ของ Amazon ECS
    • เลือกคลัสเตอร์ BreakTheMonolith-Demo จากนั้นเลือกแท็บ งาน เพื่อตรวจสอบว่าไม่มีการเรียกใช้งานอยู่
    งานคลัสเตอร์ของ Amazon ECS
    • เลือกแท็บ อินสแตนซ์ ECS เพื่อตรวจสอบว่ามี Amazon EC2 instance สองรายการที่สร้างขึ้นจากเทมเพลต AWS CloudFormation หรือไม่
      ⚐ หมายเหตุ: หากคุณได้รับข้อความว่า เอเจนต์ ECS เป็นรุ่นเก่า ให้เลือก เรียนรู้เพิ่มเติม เพื่อดูคำแนะนำในการอัปเดตเอเจนต์ ECS
    Amazon ECS Instance
  • ขั้นตอนที่ 3 เขียนคำจำกัดความของงาน

    คำจำกัดความของงานจะระบุวิธีการปรับใช้คอนเทนเนอร์แอปพลิเคชันในคลัสเตอร์โดย Amazon ECS

    • จากเมนูนำทางด้านซ้ายของ Amazon ECS ให้เลือก คำจำกัดความของงาน
    • เลือก สร้างคำจำกัดความของงานใหม่
    • ในหน้า เลือกประเภทการเปิดใช้ที่เข้ากันได้ ให้เลือกตัวเลือก EC2 จากนั้นเลือก ขั้นตอนถัดไป
    • ในหน้า กำหนดค่าคำจำกัดความของงานและคอนเทนเนอร์ ให้ทำตามข้อต่อไปนี้:
      • ในช่อง ชื่อคำจำกัดความของงาน ให้ป้อน api
      • เลื่อนลงไปที่ คำจำกัดความของคอนเทนเนอร์ และเลือก เพิ่มคอนเทนเนอร์
      • ในหน้าต่าง เพิ่มคอนเทนเนอร์:
        • สามารถเว้นว่างหรือใช้การตั้งค่าเริ่มต้นสำหรับพารามิเตอร์ที่ไม่ได้กำหนดได้
        • ในช่อง ชื่อคอนเทนเนอร์ ให้ป้อน api
        • ในช่อง อิมเมจ ให้ป้อน [account-ID].dkr.ecr.[region].amazonaws.com/api:v1
          เปลี่ยน [account-ID] และ [region] ด้วยข้อมูลเฉพาะของคุณ ตรวจสอบให้แน่ใจว่าแท็ก v1 ตรงกับค่าที่คุณใช้ในโมดูล 1 เพื่อแท็กและพุชอิมเมจ นี่คือ URL ของอิมเมจของพื้นที่เก็บข้อมูล ECR ของคุณที่ได้สร้างขึ้นในโมดูลก่อนหน้านี้
        • ในช่อง ขีดจำกัดหน่วยความจำ ให้ตรวจสอบว่าได้เลือก ขีดจำกัดสูงสุด และป้อน 256 เป็นค่า
        • ภายใต้ การแมปพอร์ต พอร์ตโฮสต์ = 0 และพอร์ตคอนเทนเนอร์ = 3000
        • เลื่อนไปที่ สภาพแวดล้อม หน่วย CPU = 256
    • เลือก เพิ่ม
      คุณจะกลับไปที่หน้า กำหนดค่าคำจำกัดความของงานและคอนเทนเนอร์
    • เลื่อนไปยังด้านล่างสุดของหน้า และเลือก สร้าง

    คำจำกัดความของงานของคุณได้แสดงในคอนโซล

    คำจำกัดความของงาน
  • ขั้นตอนที่ 4 กำหนดค่า Application Load Balancer: กลุ่มเป้าหมาย

    Application Load Balancer (ALB) จะช่วยให้บริการของคุณสามารถยอมรับปริมาณการใช้งานขาเข้า ALB จะกำหนดเส้นทางปริมาณการใช้งานไปที่อินสแตนซ์คอนเทนเนอร์ที่ทำงานในคลัสเตอร์ของคุณโดยอัตโนมัติ โดยใช้เป็น กลุ่มเป้าหมาย

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

    • ไปที่ ส่วนโหลดบาลานเซอร์ของ EC2 Console
    • ค้นหาโหลดบาลานเซอร์ที่ชื่อว่า demo
    • เลือกกล่องทำเครื่องหมายถัดจาก demo เพื่อดูรายละเอียดเกี่ยวกับโหลดบาลานเซอร์
    • ในแท็บ คำอธิบาย ให้ค้นหาคุณลักษณะ VPC (ในรูปแบบนี้: vpc-xxxxxxxxxxxxxxxxx)
      ⚐ หมายเหตุ: คุณจะต้องมีคุณลักษณะ VPC ในขั้นตอนถัดไป เมื่อคุณกำหนดค่ากลุ่มเป้าหมาย ALB
    คุณลักษณะ VPC

    กำหนดค่ากลุ่มเป้าหมาย ALB

    • ไปที่ ส่วนกลุ่มเป้าหมายของ EC2 Console
    • เลือก สร้างกลุ่มเป้าหมาย
    • กำหนดค่าพารามิเตอร์ของกลุ่มเป้าหมายต่อไปนี้ (สำหรับพารามิเตอร์ที่ไม่ได้อยู่ในรายการด้านล่าง ให้ใช้ค่าเริ่มต้นตามเดิม):
      • สำหรับ ชื่อกลุ่มเป้าหมาย ให้ป้อน api
      • สำหรับ โปรโตคอล ให้เลือก HTTP
      • สำหรับ พอร์ต ให้ป้อน 80
      • สำหรับ VPC ให้เลือกค่าที่ตรงกับรายการจากคำจำกัดความของโหลดบาลานเซอร์ ซึ่งมักจะไม่ใช่ VPC เริ่มต้นของคุณ
      • เข้าถึง การตั้งค่าการตรวจสอบสภาพขั้นสูง และแก้ไขพารามิเตอร์ต่อไปนี้ หากจำเป็น: 
        • สำหรับ เกณฑ์สภาพดี ให้ป้อน 2
        • สำหรับ เกณฑ์สภาพไม่ดี ให้ป้อน 2
        • สำหรับ หมดเวลา ให้ป้อน 5
        • สำหรับ ช่วงเวลา ให้ป้อน 6
    • เลือก สร้าง
    สร้างกลุ่มเป้าหมาย
  • ขั้นตอนที่ 5 กำหนดค่า Application Load Balancer: กระบวนการรอรับ

    กระบวนการรอรับของ ALB จะตรวจสอบคำขอเชื่อมต่อขาเข้าใน ALB ของคุณ

    เพิ่มกระบวนการรอรับลงใน ALB

    • ไปที่ ส่วนโหลดบาลานเซอร์ของ EC2 Console
    • เลือกกล่องทำเครื่องหมายถัดจาก demo เพื่อดูรายละเอียดเกี่ยวกับโหลดบาลานเซอร์
    • เลือกแท็บ กระบวนการรอรับ
    • เลือก เพิ่มกระบวนการรอรับ และแก้ไขพารามิเตอร์ต่อไปนี้ หากจำเป็น:
      • สำหรับ Protocol:port ให้เลือก HTTP และป้อน 80
      • สำหรับ การดำเนินการเริ่มต้น ให้เลือก ส่งต่อไปยัง และในช่อง กลุ่มเป้าหมาย ให้ป้อน api
    • เลือก บันทึก
    กระบวนการรอรับไปยัง ALB
  • ขั้นตอนที่ 6 นำระบบขนาดใหญ่มาใช้งานเป็นบริการ

    นำระบบขนาดใหญ่มาใช้งานเป็นบริการคลัสเตอร์

    • ไปที่ Amazon ECS Console และเลือก คลัสเตอร์ จากแถบเมนูด้านซ้าย
    • เลือกคลัสเตอร์ BreakTheMonolith-Demo เลือกแท็บ บริการ จากนั้นเลือก สร้าง
    • ในหน้า กำหนดค่าบริการ ให้แก้ไขพารามิเตอร์ต่อไปนี้ (และใช้ค่าเริ่มต้นตามเดิมสำหรับพารามิเตอร์ที่ไม่ได้อยู่ในรายการด้านล่าง): 
      • สำหรับ ประเภทการเปิดใช้ ให้เลือก EC2
      • สำหรับ ชื่อบริการ ให้ป้อน api 
      • สำหรับ จำนวนงาน ให้ป้อน 1
      • เลือก ขั้นตอนถัดไป
    • ในหน้า กำหนดค่าเครือข่าย ที่ส่วน Load balancing ให้เลือก Application Load Balancer
      พารามิเตอร์เพิ่มเติมจะแสดงขึ้นมา ประกอบด้วย บทบาท IAM ของบริการ และ ชื่อโหลดบาลานเซอร์
      • สำหรับ บทบาท IAM ของบริการ ให้เลือก BreakTheMonolith-Demo-ECSServiceRole
      • สำหรับ ชื่อโหลดบาลานเซอร์ ให้ตรวจสอบว่าได้เลือก demo แล้ว
    • ในส่วน คอนเทนเนอร์ที่ต้องการโหลดบาลานซ์ ให้เลือก เพิ่มลงในโหลดบาลานเซอร์
      ระบบจะแสดงข้อมูลเพิ่มเติมที่มีป้ายกำกับว่า api:3000
    • ในส่วน api:3000 ให้ทำตามข้อต่อไปนี้:
      • สำหรับช่อง พอร์ตกระบวนการรอรับการผลิต ให้เลือก 80:HTTP
      • สำหรับ ชื่อกลุ่มเป้าหมาย ให้เลือกกลุ่มของคุณ: api
      • เลือก ขั้นตอนถัดไป
    • ในหน้า ตั้งค่า Auto Scaling ให้ใช้การตั้งค่าเริ่มต้นตามเดิม และเลือก ขั้นตอนถัดไป
    • ในหน้า การตรวจสอบ ให้ตรวจสอบการตั้งค่า จากนั้นเลือก สร้างบริการ
    • เมื่อสร้างบริการแล้ว ให้เลือก ดูบริการ
    API Amazon ECS Service

    ทำได้ดีมาก! ตอนนี้คุณมีบริการที่ทำงานแล้ว อาจใช้เวลาสักครู่เพื่อให้คอนเทนเนอร์ลงทะเบียนว่าอยู่ในสภาพดีและเริ่มต้นรับปริมาณการใช้งาน

  • ขั้นตอนที่ 7 ทดสอบระบบขนาดใหญ่ของคุณ

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

    วิธีค้นหา URL บริการของคุณ:

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


    ดูบริการแต่ละส่วน:
    แอปพลิเคชัน node.js จะกำหนดเส้นทางการรับส่งข้อมูลไปยังตัวปฏิบัติการแต่ละแห่งตาม URL หากต้องการดูตัวปฏิบัติการ เพียงแค่เพิ่มชื่อตัวปฏิบัติการ api/[worker-name] ลงไปที่ท้ายชื่อ DNS Name ดังนี้:

    • http://[DNS name]/api/users
    • http://[DNS name]/api/threads
    • http://[DNS name]/api/posts

    นอกจากนี้ คุณยังสามารถเพิ่มหมายเลขบันทึกท้าย URL เพื่อเจาะลึกลงไปถึงบันทึกเฉพาะได้อีกด้วย ตัวอย่างเช่น: http://[DNS name]/api/posts/1 หรือ http://[DNS name]/api/users/2

    ตัวอย่างผู้ใช้