การเชื่อมต่อ ElasticCache จาก EC2

สำหรับเนื้อหาในครั้งนี้ผมจะมาสอนวิธีการใช้งาน ElasticCache ควบคู่กับ EC2 นะครับซึ่งก่อนหน้านี้ผมได้เขียนบล็อกเกี่ยวกับการติดตั้งและใช้งาน Redis ลงใน EC2 กันไปแล้ว และในคราวนี้เราจะมาใช้งาน Redis ผ่าน ElasticCache กันครับ และนี้คือสิ่งที่เราจะทำกันในบล็อกนี้ครับ
2022.07.08

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

สำหรับเนื้อหาในครั้งนี้ผมจะมาสอนวิธีการใช้งาน ElasticCache ควบคู่กับ EC2 นะครับซึ่งก่อนหน้านี้ผมได้เขียนบล็อกเกี่ยวกับการติดตั้งและใช้งาน Redis ลงใน EC2 กันไปแล้ว และในคราวนี้เราจะมาใช้งาน Redis ผ่าน ElasticCache กันครับ และนี้คือสิ่งที่เราจะทำกันในบล็อกนี้ครับ

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

ทำการติดตั้ง EC2 Instance สำหรับใช้ในการเชื่อมต่อกับ ElasticCache โดยทำตามลิงก์ด้านล่างนี้ครับ
! สำหรับผู้ใช้งานที่มีอยู่แล้ว ข้ามขั้นตอนนี้ไปได้เลยครับ

  • ※ตัวอย่างตั้งค่าการสร้าง EC2 Instance ในบทความนี้

Create Key pairs

Key pairs:chawish-test

Launch instances

Name and tags

Name:chawish-test

Application and OS Images (Amazon Machine Image)

Amazon Machine Image (AMI):Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type(Default)

Instance type

Instance type:t3a.nano

Key pair (login)

Key pair name - required:chawish-test

Network settings

Firewall (security groups)

Security group name - required:chawish-test
Description - required:chawish-test

Inbound security groups rules

Security group rule 1 (TCP, 22, 0.0.0.0/0)

Type:ssh ▼| Source type:My IP ▼| Source:xxx.xxx.x.xxx/32 ✕

Configure storage

1x:8GiBgp2 ▼Root volume (Default)

หลังจากที่ทำตามขั้นตอนทั้งหมดแล้ว หลังจากนี้เราจะมาทำในส่วนของการเตรียมการเพื่อใช้งาน ElasticCache กันครับ

เริ่มต้นใช้งาน ElasticCache

เริ่มต้นให้เราเข้าไปที่เมนู Security group ในหน้า EC2 เพื่อทำการสร้าง Security group สำหรับใช้งาน ElasticCache โดยเฉพาะ

สร้าง Security group เพื่อใช้งาน ElasticCache

ให้เราเข้าไปที่เมนู Security group ของหน้า EC2 และกดปุ่มมุมขวาบนที่เขียนว่า Create security group

จากนั้นให้เรากำหนดชื่อ Security group ของเรา โดยในตัวอย่างผมจะตั้งค่าเป็น

Security group name: chawish-test-ecache
Description: chawish-test-ecache

ต่อมาให้เรามาดูในส่วนของ Inbound rules นะครับและตั้งค่าแบบนี้ตามภาพครับ

Type: Custom TCP
Port range: 6379
Source: Custom ▼ [เลือกชื่อ SecurityGroup ของ EC2]


เมื่อกรอกข้อมูลทุกอย่างเสร็จหมดแล้วให้เรากดปุ่ม Create security group ได้เลย ถ้าการดำเนินการเสร็จสิ้นระบบก็จะแสดงข้อมูลแบบนี้เพื่อยืนยันว่าตอนนี้เราได้สร้าง Security group สำเร็จเป็นที่เรียบร้อยแล้ว

สร้าง ElasticCache

ให้เราเข้าไปที่หน้าแรกของเครื่องมือ ElasticCache และกด Create cluster ตามด้วยเลือกหัวข้อ Create Redis cluster ตามภาพครับ

Step 1: Cluster settings

จากนั้นให้เราตั้งค่าในส่วนของ Step ที่หนึ่งตามนี้นะครับ

