From fef1fac4be914a9f72156ffdd7b50cd92eb296ec Mon Sep 17 00:00:00 2001 From: Ram Vennam Date: Fri, 4 Jun 2021 10:24:58 -0400 Subject: [PATCH] Blog: Locality failover for external services (#9880) * external locality failover blog * edits * external locality failover blog * lint * lint * external locality failover blog * review comments from craigbox * fix locality * review comment * review comment * review comment Co-authored-by: Ram Vennam --- .spelling | 3 + .../external-locality-failover.png | Bin 0 -> 84055 bytes .../2021/external-locality-failover/index.md | 215 ++++++++++++++++++ 3 files changed, 218 insertions(+) create mode 100644 content/en/blog/2021/external-locality-failover/external-locality-failover.png create mode 100644 content/en/blog/2021/external-locality-failover/index.md diff --git a/.spelling b/.spelling index 2632972779..e21cfe24ca 100644 --- a/.spelling +++ b/.spelling @@ -57,6 +57,7 @@ 5000qps 50Mb 5ms +5xx 6ms 6s 7.5 @@ -278,6 +279,7 @@ dogfood double-tls Drucker Duggirala +DynamoDB e.g. e2e eBPF @@ -330,6 +332,7 @@ gdb git GitHub GitOps +GKE GKE-IAM GKE-Istio GKE-Workloads diff --git a/content/en/blog/2021/external-locality-failover/external-locality-failover.png b/content/en/blog/2021/external-locality-failover/external-locality-failover.png new file mode 100644 index 0000000000000000000000000000000000000000..d29ef31b47dedef4c0d9d8118c058db05d7e26a1 GIT binary patch literal 84055 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 yqU?WsKLR|Dknk7%W4-_Q_x~^b|I}} +$ kubectl describe node | grep failure-domain.beta.kubernetes.io/region + failure-domain.beta.kubernetes.io/region=us-east1 + failure-domain.beta.kubernetes.io/region=us-east1 +{{< /text >}} + +In this example, the GKE cluster nodes are running in `us-east1`. + +Next, apply a `ServiceEntry` to create a `mydb.com` service that’s backed by the two DynamoDB endpoints. Set the `locality` of your primary endpoint to the same region as your workload. + +{{< text yaml >}} +apiVersion: networking.istio.io/v1beta1 +kind: ServiceEntry +metadata: + name: external-svc-dns +spec: + hosts: + - mydb.com + location: MESH_EXTERNAL + ports: + - number: 80 + name: http + protocol: HTTP + resolution: DNS + endpoints: + - address: dynamodb.us-east-1.amazonaws.com + locality: us-east1 + ports: + http: 80 + - address: dynamodb.us-west-1.amazonaws.com + locality: us-west + ports: + http: 80 +{{< /text >}} + +Let’s deploy a sleep container to use as a test source for sending requests. + +{{< text bash >}} +$ kubectl apply -f @samples/sleep/sleep.yaml@ +{{< /text >}} + +From the sleep container try going to `http://mydb.com` 5 times: + +{{< text bash >}} +$ for i in {1..5}; do kubectl exec deploy/sleep -c sleep -- curl -sS http://mydb.com; echo; sleep 2; done +healthy: dynamodb.us-east-1.amazonaws.com +healthy: dynamodb.us-west-1.amazonaws.com +healthy: dynamodb.us-west-1.amazonaws.com +healthy: dynamodb.us-east-1.amazonaws.com +healthy: dynamodb.us-east-1.amazonaws.com +{{< /text >}} + +You will see that Istio is sending requests to both endpoints. We only want it to send to the endpoint marked with the same region as our nodes. + +For that, we need to configure a `DestinationRule`. + +## Set failover conditions using a `DestinationRule` + +Istio’s `DestinationRule` lets you configure load balancing, connection pool, and outlier detection settings. We can specify the conditions used to identify an endpoint as unhealthy and remove it from the load balancing pool. + +{{< text yaml >}} +apiVersion: networking.istio.io/v1beta1 +kind: DestinationRule +metadata: + name: mydynamodb +spec: + host: mydb.com + trafficPolicy: + outlierDetection: + consecutive5xxErrors: 1 + interval: 15s + baseEjectionTime: 1m +{{< /text >}} + +The above `DestinationRule` configures the endpoints to be scanned every 15 seconds, and if any endpoint fails with a 5xx error code, even once, it will be marked unhealthy for one minute. If this circuit breaker is not triggered, the traffic will route to the same region as the pod. + +If we run our curl again, we should see that traffic is always going to the `us-east1` endpoint. + +{{< text bash >}} +$ for i in {1..5}; do kubectl exec deploy/sleep -c sleep -- curl -sS http://mydb.com; echo; sleep 2; done + +healthy: dynamodb.us-east-1.amazonaws.com +healthy: dynamodb.us-east-1.amazonaws.com +healthy: dynamodb.us-east-1.amazonaws.com +healthy: dynamodb.us-east-1.amazonaws.com +healthy: dynamodb.us-east-1.amazonaws.com +{{< /text >}} + +## Simulate a failure + +Next, let's see what happens if the us-east endpoint goes down. To simulate this, let’s modify the ServiceEntry and set the `us-east` endpoint to an invalid port: + +{{< text yaml >}} +apiVersion: networking.istio.io/v1beta1 +kind: ServiceEntry +metadata: + name: external-svc-dns +spec: + hosts: + - mydb.com + location: MESH_EXTERNAL + ports: + - number: 80 + name: http + protocol: HTTP + resolution: DNS + endpoints: + - address: dynamodb.us-east-1.amazonaws.com + locality: us-east1 + ports: + http: 81 # INVALID - This is purposefully wrong to trigger failover + - address: dynamodb.us-west-1.amazonaws.com + locality: us-west + ports: + http: 80 +{{< /text >}} + +Running our curl again shows that traffic is automatically failed over to our us-west region after failing to connect to the us-east endpoint: + +{{< text bash >}} +$ for i in {1..5}; do kubectl exec deploy/sleep -c sleep -- curl -sS http://mydb.com; echo; sleep 2; done +upstream connect error or disconnect/reset before headers. reset reason: connection failure +healthy: dynamodb.us-west-1.amazonaws.com +healthy: dynamodb.us-west-1.amazonaws.com +healthy: dynamodb.us-west-1.amazonaws.com +healthy: dynamodb.us-west-1.amazonaws.com +{{< /text >}} + +You can check the outlier status of the us-east endpoint by running: + +{{< text bash >}} +$ istioctl pc endpoints | grep mydb +ENDPOINT STATUS OUTLIER CHECK CLUSTER +52.119.226.80:81 HEALTHY FAILED outbound|80||mydb.com +52.94.12.144:80 HEALTHY OK outbound|80||mydb.com +{{< /text >}} + +## Failover for HTTPS + +Configuring failover for external HTTPS services is just as easy. Your application can still continue to use plain HTTP, and you can let the Istio proxy perform the TLS origination to the HTTPS endpoint. + +{{< text yaml >}} +apiVersion: networking.istio.io/v1beta1 +kind: ServiceEntry +metadata: + name: external-svc-dns +spec: + hosts: + - mydb.com + ports: + - number: 80 + name: http-port + protocol: HTTP + targetPort: 443 + resolution: DNS + endpoints: + - address: dynamodb.us-east-1.amazonaws.com + locality: us-east1 + - address: dynamodb.us-west-1.amazonaws.com + locality: us-west +{{< /text >}} + +The above ServiceEntry defines the `mydb.com` service on port 80 and redirects traffic to the real DynamoDB endpoints on port 443. + +{{< text yaml >}} +apiVersion: networking.istio.io/v1beta1 +kind: DestinationRule +metadata: + name: mydynamodb +spec: + host: mydb.com + trafficPolicy: + tls: + mode: SIMPLE + loadBalancer: + simple: ROUND_ROBIN + localityLbSetting: + enabled: true + failover: + - from: us-east1 + to: us-west + outlierDetection: + consecutive5xxErrors: 1 + interval: 15s + baseEjectionTime: 1m +{{< /text >}} + + The `DestinationRule` now performs TLS origination and configures the outlier detection. The rule also has a [failover](/docs/reference/config/networking/destination-rule/#LocalityLoadBalancerSetting) field configured where you can specify exactly what regions are failover targets. This is useful when you have several regions defined. + +## Wrapping Up + +Istio’s `VirtualService` and `DestinationRule` API’s provide traffic routing, failure recovery and fault injection features so that you can create resilient applications. The ServiceEntry API extends many of these features to external services that are not part of your service mesh. \ No newline at end of file