มาทำความรู้จักกับ AWS Route53
AWS Route53 เป็น DNS Service ที่คอยจัดการ Web Traffic ข้อดีของ Route53 คือจะมี High Availability และสามารถขยายตัวได้เองโดยอัตโนมัติ(Scalability)
Route53 มาจาก DNS Server จะเปิดให้บริการที่ port 53 และการทำงานของ DNS จะเป็นการ Routing Traffic(คอยพา Web Request ไปยัง IP address ปลายทาง)
เมื่อเข้าไปใน Dashboard ของ Route53 เราจะเห็นว่า Route53 มีบริการอยู่ 4 อย่างหลักๆคือ
Domain Registration
การจัดการ Domain บน AWS มี 2 วิธีด้วยกันคือ
- จด Domain จากที่อื่นแล้วนำ Domain นั้นมาสร้าง Map กับ IP address บน AWS
- จด Domain บน AWS เลย
ซึ่งในตัวอย่างนี้จะเป็นการจด Domain ผ่านทาง AWS ได้เลย โดยกดปุ่ม Register Domain
ซึ่งการจด Domain บน AWS เราจะได้ความสะดวกเรื่องการจ่ายเงิน เราจะได้ไม่ต้องตามไปจ่ายหลายที่ แต่ข้อเสียคือ จะใช้เวลานานกว่าปกตินิดหน่อยและการย้าย Domain ไปที่อื่นจะยุ่งยากกว่า
การจด Domain บน AWS
ขั้นตอนการจด Domain บน AWS มีดังนี้
-
ใส่ชื่อ Domain ที่ต้องจดลงไปแล้วกดปุ่ม Check
-
เลือกจด Domain จาก Domain ที่ยังว่างอยู่ โดยการกดปุ่ม Select ด้านหลัง Domain ที่ต้องการ
-
กดปุ่ม Proceed to Checkout เพื่อชำระเงิน
-
ตรวจสอบความถูกต้องก่อนชำระเงิน ซึ่งถ้าเราไม่ต้องการให้ต่ออายุอัตโนมัติ ให้เอา checkbox หน้า Auto-renew ออก ถ้าเลือกเป็น
- On จะต่ออายุทุกปี
- Off จะไม่ต่ออายุอัตโนมัติ
-
กรอก Contact ของผู้ดูแล Domain
-
หลังจากนั้นรอจนกว่า Domain จะจดทะเบียนสำหร็จซึ่งอาจใช้เวลานานสุดถึง 3 วัน
ถ้าในกล่อง Domain Registration ขึ้นเป็น 1(ขึ้นอยู่กับจำนวน Domain ที่เราจด) และ Status ขึ้นเป็น Domain Registration Successful แสดงว่า Domain ของเราพร้อมนำไปใช้งานในขั้นตอนต่อไปแล้ว
DNS Management
หลังจกาที่เรามี Domain แล้วไม่ว่าจะจดมาจากที่อื่น หรือจดผ่าน AWS ก็ตาม เราต้องนำ Domain มา Map กับ Public IP address ซึ่งเราจะสร้าง Alias Record ขึ้นมา โดยมีขั้นตอน ดังนี้
-
เข้าไปที่เมนู HostZones
-
เลือก Domain ที่เราได้ Add เข้ามาใน AWS
-
กดปุ่ม Create Record เพื่อเพิ่ม DNS Record
-
กำหนดรายละเอียดของ DNS Record โดยต้องระบุ
- Record Name ในกรณีที่มี Sub-domain หรือ www นำหน้า ถ้าไม่มี(naked domain) ก็ไม่ต้องใส่
- Record Type เราสามารถเลือกประเภทของ DNS Record ได้ ซึ่งในกรณีนี้เราจะสร้าง A Record เพื่อ Map domain name เข้ากับ IP address(IPv4)
- Value กำหนด IP address ของ Web Server(ต้องเป็น Public IP) ถ้าเราใส่มากกว่า 1 IP จะเป็นการ Route Traffic แบบ Simple Route Policy(ดูรายละเอียดที่ Traffic Management)
- TTL(Time to Live) เป็น DNS Record นี้จะเก็บไว้นานขนาดไหน โดยปกติเราจะกำหนดค่านี้ไว้น้อย เพราะถ้าเรามีการ Update record นี้จะได้รอไม่นาน ถ้ากำหนดไว้เยอะ เราต้องรอนานกว่า DNS Server จะ update
- Routing Policy เป็นรูปแบบการกระจาย Traffic ของ Route53 ซึ่งมีอยู่หลายวิธีด้วยกัน
-
สุดท้ายกดปุ่ม Create Record เป็นอันเรียบร้อย ที่เหลือก็แค่รอเวลาให้ DNS Server Update ข้อมูลดเราก็จะสามารถเข้าถึง Website นี้ด้วย Domain name ที่เราจดไว้ได้
Traffic Management
Feature ที่สำคัญที่สุดของ Route53 คือ Traffic Management ซึ่งเราสามารถกระจาย Traffic ออกได้หลายรูปแบบ โดยที่เราจะเลือก Route Policy ได้หลายรูปแบบดังนี้
Simple Routing Policy
เป็นการกระจาย Traffic ไปยัง List ของ IP address ที่เราระบุไว้ โดยจะเป็นการกระจายแบบ Random
Simple Routing Policy จะมี DNS Record แค่เพียง Record เดียว
Multivalue Routing Policy
เป็นการกระจาย Workload แบบ Random เหมือนกับ Simple Routing Policy แต่จะแตกต่างกันตรงที่
- เราจะต้องแยก DNS Record(A Record) ของทั้ง 2 IP address
- เราต้องสร้าง Helth check ให้กับ Server แต่ละตัวด้วย
Multivalue จะเหมือนกับ Simple Routing Policy แต่จะกระจาย Workload เข้าไปยัง Server ที่พร้อมทำงาน(Available)เท่านั้น
Weighted Routing Policy
เป็นการกระจาย Workload แบบกำหนดสัดส่วน ถ้าเราต้องการแบ่ง Traffic แบบเป็นสัดส่วน ให้ใช้ Weighted Routing Policy
ในตัวอย่างนี้ Route53 จะส่ง Request เข้าไปยัง London น้อยกว่า Tokyo เพราะเรากำหนดสักดส่วนไว้เป็น 30%(London) และ 70%(Tokyo)
Failover Routing Policy
เป็นการสร้างแผนสำรองในกรณีที่ Server ตัวหลักเสียหาย Traffic จะถูกส่งไปยัง Server สำรองโดยอัตโนมัติ
ในตัวอย่างนี้ถ้า eu-west-2 เกิด down Traffic จะถูกส่งไปยัง ap-southeast-2 ทันที
เป็นการสร้าง High availability แบบ Active-Passive
Geolocation Routing Policy
เป็นการกระจาย Workload โดยการใช้ Location เหมาะสำหรับระบบที่มีผู้ใช้งานอยู่ทั่วโลก User จะถูกส่งไปยัง Server ที่ใกล้กับเค้ามากที่สุด
Geoproximity Routing Policy
เป็นการกระจาย Workload แบบเดียวกับ Geolocation แต่เราสามารถเพิ่มหรือลดขนาดของพื้นที่การให้บริการได้ด้วยการกำหนดค่า Bias
Latency Routing Policy
เป็นการกระจาย Workload โดยดูจากระยะเวลาในการ Load ที่สั้นที่สุด(Load ได้เร็วสุดตรงไหนก็ไปเข้าที่ Server นั้น)
ในตัวอย่างนี้ User จะถูกส่งไปยัง eu-west-2 เพราะใช้เวลาในการ Load น้อยสุด
Availability Monitoring
ใน Route53 จะมี Health Check สำหรับการตรวจสอบว่า Service ปลายทางนั้นยังพร้อมให้บริการอยู่หหรือไม่
ซึ่ง Health Check นั้นเป็น Feature ที่จำเป็นต้องมีใน Load Balancer ทุกๆตัว ซึ่ง Route53 เองก็เป็น DNS Load balancer จึงจะขาด Health Check ไปไม่ได้ ลักษณะของ Health Check ใน Route53 จะมีดังนี้
- Health Check จะใส่หรือไม่ใส่ก็ได้ ยกเว้น Failover Route Policy
- Health Check จะต้องกำหนดให้แต่ละ Record
- ถ้าผลลัพธ์ของ Health Check เป็น fail Record นั้นจะถูกนำออกจาก Route53 ทันที จนกว่าระบบจะกลับมาพร้อมใช้งานอีกครั้ง
- เราสามารถกำหนด Notification ใน SNS เพื่อแจ้งเตือนผู้ดูแลระบบได้
ขั้นตอนของการสร้าง Health Check
เราจะสร้าง Health Check เพื่อ Monitor service ปลายทาง(Target)ซึ่งจะมีขั้นตอนดังต่อไปนี้
-
เลือกเมนู Health Check ที่ด้านซ้ายมือ
-
เลือก Create Health Check
-
กรอกรายละเอียดของ Health Check
- Name ตั้งชื่อให้กับ Health Check(เดี๋ยวเราจะนำไปกำหนดใน DNS Record)
- Specify Endpoint เราสามารถเลือก Endpoit ได้ 2 แบบคือ
- IP address
- Domain
- Protocol เลือก Protocol ของ Target
- IP address ที่อยู่ของ Target
- Hostname ชื่อ Host
- Port Target นั้นเปิดให้บริการอยู่ที่ Port ไหน
- Path ส่ิงที่ต่อจาก IP หรือ Domain name เช่น index.html
-
หลังจากนั้นกด Next
-
ในขั้นตอนนี้เราจะเลือกสร้าง Notification เพื่อแจ้งเตือนเมื่อ Target ของเรา Unhealthy หรือเลือก No เพื่อข้ามขั้นตอนนีั้ไปก็ได้