Choose a cluster creation method: Configure and create a new cluster
Cluster mode: Disaable
***ถ้าเราเลือกเป็น Enable ระบบจะทำการสร้าง AZ มาเพิ่มเพื่อให้เกินความยืดหยุ่นในการใช้งาน แต่ในบล็อกนี้เป็นการสอนผมจะเลือกเป็น Disabled ครับ***


Name: chawish-test-ecache
Description: chawish-test-ecache
Location: AWS Cloud


Multi-AZ: Disabled
Auto-failover: Disabled
***สาเหตุที่เราติ้ก Disabled ในหัวข้อ Multi-AZ และ Auto-failover เพราะในการทดสอบครั้งนี้จะไม่มีการใช้งาน MultiAZ ครับ***
(แต่ถ้ามีความจำเป็นที่ต้องใช้งานให้เราเลือกเป็น Enable ให้หมดนะครับ)


Engine version: 6.2
Port: 6379
Parameter groups: default.redis6.x
Node type: cache.t3.micro
Number of replicas: 0
***ในตัวอย่างนี้เราจะไม่ใช้งาน Multi AZ ดังนั้นเราจึงเลือกหัวข้อนี้เป็น 0***
(กรณีที่อยากใช้งาน AZ มากกว่าหนึ่งให้กรอกตัวเลขจำนวนที่ต้องการจะใช้งานมาได้เลย)


Subnet groups: create a new subnet group
Name: chawish-test-ecache-subnet-group
Description: chawish-test-ecache-subnet-group


เมื่อกรอกข้อมูลครบหมดแล้วให้กดที่ปุ่ม Next เพื่อไปยัง Step ต่อไปได้เลยครับ

Step 2: Advanced settings

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

Security group: chawish-test-ecache


Backup: Disabled (กรณีถ้าเราต้องการให้ระบบมีการ Backup ข้อมูลรายวันให้ติ้ก Enable ได้เลยครับ)
Maintenance window: No preference
Auto upgrade minor versions: Disabled


Slow logs: Disabled
Engine logs: Disabled


เมื่อกรอกข้อมูลทั้งหมดในขั้นตอนนี้แล้วให้เรากด Next เพื่อไปขั้นตอนถัดไปได้เลยครับ

Step 3: Review and create

ใน Step ที่ 3 นี้จะเป็นขั้นตอนสุดท้ายของการสร้าง ElasticCache โดยจะเป็นเนื้อหาสรุปเพื่อให้เราตรวจเช็คความถูกต้องของข้อมูลที่เราได้กรอกมาทั้งหมดครับ หากเราตรวจดูความถูกต้องทั้งหมดแล้วให้กด Create cluster ได้เลยครับ หลังจากนั้นระบบก็จะทำการสร้าง Cluster ตามข้อมูลที่เราได้กรอกไว้และแสดงออกมาเป็นหน้านี้ครับ (ในกระบวนการนี้อาจจะใช้เวลามากกว่า 5 นาทีนะครับ)

เมื่อระบบสร้าง Cluster เสร็จแล้ว เราก็จะได้ Endpoint มาใช้งานนะครับโดยเปรียบเสมือนกัน Host ที่เราสามารถเข้าไปใช้งาน Redis ได้นั้นเองครับ

Primary endpoint: chawish-test-ecache.iepocm.ng.0001.apse1.cache.amazonaws.com:6379
*** ให้เรา copy ข้อมูล endpoint ของเราเก็บไว้เพื่อนำไปใช้เชื่อมต่อกับ EC2 ในขั้นตอนถัดไปนะครับ ***

เชื่อมต่อ ElasticCache กับ EC2 ผ่านโปรแกรม Putty

ให้เราเปิดโปรม Putty ขึ้นมาและรันคำสั่งนี้เพื่อให้เรามีสิทธิ์สูงสุดในการใช้งาน
sudo su -

ตามด้วยคำสั่งอัพเดท package ต่างๆ ให้กับเซิร์ฟเวอร์ของเรา
yum update -y

ต่อไปให้เราทำการติดตั้ง Redis บน EC2 เพื่อที่เราจะสามารถเชื่อมต่อกับเซิร์ฟเวอร์ Redis ที่อยู่ใน ElasticCache ได้ครับ โดยใช้คำสั่งนี้
amazon-linux-extras install -y redis6

