Cách cài đặt và cấu hình Envoy Proxy trên Debian 11

theanh

Administrator
Nhân viên
Envoy proxy là một proxy dịch vụ miễn phí và mã nguồn mở được thiết kế cho các ứng dụng đám mây gốc. Nó tương đương với Nginx và haproxy có thể được sử dụng như một proxy ngược, nhưng Envoy proxy được thiết kế cho các dịch vụ và cơ sở hạ tầng hiện đại.

Envoy là một proxy dịch vụ hiệu suất cao hoạt động với bất kỳ ngôn ngữ ứng dụng nào. Nó sử dụng các tệp cấu hình YAML để cấu hình tĩnh và cũng sử dụng một bộ API dựa trên gRPC.

Envoy proxy tốt nghiệp từ Cloud Native Computing Foundation (CNCF). Nó được sử dụng trong hầu hết các cơ sở hạ tầng hiện đại và công nghệ container.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và cấu hình proxy Envoy trên máy chủ Debian 11.

Điều kiện tiên quyết​

Để cài đặt Envoy, chúng tôi sẽ sử dụng những điều sau:
  • Máy chủ Linux Debian 11 Bullseye
  • Người dùng không phải root có quyền sudo

Thêm kho lưu trữ Envoy​

Envoy có thể được cài đặt theo nhiều cách, bao gồm cả với các gói nhị phân do kho lưu trữ Envoy hoặc sử dụng Docker. Trong ví dụ này, chúng tôi sẽ cài đặt Envoy bằng gói nhị phân từ kho lưu trữ Envoy.

Trước khi thêm và cài đặt Envoy, bạn phải cài đặt gói sau. gnupg2 sẽ được sử dụng để thêm khóa GPG vào máy chủ Debian của bạn và apt-transport-https cho phép bạn cài đặt các gói từ kết nối https an toàn.
Mã:
sudo apt install gnupg2 apt-transport-https -y
Tiếp theo, thêm và xác minh khóa GPG Envoy bằng lệnh sau.
Mã:
curl -sL 'https://deb.dl.getenvoy.io/public/gpg.8115BA8E629CC074.key' | sudo gpg --dearmor -o /usr/share/keyrings/getenvoy-keyring.gpg
echo a077cb587a1b622e03aa4bf2f3689de14658a9497a9af2c427bba5f4cc3c4723 /usr/share/keyrings/getenvoy-keyring.gpg | sha256sum --check
Nếu khóa hợp lệ, bạn sẽ thấy thông báo đầu ra như OK.



Bây giờ hãy thêm kho lưu trữ Envoy vào hệ thống của bạn bằng lệnh bên dưới.
Mã:
echo "deb [arch=amd64 \
signed-by=/usr/share/keyrings/getenvoy-keyring.gpg] \
https://deb.dl.getenvoy.io/public/deb/debian \
$(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/getenvoy.list
Cuối cùng, hãy cập nhật và làm mới kho lưu trữ Debian của bạn.
Mã:
sudo apt update
Trong ảnh chụp màn hình bên dưới, bạn sẽ thấy kho lưu trữ Envoy được thêm vào hệ thống Debian.


Cài đặt Envoy Proxy​

Bây giờ bạn đã thêm khóa GPG và kho lưu trữ Envoy, bây giờ bạn sẽ cài đặt gói Envoy vào hệ thống của mình.

Chạy lệnh apt bên dưới để cài đặt gói Envoy vào hệ thống Debian 11 của bạn.
Mã:
sudo apt install getenvoy-envoy
Dưới đây, bạn có thể thấy quá trình cài đặt Envoy đang diễn ra.



Sau khi quá trình cài đặt Envoy hoàn tất, hãy xác minh phiên bản Envoy bằng lệnh sau.
Mã:
envoy --version
Dưới đây, bạn có thể thấy Envoy v1.18 được cài đặt trên Debian 11. Đây là phiên bản mới nhất của proxy Envoy do kho lưu trữ Envoy cung cấp. Nếu bạn muốn có phiên bản mới nhất, bạn có thể sử dụng tệp nhị phân dựng sẵn từ trang web Envoy.



