โลโก้ Envoy Proxy
Web Server และ ProxyApache License 2.0 (โอเพนซอร์ส)

Envoy Proxy คืออะไร และใช้งานอย่างไรในระบบ Microservices

Envoy Proxy คือ Proxy ที่ออกแบบมาสำหรับระบบที่มีบริการย่อยจำนวนมากคุยกันเอง จุดเด่นคือการเก็บข้อมูลเชิงลึกของทุกการเรียกและกลไกจัดการความล้มเหลว ซึ่งเป็นสิ่งที่ระบบกระจายศูนย์ต้องการ

หมวดหมู่
Web Server และ Proxy
ติดตั้งบนเซิร์ฟเวอร์เองได้
ได้
สเปกเริ่มต้นที่แนะนำ
2 vCPU · RAM 2 GB
ไลเซนส์
Apache License 2.0 (โอเพนซอร์ส)
เว็บทางการ
เปิดเว็บไซต์
สร้าง Cloud Server เดี๋ยวนี้
  • ISO/IEC 27001
  • ISO 22301
  • ISO 20000-1
  • CSA-STAR

Data Center ในไทย มาตรฐาน TIA-942 Tier 3+ ข้อมูลอยู่ในประเทศไทย

Envoy Proxy คืออะไร

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

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

Envoy มักถูกใช้เป็นองค์ประกอบภายในของระบบ Service Mesh มากกว่าถูกตั้งค่าตรงด้วยมือ ทีมที่ต้องการเพียง Reverse Proxy ธรรมดาจึงยังควรใช้ Nginx หรือ Traefik ซึ่งเรียบง่ายกว่ามาก

แผนผังการวางระบบ Envoy Proxy บน Cloud Server หนึ่งเครื่องที่ Data Center ในประเทศไทย ผู้ใช้เข้าถึงผ่านไฟร์วอลล์ที่เปิดเฉพาะพอร์ต 10000, 9901 ตัว Envoy Proxy และข้อมูลอยู่บนเครื่องเดียวกัน เริ่มต้นที่ 2 vCPU แรม 2 GB และมีสำเนาสำรองเขียนออกไปเก็บอีกไซต์หนึ่ง
Envoy Proxy ทำงานบน Cloud Server เครื่องเดียวได้ครบ เปิดเฉพาะพอร์ตที่จำเป็น ข้อมูลและสำเนาสำรองอยู่ใน Data Center ในประเทศไทย

ความสามารถเด่นของ Envoy Proxy

เก็บข้อมูลเชิงลึกของทุกคำขอ

รู้เวลาตอบสนอง อัตราความผิดพลาด และเส้นทางของแต่ละการเรียก

กลไกจัดการความล้มเหลว

ลองใหม่ ตั้งเวลาหมดอายุ และตัดวงจรเมื่อปลายทางมีปัญหา

ปรับค่าได้ขณะทำงาน

รับการตั้งค่าใหม่ผ่าน API โดยไม่ต้องรีสตาร์ต เหมาะกับระบบที่เปลี่ยนแปลงตลอด

รองรับ gRPC ในตัว

ทำงานได้ดีกับบริการที่คุยกันด้วยโปรโตคอลสมัยใหม่

เป็นฐานของ Service Mesh

ใช้เป็นองค์ประกอบหลักในระบบจัดการทราฟฟิกภายในคลัสเตอร์

ใช้ Envoy Proxy ทำอะไรได้บ้าง

  • ระบบที่แยกเป็นบริการย่อยจำนวนมากและต้องมองเห็นการเรียกระหว่างกัน
  • คลัสเตอร์ Kubernetes ที่ต้องการจัดการทราฟฟิกภายในอย่างละเอียด
  • ระบบที่ต้องการกลไกลองใหม่และตัดวงจรเพื่อกันความล้มเหลวลาม
  • บริการที่คุยกันด้วย gRPC

สเปก Cloud Server ที่แนะนำ

แผนภาพเทียบสเปก Cloud Server สำหรับ Envoy Proxy 3 ระดับ เริ่มจาก 2 vCPU แรม 2 GB ดิสก์ NVMe 20 GB ไปจนถึง 8 vCPU ขึ้นไป แรม 16 GB ขึ้นไป ดิสก์ NVMe 100 GB โดยเทียบขนาดแยกตามแต่ละคอลัมน์
เริ่มจากระดับที่ตรงกับการใช้งานตอนนี้ แล้วเพิ่ม CPU และ RAM ทีหลังได้บนเครื่องเดิม
ระดับการใช้งานvCPURAMDisk
เริ่มต้นทดลองใช้หรือระบบขนาดเล็ก2 vCPU2 GBNVMe 20 GB
แนะนำประตูหน้าของระบบที่มีบริการย่อยหลายตัว4 vCPU8 GBNVMe 60 GB
ทราฟฟิกสูงระบบที่มีการเรียกภายในจำนวนมากต่อวินาที8 vCPU ขึ้นไป16 GB ขึ้นไปNVMe 100 GB

ดูราคาตามสเปกได้ที่ ราคา Cloud Compute หรือให้ทีมงานช่วยประเมินสเปกจากปริมาณผู้ใช้จริงของคุณ

วิธีติดตั้ง Envoy Proxy บน Cloud Server ของ THAI DATA CLOUD

ขั้นตอนด้านล่างใช้กับ Cloud Server ที่เพิ่งสร้างใหม่จากหน้าจัดการของ THAI DATA CLOUD ได้ทันที ถ้าไม่สะดวกทำเอง ทีมวิศวกรของเราติดตั้งและตั้งค่าให้ฟรีสำหรับลูกค้า Cloud Server

