Load Reporting Service (LRS)

The Load Reporting Service provides a mechanism by which Envoy can emit Load Reports to a management server at a regular cadence.

This will initiate a bi-directional stream with a management server. Upon connecting, the management server can send a LoadStatsResponse to a node it is interested in getting the load reports for. Envoy in this node will start sending LoadStatsRequest. This is done periodically based on the load reporting interval.

Example of an Envoy config with LRS:

 1static_resources:
 2  listeners:
 3  - address:
 4      socket_address:
 5        address: 0.0.0.0
 6        port_value: 80
 7    filter_chains:
 8    - filters:
 9      - name: envoy.filters.network.http_connection_manager
10        typed_config:
11          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
12          codec_type: AUTO
13          stat_prefix: ingress_http
14          route_config:
15            name: local_route
16            virtual_hosts:
17            - name: service
18              domains:
19              - "*"
20              routes:
21              - match:
22                  prefix: "/service"
23                route:
24                  cluster: local_service
25          http_filters:
26          - name: envoy.filters.http.router
27            typed_config:
28              "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
29  clusters:
30  - name: local_service
31    type: STRICT_DNS
32    lb_policy: ROUND_ROBIN
33    load_assignment:
34      cluster_name: local_service
35      endpoints:
36      - lb_endpoints:
37        - endpoint:
38            address:
39              socket_address:
40                address: http_service
41                port_value: 8080
42  - name: load_reporting_cluster
43    type: STRICT_DNS
44    lb_policy: ROUND_ROBIN
45    typed_extension_protocol_options:
46      envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
47        "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
48        explicit_http_config:
49          http2_protocol_options: {}
50    load_assignment:
51      cluster_name: load_reporting_cluster
52      endpoints:
53      - lb_endpoints:
54        - endpoint:
55            address:
56              socket_address:
57                address: lrs_server
58                port_value: 18000
59cluster_manager:
60  load_stats_config:
61    api_type: GRPC
62    grpc_services:
63    - envoy_grpc:
64        cluster_name: load_reporting_cluster
65admin:
66  address:
67    socket_address:
68      address: 0.0.0.0
69      port_value: 8081