และเมื่อเราติดตั้ง redis เสร็จแล้วนะครับเราก็จะทำการเชื่อมต่อเซิร์ฟเวอร์ของ ElasticCache มาใข้งานใน EC2 โดนใช้คำสั่งนี้ครับ
redis-cli -h [endpoint]
โดยให้เรา copy ข้อมูล Endpoint จากหน้า Cluster มานะครับแต่ให้เราลบในส่วนของ port ด้านหลังออกไปนะครับ เพราะภายในเซิร์ฟเวอร์ของ ElasticCache มีการตั้งค่า port เพื่อใช้งานเป็นที่เรียบร้อยแล้ว

chawish-test-ecache.iepocm.ng.0001.apse1.cache.amazonaws.com:6379
|
|
v
chawish-test-ecache.iepocm.ng.0001.apse1.cache.amazonaws.com

ก็จะได้เป็นข้อมูลที่นำมาใช้จริงแบบนี้นะครับ
redis-cli -h chawish-test-ecache.iepocm.ng.0001.apse1.cache.amazonaws.com

เมื่อเราทำการเชื่อมต่อไปยังเซิร์ฟเวอร์ของ ElasticCache ได้แล้วให้เราทำการทดสอบการใช้งาน Redis เป็นขั้นตอนต่อไปเลยครับ

ทดสอบการใช้งาน Redis บน EC2

ในส่วนของการทดสอบการใช้งาน Redis ผมได้เขียนเนื้อหาไว้ในบล็อกก่อนหน้านี้แล้ว สามารถทำตามขั้นตอนในลิ้งค์ด้านล่างได้เลยครับ

  • ทดสอบการใช้งาน Redis บน EC2
  • และนี้ก็คือผลลัพธ์จากการทดสอบการใช้งานของผมนะครับ

    การ Delete เมื่อสิ้นสุดการใช้งาน

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

    ElasticCache

    ให้เข้าไปที่หน้าแรกของ ElasticCache และทำการเลือกชื่อ Cluster ที่เราสร้างและใช้งานอยู่นะครับพอเราคลิ้กเข้าไปจะมีปุ่มที่เขียนว่า Delete อยู่นะครับให้เราคลิ้กได้เลย

    หลังจากนั้นจะมีหน้าต่างระบบแสดงขึ้นมาและถามว่าต้องการจะให้มีการ Backup ข้อมูลหรือไม่ ? ให้เราเลือก No นะครับ และสุดท้ายให้เรากรอกชื่อ cluster ของเราลงไปเพื่อทำการยืนยันว่าต้องการจะ Delete จริงๆ เมื่อกรอกเสร็จเราก็จะสามารถกดปุ่ม Delete มุมขวาล่างได้ครับ

    EC2

    ต่อมาเราก็จะทำการ Terminate Instance กันครับผม วิธีการก็คือให้เราเข้าไปที่หน้า EC2 และดูแทบเมนูด้านซ้ายที่เขียนว่า Instance เมื่อเราคลิ้กเข้าไปก็จะเห็นรายชื่อ Instance ที่มีการใช้งานอยู่ ให้เราเลือกชื่อ Instance ของเราและไปที่ Instance state ตามด้วยหัวข้อ Terminate instance ครับผม เพียงเท่านี้เราปิดการทำงาน EC2 เป็นที่เรียบร้อยแล้วครับ

    จากนั้นให้เรามาดูในส่วนของ Security Group นะครับจะสังเกตว่าถึงเราจะ Delete ElasticCache และ Terminate Instance เรียบร้อยแล้วข้อมูล Security Group ก็ยังคงอยู่นะครับให้เราทำการเลือก Security Group ของเราและไปที่หัวข้อ Actions นะครับตามด้วยเลื่อนไปเลือกหัวข้อล่างสุดที่เขียนว่า Delete security groups ครับ

    เพียงเท่านี้เราก็ทำการลบข้อมูลและปิดการทำงานของ Service ทั้งหมดเรียบร้อยแล้วครับ

    สรุป

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

  • Amazon ElastiCache คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS ในปี 2022
  • การติดตั้ง Redis ลงใน Amazon Linux 2 (EC2)