Skip to content

DNS based GSLB

Rafay has developed deep integrations with Global DNS providers such as NS1 so that customers can benefit from automation for "DNS based Global Server Load Balancing (GSLB)" capabilities.

DNS-based Global Load Balancing involves configuring a domain in the Domain Name System (DNS) such that client requests to the domain are distributed across a group of servers. This facilitates faster access to a domain by providing several IP addresses for a single host or domain name, which routes traffic between two or more servers. DNS-based Load Balancing helps optimize client requests for a specific domain.

DNS based GSLB


Use Cases

Geo Steering or Targeting

For workloads deployed to multiple, geographically distributed clusters, DNS based GSLB can automatically steer users to the nearest cluster.

Failover

For workloads deployed to multiple, geographically distributed clusters, DNS based GSLB can automatically failover user access in case of disruptions to one cluster.


Requirements

The use of the built in DNS based GSLB capability requires the use of Rafay's "managed" Ingress Controller.


Wizard based Workloads

For wizard based workloads, simply enable the toggle for "DNS based load balancing" as shown in the screenshot below

DNS based GSLB for Wizard Workloads


Yaml or Helm Workloads

Workloads based on Helm or k8s yaml can use Rafay provided annotations to fully automate the DNS programming for DNS based GSLB.

  annotations:
    rafay.dev/dns: "true"
    rafay.dev/cname: "<FQDN for Host>.run.rafay-edge.net"

Here is an example yaml for Ingress with the Rafay Annotations for DNS based GSLB.

  • The "rafay.dev/dns" annotation can be true or false
  • The "rafay.dev/cname" annotation is the CNAME for your Domain
  • Ensure that the "host" entry in your Ingress spec matches with the CNAME
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: km-nginx2
  annotations:
    rafay.dev/dns: "true"
    rafay.dev/cname: "alpha-example-com.run.rafay-edge.net"
    kubernetes.io/ingress.class: "nginx"
spec:
  tls:
  - hosts:
    - alpha.example.com
    secretName: km-tls
  rules:
  - host: alpha.example.com
    http:
      paths:
      - backend:
          serviceName: km-nginx2
          servicePort: 80