envoy代理实践
1 下载envoy官方的镜像
docker pull envoyproxy/envoy:latest
2 启动docker容器
docker run -d -p 10000:10000 envoyproxy/envoy:latest
docker run -d -p 10001:10001 envoyproxy/envoy:latest
同时启动两个docker容器,一个为service1 ,另一个为service2
docker ps -a
启动镜像的时候将主机的网络与容器的网络进行了端口映射
4 登录进容器,启动相关envoy配置和service
apt-get update
apt-get install vim net-tools nginx
修改nginx和envoy的配置,service1为nginx的8080端口,启动本地的envoy,代理service1,同理启动service2,端口为nginx8081,启动一个envoy代理service2。
5 启动前端的代理docker,配置envoy,配置路由分别指向service1和service2。
基本的组织图入下:
6 测试:
curl localhost:10002
7 docker -proxy的配置
admin: access_log_path: /tmp/admin_access.log address: socket_address: protocol: TCP address: 127.0.0.1 port_value: 9901 static_resources: listeners: - name: listener_0 address: socket_address: protocol: TCP address: 0.0.0.0 port_value: 10002 filter_chains: - filters: - name: envoy.http_connection_manager config: stat_prefix: ingress_http route_config: name: local_route virtual_hosts: - name: local_service domains: ["*"] routes: - match: prefix: "/" route: cluster: service1 http_filters: - name: envoy.router clusters: - name: service1 connect_timeout: 0.25s type: LOGICAL_DNS # Comment out the following line to test on v6 networks dns_lookup_family: V4_ONLY lb_policy: ROUND_ROBIN hosts: - socket_address: address: 10.0.6.4 port_value: 10000 - name: service2 connect_timeout: 0.25s type: LOGICAL_DNS # Comment out the following line to test on v6 networks dns_lookup_family: V4_ONLY lb_policy: ROUND_ROBIN hosts: - socket_address: address: 10.0.6.3 port_value: 10001
参考:https://github.com/envoyproxy/envoy/blob/master//examples/front-proxy/front-envoy.yaml