Ngoài ra, bạn cũng có thể kiểm tra tất cả các tùy chọn có sẵn trên lệnh envoy bằng lệnh sau.
Mã:
envoy --help
Bạn sẽ thấy rất nhiều tùy chọn có thể sử dụng để thiết lập Envoy.

Cấu hình Proxy Envoy​

Sau khi cài đặt Envoy, giờ bạn sẽ học cách thiết lập Envoy.

Đầu tiên, tạo một thư mục mới /etc/envoy/ bằng lệnh sau.
Mã:
mkdir -p /etc/envoy/
Bây giờ hãy tạo một tệp mới /etc/envoy/demo.yaml bằng trình soạn thảo nano.
Mã:
sudo nano /etc/envoy/demo.yaml
Thêm cấu hình sau vào tệp. Trong ví dụ này, bạn sẽ sử dụng cấu hình static_resources cho Envoy, cấu hình này phải bao gồm listeners, clustersstatic_resources.

Các listeners xác định địa chỉ IP và cổng nào sẽ được sử dụng cho Envoy. Trong ví dụ này, Envoy sẽ chạy trên địa chỉ IP công khai 0.0.0.0 với cổng 80.

Cụm service_envoyproxy_io ở đây sẽ được sử dụng làm điểm cuối của dịch vụ, đó là tên miền www.envoyproxy.io.
Mã:
static_resources:

 listeners:
 - name: listener_0
 address:
 socket_address:
 address: 0.0.0.0
 port_value: 80
 filter_chains:
 - filters:
 - name: dispatch.filters.network.http_connection_manager
 typed_config:
 "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
 stat_prefix: ingress_http
 access_log:
 - name: dispatch.access_loggers.stdout
 typed_config:
 "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
 http_filters:
 - name: envoy.filters.http.router
 typed_config:
 "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
 route_config:
 name: local_route
 virtual_hosts:
 - name: local_service
 domains: ["*"]
 routes:
 - match:
 prefix: "/"
 route:
 host_rewrite_literal: www.envoyproxy.io
 cluster: service_envoyproxy_io

 clusters:
 - name: service_envoyproxy_io
 type: LOGICAL_DNS
 connect_timeout: 5s
 # Bình luận dòng sau để kiểm tra trên mạng v6
 dns_lookup_family: V4_ONLY
 load_assignment:
 cluster_name: service_envoyproxy_io
 endpoints:
 - lb_endpoints:
 - endpoint:
 address:
 socket_address:
 address: www.envoyproxy.io
 port_value: 443
 transport_socket:
 name: dispatch.transport_sockets.tls
 typed_config:
 "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
 sni: www.envoyproxy.io
Lưu và đóng tệp khi bạn hoàn tất.

Tiếp theo, chạy lệnh dispatch bên dưới để xác minh tệp cấu hình demo.yaml.
Mã:
envoy --mode validate -c /etc/envoy/demo.yaml
Nếu cấu hình YAML của bạn chính xác, bạn sẽ thấy đầu ra như "configuration /etc/envoy/demo.yaml OK".



Bây giờ hãy chạy Envoy với tệp cấu hình demo.yml bằng lệnh sau.
Mã:
envoy -c /etc/envoy/demo.yaml
Bạn sẽ thấy đầu ra nhật ký bên dưới. Ngoài ra, hãy đảm bảo bạn không nhận được thông báo lỗi.



Bây giờ hãy di chuyển đến máy cục bộ của bạn và chỉnh sửa tệp cấu hình /etc/hosts bằng trình soạn thảo nano.
Mã:
sudo nano /etc/hosts
Thêm tên miền www.envoyproxy.io với địa chỉ IP máy chủ của bạn như bên dưới.
Mã:
192.168.5.10 www.envoyproxy.io
Lưu và đóng tệp khi bạn hoàn tất.

Cuối cùng, hãy mở trình duyệt web của bạn và truy cập tên miền www.envoyproxy.io và bạn sẽ nhận được trang chủ của tên miền www.envoyproxy.io.


Kết luận​

Xin chúc mừng! Bây giờ bạn đã cài đặt thành công Envoy trên máy chủ Debian 11. Bạn cũng đã học cách thiết lập Envoy bằng cấu hình YAML để proxy trang web www.envoyproxy.io.
 
Back
Bên trên