Coding Gun

มาทำความรู้จักกับ 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 อย่างหลักๆคือ

  1. Domain Registration
  2. DNS Management
  3. Traffic Management
  4. Availability Monitoring

Domain Registration

การจัดการ Domain บน AWS มี 2 วิธีด้วยกันคือ

  1. จด Domain จากที่อื่นแล้วนำ Domain นั้นมาสร้าง Map กับ IP address บน AWS
  2. จด Domain บน AWS เลย

ซึ่งในตัวอย่างนี้จะเป็นการจด Domain ผ่านทาง AWS ได้เลย โดยกดปุ่ม Register Domain

ซึ่งการจด Domain บน AWS เราจะได้ความสะดวกเรื่องการจ่ายเงิน เราจะได้ไม่ต้องตามไปจ่ายหลายที่ แต่ข้อเสียคือ จะใช้เวลานานกว่าปกตินิดหน่อยและการย้าย Domain ไปที่อื่นจะยุ่งยากกว่า

การจด Domain บน AWS

ขั้นตอนการจด Domain บน AWS มีดังนี้

  1. ใส่ชื่อ Domain ที่ต้องจดลงไปแล้วกดปุ่ม Check

    เลือก Domain ที่ต้องการ
    เลือก Domain ที่ต้องการจด

  2. เลือกจด Domain จาก Domain ที่ยังว่างอยู่ โดยการกดปุ่ม Select ด้านหลัง Domain ที่ต้องการ

    ลือกจด Domain จาก Domain ที่ยังว่างอยู่
    ลือกจด Domain จาก Domain ที่ยังว่างอยู่

  3. กดปุ่ม Proceed to Checkout เพื่อชำระเงิน

    ชำระเงินค่า Domain
    ชำระเงินค่า Domain

  4. ตรวจสอบความถูกต้องก่อนชำระเงิน ซึ่งถ้าเราไม่ต้องการให้ต่ออายุอัตโนมัติ ให้เอา checkbox หน้า Auto-renew ออก ถ้าเลือกเป็น

    • On จะต่ออายุทุกปี
    • Off จะไม่ต่ออายุอัตโนมัติ

    ตรวจสอบความถูกต้องก่อนชำระเงิน
    ตรวจสอบความถูกต้องก่อนชำระเงิน

  5. กรอก Contact ของผู้ดูแล Domain

    กรอก Contact ของผู้ดูแล Domain
    กรอก Contact ของผู้ดูแล Domain

  6. หลังจากนั้นรอจนกว่า Domain จะจดทะเบียนสำหร็จซึ่งอาจใช้เวลานานสุดถึง 3 วัน

    Domain registration success
    การจด Domain สำเร็จแล้วเรียบร้อย

ถ้าในกล่อง Domain Registration ขึ้นเป็น 1(ขึ้นอยู่กับจำนวน Domain ที่เราจด) และ Status ขึ้นเป็น Domain Registration Successful แสดงว่า Domain ของเราพร้อมนำไปใช้งานในขั้นตอนต่อไปแล้ว

DNS Management

หลังจกาที่เรามี Domain แล้วไม่ว่าจะจดมาจากที่อื่น หรือจดผ่าน AWS ก็ตาม เราต้องนำ Domain มา Map กับ Public IP address ซึ่งเราจะสร้าง Alias Record ขึ้นมา โดยมีขั้นตอน ดังนี้

  1. เข้าไปที่เมนู HostZones

    เข้าไปที่เมนู HostZones
    ขั้นตอนที่ 1 เข้าไปที่เมนู HostZones

  2. เลือก Domain ที่เราได้ Add เข้ามาใน AWS

    เลือก Domain
    ขั้นตอนที่ 2 เลือก Domain

  3. กดปุ่ม Create Record เพื่อเพิ่ม DNS Record

    ขั้นตอนที่ 3 กดปุ่ม Create Record
    ขั้นตอนที่ 3 กดปุ่ม Create Record

  4. กำหนดรายละเอียดของ 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 ซึ่งมีอยู่หลายวิธีด้วยกัน

    ขั้นตอนที่ 4 กำหนดรายละเอียดของ DNS Record
    ขั้นตอนที่ 4 กำหนดรายละเอียดของ DNS Record

  5. สุดท้ายกดปุ่ม 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