สิ่งที่ต้องเตรียม

  • Cloud Server ที่ติดตั้ง Docker แล้ว หรือคลัสเตอร์ Kubernetes
  • ความเข้าใจโครงสร้างบริการย่อยของระบบที่จะจัดการ
  • ระบบเก็บ Metric เช่น Prometheus เพื่อใช้ข้อมูลที่ Envoy ส่งออกมา

ทดสอบบน Ubuntu Server 24.04 LTS ที่ติดตั้ง Docker แล้ว

  1. 1

    สร้างไฟล์ตั้งค่า envoy.yaml

    ตัวอย่างนี้รับคำขอที่พอร์ต 10000 แล้วส่งต่อไปยังบริการเบื้องหลัง

    static_resources:
      listeners:
      - name: main
        address:
          socket_address: { address: 0.0.0.0, port_value: 10000 }
        filter_chains:
        - filters:
          - name: envoy.filters.network.http_connection_manager
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
              stat_prefix: ingress_http
              route_config:
                virtual_hosts:
                - name: backend
                  domains: ["*"]
                  routes:
                  - match: { prefix: "/" }
                    route: { cluster: app }
              http_filters:
              - name: envoy.filters.http.router
                typed_config:
                  "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
  2. 2

    รัน Envoy

    docker run -d --name envoy --restart always \
      -p 10000:10000 -p 127.0.0.1:9901:9901 \
      -v $(pwd)/envoy.yaml:/etc/envoy/envoy.yaml \
      envoyproxy/envoy:v1.31-latest
  3. 3

    ตรวจสถานะจากหน้าจัดการ

    หน้าจัดการที่พอร์ต 9901 แสดงสถิติและสถานะของทุกคลัสเตอร์ ต้องเปิดเฉพาะภายในเครื่องเท่านั้น

    curl http://127.0.0.1:9901/stats | head
  4. 4

    ตั้งเวลาหมดอายุและการลองใหม่

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

  5. 5

    ส่ง Metric เข้าระบบเฝ้าระวัง

    ตั้งให้ Prometheus ดึงข้อมูลจากปลายทางสถิติของ Envoy เพื่อทำแดชบอร์ดและกฎแจ้งเตือน

ถ้าโจทย์คือ Reverse Proxy สำหรับเว็บไม่กี่ตัว Nginx หรือ Traefik จะตั้งค่าเร็วกว่ามาก Envoy คุ้มเมื่อระบบมีบริการย่อยจำนวนมากที่เรียกหากันจริง

พอร์ตที่ต้องเปิดบน Firewall

พอร์ตโปรโตคอลใช้ทำอะไร
10000TCPพอร์ตรับทราฟฟิกตามที่กำหนดในไฟล์ตั้งค่า
9901TCPหน้าจัดการและสถิติ (เปิดเฉพาะภายในเครื่อง)

สิ่งที่ควรทำต่อหลังติดตั้งเสร็จ

  • ไม่เปิดหน้าจัดการที่พอร์ต 9901 ออกสู่ภายนอกเด็ดขาด
  • ตั้งเวลาหมดอายุของทุกเส้นทางเพื่อกันคำขอค้าง
  • เปิด TLS สำหรับการเรียกข้ามเครื่องระหว่างบริการ
  • จำกัดอัตราการเรียกสำหรับปลายทางที่เปิดสู่ภายนอก

ทำไมควรรัน Envoy Proxy บน Cloud Server ของ THAI DATA CLOUD

Data Center ในประเทศไทย มาตรฐาน ISO/IEC 27001 และ ISO 22301 พร้อมทีมวิศวกรคนไทยดูแลตลอด 24 ชั่วโมง

เหมาะกับระบบที่รันบนคลัสเตอร์ Kubernetes บน Cloud Server หลายเครื่องในวง Private Network

ทำงานคู่กับ Prometheus และ Grafana ที่รันบนเครื่องอื่นในวงเดียวกันเพื่อทำแดชบอร์ดการเรียกระหว่างบริการ

ทีมวิศวกรของ THAI DATA CLOUD ช่วยประเมินว่าระบบของคุณถึงจุดที่ควรใช้เครื่องมือระดับนี้แล้วหรือยัง

คำถามที่พบบ่อยเกี่ยวกับ Envoy Proxy

Envoy ต่างจาก Nginx อย่างไร

Nginx เก่งเรื่องเสิร์ฟเว็บและทำ Reverse Proxy ทั่วไป ส่วน Envoy ออกแบบมาเพื่อจัดการทราฟฟิกระหว่างบริการย่อยโดยเฉพาะ ทั้งการเก็บข้อมูลเชิงลึกและกลไกจัดการความล้มเหลว ถ้าระบบยังไม่ได้แยกเป็นบริการย่อยจำนวนมาก Nginx เพียงพอ

ต้องใช้ Service Mesh ด้วยไหม

ไม่จำเป็น ใช้ Envoy เดี่ยว ๆ เป็นประตูหน้าได้ Service Mesh คือชั้นที่เข้ามาจัดการ Envoy จำนวนมากให้อัตโนมัติ ซึ่งคุ้มเมื่อมีบริการย่อยจำนวนมากจริงเท่านั้น

ตั้งค่ายากไหม

ยากกว่า Proxy ทั่วไปอย่างชัดเจน เพราะไฟล์ตั้งค่ามีโครงสร้างละเอียดมาก ทีมส่วนใหญ่จึงใช้ผ่านเครื่องมือที่สร้างการตั้งค่าให้ เช่น Ingress Controller ของ Kubernetes แทนการเขียนเองทั้งหมด

ให้เราติดตั้ง Envoy Proxy ให้ฟรี บน Cloud Server ในไทย

แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด