สวัสดีฮับ! ฉันแจ้งให้คุณทราบถึงคำแปลของโพสต์:
Envoy เป็นพร็อกซีเซิร์ฟเวอร์แบบกระจายประสิทธิภาพสูง (เขียนด้วยภาษา C++) ออกแบบมาสำหรับบริการและแอปพลิเคชันแต่ละรายการ อีกทั้งยังเป็นบัสการสื่อสารและ “ระนาบข้อมูลสากล” ที่ออกแบบมาสำหรับสถาปัตยกรรม “service mesh” ไมโครเซอร์วิสขนาดใหญ่ เมื่อสร้างมันขึ้นมา จะต้องคำนึงถึงวิธีแก้ไขปัญหาที่เกิดขึ้นระหว่างการพัฒนาเซิร์ฟเวอร์ เช่น NGINX, HAProxy, โหลดบาลานเซอร์ของฮาร์ดแวร์ และโหลดบาลานเซอร์บนคลาวด์ Envoy ทำงานร่วมกับแต่ละแอปพลิเคชันและสรุปเครือข่ายเพื่อมอบฟังก์ชันการทำงานทั่วไปโดยไม่คำนึงถึงแพลตฟอร์ม เมื่อการรับส่งข้อมูลบริการทั้งหมดในโครงสร้างพื้นฐานไหลผ่านตาข่าย Envoy จะกลายเป็นเรื่องง่ายที่จะแสดงภาพพื้นที่ปัญหาพร้อมความสามารถในการสังเกตที่สม่ำเสมอ ปรับแต่งประสิทธิภาพโดยรวม และเพิ่มฟังก์ชันการทำงานหลักในตำแหน่งเฉพาะ
ความสามารถในการ
- สถาปัตยกรรมที่อยู่นอกกระบวนการ: envoy เป็นเซิร์ฟเวอร์ประสิทธิภาพสูงและครบวงจรซึ่งใช้ RAM จำนวนเล็กน้อย ทำงานร่วมกับภาษาหรือกรอบงานของแอปพลิเคชันใดๆ
- รองรับ http/2 และ grpc: ทูตมีการสนับสนุน http/2 และ grpc ระดับเฟิร์สคลาสสำหรับการเชื่อมต่อขาเข้าและขาออก นี่คือพร็อกซีแบบโปร่งใสตั้งแต่ http/1.1 ถึง http/2
- การปรับสมดุลโหลดขั้นสูง: ทูตรองรับคุณสมบัติการปรับสมดุลโหลดขั้นสูง รวมถึงการลองใหม่อัตโนมัติ, การแยกลูกโซ่, การจำกัดอัตราทั่วโลก, การแชโดว์คำขอ, การปรับสมดุลโหลดโซนท้องถิ่น ฯลฯ
- API การจัดการการกำหนดค่า: ทูตมอบ API ที่มีประสิทธิภาพสำหรับการจัดการการกำหนดค่าของคุณแบบไดนามิก
- ความสามารถในการสังเกต: ความสามารถในการสังเกตเชิงลึกของการรับส่งข้อมูล L7, การสนับสนุนดั้งเดิมสำหรับการติดตามแบบกระจายและการสังเกตของ mongodb, dynamodb และแอปพลิเคชันอื่น ๆ อีกมากมาย
ขั้นตอนที่ 1 — ตัวอย่างการกำหนดค่า NGINX
สคริปต์นี้ใช้ไฟล์ที่สร้างขึ้นเป็นพิเศษ nginx.confตามตัวอย่างเต็มจาก
การกำหนดค่าแหล่งที่มา nginx
user www www;
pid /var/run/nginx.pid;
worker_processes 2;
events {
worker_connections 2000;
}
http {
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';
upstream targetCluster {
172.18.0.3:80;
172.18.0.4:80;
}
server {
listen 8080;
server_name one.example.com www.one.example.com;
access_log /var/log/nginx.access_log main;
error_log /var/log/nginx.error_log info;
location / {
proxy_pass http://targetCluster/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
โดยทั่วไปการกำหนดค่า NGINX จะมีองค์ประกอบหลักสามประการ:
- การกำหนดค่าเซิร์ฟเวอร์ NGINX โครงสร้างบันทึก และฟังก์ชันการทำงานของ Gzip สิ่งนี้ถูกกำหนดไว้ทั่วโลกในทุกกรณี
- การกำหนดค่า NGINX เพื่อยอมรับคำขอไปยังโฮสต์ one.example.com บนพอร์ต 8080
- การตั้งค่าตำแหน่งเป้าหมาย วิธีจัดการกับการรับส่งข้อมูลในส่วนต่างๆ ของ URL
การกำหนดค่าบางอย่างอาจไม่ใช้กับ Envoy Proxy และคุณไม่จำเป็นต้องกำหนดการตั้งค่าบางอย่าง ผู้รับมอบฉันทะมี สี่ประเภทที่สำคัญซึ่งสนับสนุนโครงสร้างพื้นฐานหลักที่นำเสนอโดย NGINX หลักคือ:
- ผู้ฟัง: พวกเขากำหนดวิธีที่ Envoy Proxy ยอมรับคำขอที่เข้ามา ปัจจุบัน Envoy Proxy รองรับเฉพาะ Listener ที่ใช้ TCP เท่านั้น เมื่อสร้างการเชื่อมต่อแล้ว การเชื่อมต่อจะถูกส่งไปยังชุดตัวกรองสำหรับการประมวลผล
- ตัวกรอง: เป็นส่วนหนึ่งของสถาปัตยกรรมไปป์ไลน์ที่สามารถประมวลผลข้อมูลขาเข้าและขาออก ฟังก์ชันนี้ประกอบด้วยตัวกรอง เช่น Gzip ซึ่งจะบีบอัดข้อมูลก่อนส่งไปยังไคลเอ็นต์
- เราเตอร์: พวกเขาส่งต่อการรับส่งข้อมูลไปยังปลายทางที่ต้องการซึ่งกำหนดเป็นคลัสเตอร์
- คลัสเตอร์: กำหนดจุดสิ้นสุดสำหรับพารามิเตอร์การรับส่งข้อมูลและการกำหนดค่า
เราจะใช้องค์ประกอบทั้งสี่นี้เพื่อสร้างการกำหนดค่า Envoy Proxy เพื่อให้ตรงกับการกำหนดค่า NGINX เฉพาะ เป้าหมายของทูตคือการทำงานกับ API และการกำหนดค่าแบบไดนามิก ในกรณีนี้ การกำหนดค่าพื้นฐานจะใช้การตั้งค่าแบบตายตัวแบบคงที่จาก NGINX
ขั้นตอนที่ 2 - การกำหนดค่า NGINX
ส่วนแรก nginx.conf กำหนดภายใน NGINX บางส่วนที่จำเป็นต้องกำหนดค่า
การเชื่อมต่อของผู้ปฏิบัติงาน
การกำหนดค่าด้านล่างนี้จะกำหนดจำนวนกระบวนการของผู้ปฏิบัติงานและการเชื่อมต่อ สิ่งนี้บ่งชี้ว่า NGINX จะปรับขนาดเพื่อตอบสนองความต้องการอย่างไร
worker_processes 2;
events {
worker_connections 2000;
}
Envoy Proxy จัดการเวิร์กโฟลว์และการเชื่อมต่อในรูปแบบต่างๆ
ทูตสร้างเธรดผู้ปฏิบัติงานสำหรับแต่ละเธรดฮาร์ดแวร์ในระบบ เธรดของผู้ปฏิบัติงานแต่ละเธรดดำเนินการวนรอบเหตุการณ์ที่ไม่บล็อกซึ่งรับผิดชอบ
- การฟังผู้ฟังแต่ละคน
- การยอมรับการเชื่อมต่อใหม่
- การสร้างชุดตัวกรองสำหรับการเชื่อมต่อ
- ประมวลผลการดำเนินการ I/O ทั้งหมดตลอดอายุของการเชื่อมต่อ
การประมวลผลการเชื่อมต่อเพิ่มเติมทั้งหมดได้รับการจัดการทั้งหมดในเธรดของผู้ปฏิบัติงาน รวมถึงพฤติกรรมการส่งต่อใดๆ
สำหรับแต่ละเธรดของผู้ปฏิบัติงานใน Envoy จะมีพูลการเชื่อมต่อ ดังนั้นพูลการเชื่อมต่อ HTTP/2 จะสร้างการเชื่อมต่อได้ครั้งละหนึ่งการเชื่อมต่อต่อโฮสต์ภายนอกเท่านั้น หากมีเธรดผู้ปฏิบัติงานสี่เธรด ก็จะมีการเชื่อมต่อ HTTP/2 สี่การเชื่อมต่อต่อโฮสต์ภายนอกในสถานะที่เสถียร ด้วยการเก็บทุกอย่างไว้ในเธรดของผู้ปฏิบัติงานเพียงเธรดเดียว โค้ดเกือบทั้งหมดจึงสามารถเขียนได้โดยไม่ต้องปิดกั้น เหมือนกับว่าเป็นเธรดเดี่ยว หากมีการจัดสรรเธรดของผู้ปฏิบัติงานมากกว่าที่จำเป็น สิ่งนี้อาจทำให้หน่วยความจำสิ้นเปลือง สร้างการเชื่อมต่อที่ไม่ได้ใช้งานจำนวนมาก และลดจำนวนครั้งที่การเชื่อมต่อจะถูกส่งกลับไปยังพูล
ดูข้อมูลเพิ่มเติมได้ที่
การกำหนดค่า HTTP
บล็อกการกำหนดค่า NGINX ต่อไปนี้กำหนดการตั้งค่า HTTP เช่น:
- รองรับประเภท mime ใดบ้าง
- การหมดเวลาเริ่มต้น
- การกำหนดค่า Gzip
คุณสามารถปรับแต่งลักษณะเหล่านี้ได้โดยใช้ตัวกรองใน Envoy Proxy ซึ่งเราจะหารือในภายหลัง
ขั้นตอนที่ 3 - การกำหนดค่าเซิร์ฟเวอร์
ในบล็อกการกำหนดค่า HTTP การกำหนดค่า NGINX ระบุให้ฟังบนพอร์ต 8080 และตอบสนองต่อคำขอขาเข้าสำหรับโดเมน one.example.com и www.one.example.com.
server {
listen 8080;
server_name one.example.com www.one.example.com;
ภายในทูตจะถูกควบคุมโดยผู้ฟัง
ท่านทูตผู้ฟัง
สิ่งที่สำคัญที่สุดในการเริ่มต้นใช้งาน Envoy Proxy คือการกำหนดผู้ฟังของคุณ คุณต้องสร้างไฟล์การกำหนดค่าที่อธิบายวิธีที่คุณต้องการเรียกใช้อินสแตนซ์ Envoy
ข้อมูลโค้ดด้านล่างจะสร้าง Listener ใหม่และเชื่อมโยงเข้ากับพอร์ต 8080 การกำหนดค่าจะบอก Envoy Proxy ว่าควรเชื่อมโยงพอร์ตใดสำหรับคำขอที่เข้ามา
Envoy Proxy ใช้สัญลักษณ์ YAML สำหรับการกำหนดค่า สำหรับข้อมูลเบื้องต้นเกี่ยวกับสัญลักษณ์นี้ ดูที่นี่
Copy to Editorstatic_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 8080 }
ไม่จำเป็นต้องกำหนด ชื่อเซิร์ฟเวอร์เนื่องจากตัวกรอง Envoy Proxy จะจัดการเรื่องนี้
ขั้นตอนที่ 4 - การกำหนดค่าตำแหน่ง
เมื่อมีคำขอเข้ามาใน NGINX บล็อกตำแหน่งจะกำหนดวิธีดำเนินการและตำแหน่งที่จะกำหนดเส้นทางการรับส่งข้อมูล ในส่วนต่อไปนี้ การรับส่งข้อมูลทั้งหมดไปยังไซต์จะถูกถ่ายโอนไปยังคลัสเตอร์อัปสตรีม (หมายเหตุของผู้แปล: โดยปกติแล้วอัปสตรีมคือแอปพลิเคชันเซิร์ฟเวอร์) คลัสเตอร์ชื่อ เป้าหมายคลัสเตอร์. คลัสเตอร์อัปสตรีมกำหนดโหนดที่ควรประมวลผลคำขอ เราจะหารือเรื่องนี้ในขั้นตอนต่อไป
location / {
proxy_pass http://targetCluster/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
ที่ Envoy ตัวกรองทำเช่นนี้
ตัวกรองทูต
สำหรับการกำหนดค่าแบบคงที่ ตัวกรองจะกำหนดวิธีประมวลผลคำขอที่เข้ามา ในกรณีนี้ เราตั้งค่าตัวกรองที่ตรงกัน เซิร์ฟเวอร์_ชื่อ ในขั้นตอนก่อนหน้า เมื่อคำขอขาเข้ามาถึงซึ่งตรงกับโดเมนและเส้นทางที่กำหนด ปริมาณการใช้งานจะถูกส่งไปยังคลัสเตอร์ ซึ่งเทียบเท่ากับการกำหนดค่า NGINX จากล่างขึ้นบน
Copy to Editor filter_chains:
- filters:
- name: envoy.http_connection_manager
config:
codec_type: auto
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: backend
domains:
- "one.example.com"
- "www.one.example.com"
routes:
- match:
prefix: "/"
route:
cluster: targetCluster
http_filters:
- name: envoy.router
ชื่อ ทูตhttp_connection_manager เป็นตัวกรองในตัวใน Envoy Proxy ตัวกรองอื่น ๆ ได้แก่ Redis, Mongo, TCP. คุณสามารถดูรายการทั้งหมดได้ที่
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับนโยบายการปรับสมดุลภาระงานอื่นๆ โปรดไปที่
ขั้นตอนที่ 5 - การกำหนดค่าพร็อกซีและอัปสตรีม
ใน NGINX การกำหนดค่าอัปสตรีมจะกำหนดชุดของเซิร์ฟเวอร์เป้าหมายที่จะประมวลผลการรับส่งข้อมูล ในกรณีนี้ มีการกำหนดสองคลัสเตอร์
upstream targetCluster {
172.18.0.3:80;
172.18.0.4:80;
}
ใน Envoy สิ่งนี้ได้รับการจัดการโดยคลัสเตอร์
กลุ่มทูต
เทียบเท่าอัพสตรีมถูกกำหนดให้เป็นคลัสเตอร์ ในกรณีนี้ มีการระบุโฮสต์ที่จะให้บริการการรับส่งข้อมูลแล้ว วิธีการเข้าถึงโฮสต์ เช่น การหมดเวลา ถูกกำหนดเป็นการกำหนดค่าคลัสเตอร์ ซึ่งช่วยให้สามารถควบคุมแง่มุมต่างๆ เช่น เวลาแฝงและการปรับสมดุลโหลดได้ละเอียดยิ่งขึ้น
Copy to Editor clusters:
- name: targetCluster
connect_timeout: 0.25s
type: STRICT_DNS
dns_lookup_family: V4_ONLY
lb_policy: ROUND_ROBIN
hosts: [
{ socket_address: { address: 172.18.0.3, port_value: 80 }},
{ socket_address: { address: 172.18.0.4, port_value: 80 }}
]
เมื่อใช้บริการค้นพบ STRICT_DNS ทูตจะแก้ไขเป้าหมาย DNS ที่ระบุอย่างต่อเนื่องและไม่พร้อมกัน ที่อยู่ IP ที่ส่งคืนแต่ละรายการจากผลลัพธ์ DNS จะถือเป็นโฮสต์ที่ชัดเจนในคลัสเตอร์อัปสตรีม ซึ่งหมายความว่าหากคำขอส่งคืนที่อยู่ IP สองรายการ Envoy จะถือว่ามีโฮสต์สองรายการในคลัสเตอร์ และทั้งสองรายการจะต้องมีความสมดุลของโหลด หากโฮสต์ถูกลบออกจากผลลัพธ์ Envoy จะถือว่าไม่มีอยู่อีกต่อไป และจะดึงการรับส่งข้อมูลจากกลุ่มการเชื่อมต่อที่มีอยู่
ดูข้อมูลเพิ่มเติมได้ที่
ขั้นตอนที่ 6 — การเข้าถึงบันทึกและข้อผิดพลาด
การกำหนดค่าสุดท้ายคือการลงทะเบียน แทนที่จะส่งบันทึกข้อผิดพลาดไปยังดิสก์ Envoy Proxy ใช้วิธีการแบบคลาวด์ บันทึกแอปพลิเคชันทั้งหมดจะถูกส่งไปที่ แย่ и สตเดอร์.
เมื่อผู้ใช้ส่งคำขอ บันทึกการเข้าถึงจะเป็นทางเลือกและปิดใช้งานตามค่าเริ่มต้น หากต้องการเปิดใช้งานบันทึกการเข้าถึงสำหรับคำขอ HTTP ให้เปิดใช้งานการกำหนดค่า การเข้าถึง_log สำหรับตัวจัดการการเชื่อมต่อ HTTP เส้นทางสามารถเป็นได้ทั้งอุปกรณ์เช่น แย่หรือไฟล์บนดิสก์ ขึ้นอยู่กับความต้องการของคุณ
การกำหนดค่าต่อไปนี้จะเปลี่ยนเส้นทางบันทึกการเข้าถึงทั้งหมดไปที่ แย่ (หมายเหตุของผู้แปล - จำเป็นต้องใช้ stdout เพื่อใช้ envoy ภายใน docker หากใช้โดยไม่มี docker ให้แทนที่ /dev/stdout ด้วยพาธไปยังไฟล์บันทึกปกติ) คัดลอกข้อมูลโค้ดไปยังส่วนการกำหนดค่าสำหรับตัวจัดการการเชื่อมต่อ:
Copy to Clipboardaccess_log:
- name: envoy.file_access_log
config:
path: "/dev/stdout"
ผลลัพธ์ควรมีลักษณะดังนี้:
- name: envoy.http_connection_manager
config:
codec_type: auto
stat_prefix: ingress_http
access_log:
- name: envoy.file_access_log
config:
path: "/dev/stdout"
route_config:
ตามค่าเริ่มต้น Envoy มีสตริงรูปแบบที่มีรายละเอียดของคำขอ HTTP:
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%" "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%"n
ผลลัพธ์ของสตริงรูปแบบนี้คือ:
[2018-11-23T04:51:00.281Z] "GET / HTTP/1.1" 200 - 0 58 4 1 "-" "curl/7.47.0" "f21ebd42-6770-4aa5-88d4-e56118165a7d" "one.example.com" "172.18.0.4:80"
เนื้อหาเอาต์พุตสามารถปรับแต่งได้โดยการตั้งค่าฟิลด์รูปแบบ ตัวอย่างเช่น:
access_log:
- name: envoy.file_access_log
config:
path: "/dev/stdout"
format: "[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%"n"
บรรทัดบันทึกยังสามารถส่งออกในรูปแบบ JSON ได้โดยการตั้งค่าฟิลด์ json_format. ตัวอย่างเช่น
access_log:
- name: envoy.file_access_log
config:
path: "/dev/stdout"
json_format: {"protocol": "%PROTOCOL%", "duration": "%DURATION%", "request_method": "%REQ(:METHOD)%"}
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการลงทะเบียนทูต โปรดไปที่
การบันทึกไม่ใช่วิธีเดียวที่จะได้รับข้อมูลเชิงลึกในการทำงานกับ Envoy Proxy มีความสามารถในการติดตามและตัวชี้วัดขั้นสูงในตัว คุณสามารถหาข้อมูลเพิ่มเติมได้ที่
ขั้นตอนที่ 7 - เปิดตัว
ตอนนี้คุณได้ย้ายการกำหนดค่าของคุณจาก NGINX ไปยัง Envoy Proxy แล้ว ขั้นตอนสุดท้ายคือการเปิดใช้อินสแตนซ์ Envoy Proxy เพื่อทดสอบ
เรียกใช้ในฐานะผู้ใช้
ที่ด้านบนของบรรทัดการกำหนดค่า NGINX ผู้ใช้ www www; ระบุให้เรียกใช้ NGINX ในฐานะผู้ใช้ที่มีสิทธิ์ต่ำเพื่อปรับปรุงความปลอดภัย
Envoy Proxy ใช้แนวทางระบบคลาวด์ในการจัดการว่าใครเป็นเจ้าของกระบวนการ เมื่อเราเรียกใช้ Envoy Proxy ผ่านคอนเทนเนอร์ เราสามารถระบุผู้ใช้ที่มีสิทธิ์ระดับต่ำได้
เปิดตัว Envoy Proxy
คำสั่งด้านล่างจะเรียกใช้ Envoy Proxy ผ่านคอนเทนเนอร์ Docker บนโฮสต์ คำสั่งนี้ทำให้ Envoy สามารถรับฟังคำขอขาเข้าบนพอร์ต 80 อย่างไรก็ตาม ตามที่ระบุไว้ในการกำหนดค่า Listener Envoy Proxy จะรับฟังการรับส่งข้อมูลขาเข้าบนพอร์ต 8080 ซึ่งจะช่วยให้กระบวนการทำงานในฐานะผู้ใช้ที่มีสิทธิ์ระดับต่ำ
docker run --name proxy1 -p 80:8080 --user 1000:1000 -v /root/envoy.yaml:/etc/envoy/envoy.yaml envoyproxy/envoy
การทดสอบ
เมื่อพร็อกซีทำงานอยู่ คุณก็สามารถทำและประมวลผลการทดสอบได้แล้ว คำสั่ง cURL ต่อไปนี้ส่งคำขอด้วยส่วนหัวของโฮสต์ที่กำหนดไว้ในการกำหนดค่าพร็อกซี
curl -H "Host: one.example.com" localhost -i
คำขอ HTTP จะส่งผลให้เกิดข้อผิดพลาด 503. เนื่องจากการเชื่อมต่ออัปสตรีมไม่ทำงานและไม่พร้อมใช้งาน ดังนั้น Envoy Proxy จึงไม่มีปลายทางที่พร้อมใช้งานสำหรับการร้องขอ คำสั่งต่อไปนี้จะเริ่มชุดบริการ HTTP ที่ตรงกับการกำหนดค่าที่กำหนดไว้สำหรับ Envoy
docker run -d katacoda/docker-http-server; docker run -d katacoda/docker-http-server;
ด้วยบริการที่มีให้ Envoy สามารถมอบพร็อกซีการรับส่งข้อมูลไปยังปลายทางได้สำเร็จ
curl -H "Host: one.example.com" localhost -i
คุณควรเห็นการตอบสนองที่ระบุว่าคอนเทนเนอร์ Docker ใดที่ประมวลผลคำขอ ในบันทึก Envoy Proxy คุณควรเห็นเอาต์พุตสตริงการเข้าถึงด้วย
ส่วนหัวการตอบกลับ HTTP เพิ่มเติม
คุณจะเห็นส่วนหัว HTTP เพิ่มเติมในส่วนหัวการตอบกลับของคำขอจริง ส่วนหัวแสดงเวลาที่โฮสต์อัปสตรีมใช้ในการประมวลผลคำขอ แสดงเป็นมิลลิวินาที สิ่งนี้มีประโยชน์หากไคลเอนต์ต้องการกำหนดเวลาการบริการโดยเปรียบเทียบกับเวลาแฝงของเครือข่าย
x-envoy-upstream-service-time: 0
server: envoy
การกำหนดค่าสุดท้าย
static_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 8080 }
filter_chains:
- filters:
- name: envoy.http_connection_manager
config:
codec_type: auto
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: backend
domains:
- "one.example.com"
- "www.one.example.com"
routes:
- match:
prefix: "/"
route:
cluster: targetCluster
http_filters:
- name: envoy.router
clusters:
- name: targetCluster
connect_timeout: 0.25s
type: STRICT_DNS
dns_lookup_family: V4_ONLY
lb_policy: ROUND_ROBIN
hosts: [
{ socket_address: { address: 172.18.0.3, port_value: 80 }},
{ socket_address: { address: 172.18.0.4, port_value: 80 }}
]
admin:
access_log_path: /tmp/admin_access.log
address:
socket_address: { address: 0.0.0.0, port_value: 9090 }
ข้อมูลเพิ่มเติมจากนักแปล
คำแนะนำในการติดตั้ง Envoy Proxy สามารถพบได้บนเว็บไซต์
ตามค่าเริ่มต้น rpm ไม่มีการกำหนดค่าบริการ systemd
เพิ่มการกำหนดค่าบริการ systemd /etc/systemd/system/envoy.service:
[Unit]
Description=Envoy Proxy
Documentation=https://www.envoyproxy.io/
After=network-online.target
Requires=envoy-auth-server.service
Wants=nginx.service
[Service]
User=root
Restart=on-failure
ExecStart=/usr/bin/envoy --config-path /etc/envoy/config.yaml
[Install]
WantedBy=multi-user.target
คุณต้องสร้างไดเร็กทอรี /etc/envoy/ และใส่ config.yaml config ไว้ที่นั่น
มีการแชททางโทรเลขโดยใช้พร็อกซีทูต:
Envoy Proxy ไม่รองรับการให้บริการเนื้อหาแบบคงที่ ดังนั้นใครสามารถลงคะแนนให้กับฟีเจอร์นี้ได้:
เฉพาะผู้ใช้ที่ลงทะเบียนเท่านั้นที่สามารถเข้าร่วมในการสำรวจได้
โพสต์นี้สนับสนุนให้คุณติดตั้งและทดสอบพร็อกซีทูตหรือไม่
-
ใช่
-
ไม่
ผู้ใช้ 75 คนโหวต ผู้ใช้ 18 รายงดออกเสียง
ที่มา: will.com