Simple Routing Policy

Simple Routing Policy จะมี DNS Record แค่เพียง Record เดียว

Multivalue Routing Policy

เป็นการกระจาย Workload แบบ Random เหมือนกับ Simple Routing Policy แต่จะแตกต่างกันตรงที่

  1. เราจะต้องแยก DNS Record(A Record) ของทั้ง 2 IP address
  2. เราต้องสร้าง Helth check ให้กับ Server แต่ละตัวด้วย
    Multivalue Routing Policy
    Multivalue Routing Policy

Multivalue จะเหมือนกับ Simple Routing Policy แต่จะกระจาย Workload เข้าไปยัง Server ที่พร้อมทำงาน(Available)เท่านั้น

Weighted Routing Policy

เป็นการกระจาย Workload แบบกำหนดสัดส่วน ถ้าเราต้องการแบ่ง Traffic แบบเป็นสัดส่วน ให้ใช้ Weighted Routing Policy

Weighted Routing Policy
Weighted Routing Policy

ในตัวอย่างนี้ Route53 จะส่ง Request เข้าไปยัง London น้อยกว่า Tokyo เพราะเรากำหนดสักดส่วนไว้เป็น 30%(London) และ 70%(Tokyo)

Failover Routing Policy

เป็นการสร้างแผนสำรองในกรณีที่ Server ตัวหลักเสียหาย Traffic จะถูกส่งไปยัง Server สำรองโดยอัตโนมัติ

Failover Routing Policy
Failover Routing Policy

ในตัวอย่างนี้ถ้า eu-west-2 เกิด down Traffic จะถูกส่งไปยัง ap-southeast-2 ทันที

เป็นการสร้าง High availability แบบ Active-Passive

Geolocation Routing Policy

เป็นการกระจาย Workload โดยการใช้ Location เหมาะสำหรับระบบที่มีผู้ใช้งานอยู่ทั่วโลก User จะถูกส่งไปยัง Server ที่ใกล้กับเค้ามากที่สุด

Geolocation Routing Policy
Geolocation Routing Policy

Geoproximity Routing Policy

เป็นการกระจาย Workload แบบเดียวกับ Geolocation แต่เราสามารถเพิ่มหรือลดขนาดของพื้นที่การให้บริการได้ด้วยการกำหนดค่า Bias

Geoproximity Routing Policy
Geoproximity Routing Policy

Latency Routing Policy

เป็นการกระจาย Workload โดยดูจากระยะเวลาในการ Load ที่สั้นที่สุด(Load ได้เร็วสุดตรงไหนก็ไปเข้าที่ Server นั้น)

Latency Routing Policy
Latency Routing Policy

ในตัวอย่างนี้ 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 จะมีดังนี้

  1. Health Check จะใส่หรือไม่ใส่ก็ได้ ยกเว้น Failover Route Policy
  2. Health Check จะต้องกำหนดให้แต่ละ Record
  3. ถ้าผลลัพธ์ของ Health Check เป็น fail Record นั้นจะถูกนำออกจาก Route53 ทันที จนกว่าระบบจะกลับมาพร้อมใช้งานอีกครั้ง
  4. เราสามารถกำหนด Notification ใน SNS เพื่อแจ้งเตือนผู้ดูแลระบบได้

ขั้นตอนของการสร้าง Health Check

เราจะสร้าง Health Check เพื่อ Monitor service ปลายทาง(Target)ซึ่งจะมีขั้นตอนดังต่อไปนี้

  1. เลือกเมนู Health Check ที่ด้านซ้ายมือ

  2. เลือก Create Health Check

  3. กรอกรายละเอียดของ 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

    Create Health Check Step 1
    สร้าง Health Check ใน Route53

  4. หลังจากนั้นกด Next

  5. ในขั้นตอนนี้เราจะเลือกสร้าง Notification เพื่อแจ้งเตือนเมื่อ Target ของเรา Unhealthy หรือเลือก No เพื่อข้ามขั้นตอนนีั้ไปก็ได้

    Create Health Check Step 2
    เลือกสร้าง Notification เมื่อระบบ Unhealthy

Phanupong Permpimol
Follow me