วิธีเพิ่ม Swap Memory ใน Elastic Beanstalk

Swap Memory คือหน่วยความจำเสมือน เราสามารถนำไปใช้ใน Elastic Beanstalk ได้โดยทำการสร้างไฟล์ขึ้นมาและใส้โค้ด Swap Memory ลงไปในไฟล์ และอัปโหลดผ่าน Environment เพียงเท่านี้ก็จะทำให้เราสามารถ Swap Memory ได้เพียงไม่กี่ขั้นตอน โดยดูวิธีทำในบทความนี้ได้เลยครับ

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ครั้งนี้ผมจะมาอธิบายเกี่ยวกับ วิธีเพิ่ม Swap Memory ใน Elastic Beanstalk ครับ

สิ่งที่ต้องมี

ในบทความนี้ผมจะละเว้นการอธิบายในส่วนของ Elastic Beanstalk หากผู้อ่านต้องการเรียนรู้วิธีการเริ่มต้นใช้งาน Elastic Beanstalk ผมขอแนะนำให้อ่านบทความด้านล่างนี้ครับ

เตรียมไฟล์สำหรับ Deploy เพื่อใช้ตั้งค่าใน Elastic Beanstalk

ขั้นตอนนี้ผมจะสร้าง [โฟลเดอร์ .ebextensions] และ [ไฟล์ 01_swap.config] เพื่อเตรียมไว้ใช้อัปโหลดใน Elastic Beanstalk เพื่อให้สามารถเปลี่ยนแปลงค่า Memory ของ EC2 Instance ที่สร้างจาก Environment ได้ครับ

ถ้ามีไฟล์ที่มีเนื้อหาการตั้งค่าในโฟลเดอร์ .ebextensions ของโปรเจกต์ที่จะ Deploy แล้ว เนื้อหาการตั้งค่าจะถูกดำเนินการในระหว่างการ Deploy ซึ่งเราสามารถใช้ไฟล์นี้ในการตั้งค่า Swap Memory ได้ครับ

ทำการเตรียมไฟล์ที่จะใช้ Deploy และเพิ่มการตั้งค่าต่อไปนี้ให้กับไฟล์ครับ

สร้างโฟลเดอร์ .ebextensions และไฟล์ 01_swap.config

ต่อไปให้สร้างโฟลเดอร์.ebextensionsจากนั้นคลิกเข้าไปยังโฟลเดอร์และสร้างไฟล์01_swap.configด้วย Notepad เหมือนกับขั้นตอนที่แล้วเลยครับ ซึ่งขั้นตอนนี้คือการสร้างไฟล์ที่จะใช้ในการตั้งค่า Swap Memory ขนาด 1024 MB (หรือ 1 GB) ใน EC2 Instance ที่สร้างขึ้นจาก Environment

Copy Code ด้านล่างนี้วางใน Notepad และ Save ลงในโฟลเดอร์ .ebextensions โดยใช้ชื่อไฟล์01_swap.configครับ (เราสามารถ Swap Memory ได้ตามขนาดที่ต้องการ โดยเปลี่ยนขนาดที่ count ที่สำคัญ Storage ของคุณต้องมีความจุเพียงพอจึงจะทำการ Swap Memory ได้)

commands:
  01_swap_memory:
    test: '[ ! -e /var/swap.1 ]'
    command: |
      /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
      /sbin/mkswap /var/swap.1
      /sbin/swapon /var/swap.1


เมื่อสามารถรวม ".ebextensions/01_swap.config" ไว้ในกลุ่มไฟล์ที่ใช้ Deploy แล้ว ให้ทำการบีบอัดไฟล์
หน้าจอด้านล่างนี้คือตัวอย่าง ซึ่งตัวอย่างนี้คือกรณีของโปรเจกต์ที่มีแค่ไฟล์ที่ชื่อว่า info.php ครับ

ดูตัวอย่างที่นี่เฉพาะเนื้อหาการบีบอัดไฟล์นี้ครับ: Compress to ZIP file (2 ไฟล์)

เมื่อเตรียมไฟล์เสร็จแล้ว Deploy ได้เลยครับ

การเชื่อมต่อกับ EC2 ที่สร้างจาก Elastic Beanstalk ด้วย PuTTY

ขั้นตอนต่อไปนี้คือการแสดงผลลัพธ์ใน Terminal ที่ได้จากการตั้งค่าทั้งหมดตามตัวอย่างข้างต้น โดยให้เริ่มทำการตรวจสอบตามนี้ครับ

ดูตัวอย่างที่นี่เฉพาะหัวข้อย่อยนี้: ทำการเชื่อมต่อกับ EC2 ที่สร้างใน Elastic Beanstalk ด้วย PuTTY

รันคำสั่งนี้เพื่อตรวจสอบ Memory ใน Server EC2 Instance

free -m

Output (example)
ดูที่แถว Swap: จะเห็นว่ามี total:1023(คือ count=1024) ซึ่งเป็นค่า Memory ที่เราได้ใส่ไว้ในไฟล์ 01_swap.config นั่นเองครับ

root@ip-172-31-30-120:~

Using username "ec2-user".
Authenticating with public key "tinnakorn-test"
Last login: Mon Jul 18 05:19:49 2022 from node-bjt.pool-180-180.dynamic.totinternet.net
  _____ _           _   _      ____                       _        _ _
 | ____| | __   ___| |_(_) ___| __ )  ___  __ _ _ __  ___| |_ __ _| | | __
 |  _| | |/ _ \/ __| __| |/ __|  _ \ / _ \/ _\ | '_ \/ __| __/ _\ | | |/ /
 | |___| | (_| \__ \ |_| | (__| |_) |  __/ (_| | | | \__ \ || (_| | |   <
 |_____|_|\__,_|___/\__|_|\___|____/ \___|\__,_|_| |_|___/\__\__,_|_|_|\_\

 Amazon Linux 2 AMI

 This EC2 instance is managed by AWS Elastic Beanstalk. Changes made via SSH
 WILL BE LOST if the instance is replaced by auto-scaling. For more information
 on customizing your Elastic Beanstalk environment, see our documentation here:
 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

[ec2-user@ip-172-31-30-120 ~]$ free -m
              total        used        free      shared  buff/cache   available
Mem:            460         220          17           8         222         221
Swap:          1023           2        1021
[ec2-user@ip-172-31-30-120 ~]$

เราสามารถสร้าง Swap Memory โดยการตั้งค่าด้วยภาษาโปรแกรมนอกจาก PHP (สภาพแวดล้อม Elastic Beanstalk ที่ใช้ Amazon Linux 2 จะสามารถใช้งานได้ทั้งหมด)

สรุป

การทำงานของ Swap Memory คือการดึงพื้นที่ Storage ใน EBS มาสร้าง Swap Memory เพื่อทำหน้าที่เป็นหน่วยความจำเสมือน และทำให้ระบบการทำงานของ Linux Instance เร็วขึ้น ซึ่งวิธีนี้เราสามารถใช้กับ Elastic Beanstalk ได้ นอกจากนี้ยังช่วยให้การใช้ EC2 มีราคาที่ถูกขึ้นอีกด้วย ! มาลองทำ Swap Memory กันครับ

บทความที่เกี่ยวข้อง