What’s an element?
The intent in enumerating the elements of the reference architecture here is two-fold. Firstly, to provide an un-ambiguous mechanism for mapping items (mere squiggles on a diagram, or rack-mounted-appliances on your data-center floor, or anywhere inbetween) to the role(s)/function(s) that they’re fulfilling. Secondly, to characterize (richly, we hope) the important properties and functions of each piece of the whole.
Conventions
The italicized suffix “(a-n)” is used to indicate that multiple instances of this element may be instantiated, with a parenthesized alphabetic character index to differentiate between instances. For example, an element definition with a label of “cl(a-n)” could may be instantiated multiple times. In such a case, individual instances would be named: “cl(a)”, “cl(b)”, cl(c)”, etc..
Element Definitions
Element Label | Element Name | Element Description |
---|---|---|
“app(a-n).ai(a-n)” | Application instances | Instances of the nominal backend application/service that is being load-balanced by the GLB and ALB services. There must be a minimum of one instance at a minimum two locales, but there may be more instances (a-n) |
“alb(a-n)” | Application load-balancers | Instances of application load-balancers. There must be a minimum of two instances in separate locales, but there may be more instances (c-n). |
“ans1(a-n)” | Enterprise authoritative nameservers | The authoritative nameservers for the enterprise-domain (e.g. “Example Domain “). There 1 or many instances (a-n) of this element. It is assumed that access to the authoritative nameservers by recursive resolvers is mediated by either IP anycast at the network layer, or the use of multiple NS records in whichever external nameservers have delegated “ed1” to the enterprise. |
“app(a-n)” | Load-balanced application | The application that the global load-balancer is serving. There may be zero, one, or many load-balanced applications. (Though there is not much use for a global load-balancer if there are no applications to load-balance.) |
“cl(a-n)” | Clients | Client devices accessing the globally load-balanced services. There may be 0, 1, or many instances (a-n) of this element present in locales with or without instances of the load-balanced applications. |
“ed1(a-n)” | Enterprise domain | A DNS domain for which the enterprise authoritative nameservers are authoritative. “Example Domain “ is used as an example throughout this architecture specification. |
“fqdn1(a-n)” | Client-facing GLB service FQDN | The fully-qualified domain name (FQDN) of a globally load-balanced service which is used by clients of the service. Each globally-load-balanced service has its own dedicated FQDN, in the “ed1” domain (“rrset3”). E.g “svc-x.example.com” |
“fqdn2(a-n)” | GLB-hosted service FQDN | The fully-qualified domain name (FQDN) of a globally load-balanced service which is exposed hosted authoritatively by the GLB. (E.g. “svc-x.glb.example.com) in glbd1. Each globally-load-balanced service has its own dedicated FQDN, in the “glbd1” domain. |
“fqdn3(a-n)” | FQDN that appears in glbpool1 | A fully-qualified domain name (FQDN) that appears in the list of load-balancing targets for a GLB-hosted service FQDN. |
“fqdn4(a-n)” | FQDNs of the authoritative nameserver function for each “glb” instance | The fully qualified domain (FQDN) used in the “delegation” (NS) record on the enterprise authoritative namserver’s “ed1” zonefile. |
“glb(a-n)” | Global load-balancers | Instances of DNS-based global load-balancers. There must be a minimum of two instances (“glb(a)”, and glb(b)” in a minimum of two “locales”, but there may be more instances (c-n). All instances of “glb” must share a synchronized configuration and run-state and must be deployed in a fully resilient manner. |
“glbd1(a-n)” | Global load-balancing domain | A DNS sub-domain of the enterprise domain (ed1) which has been delegated by the enterprise authoritative nameservers (ans1) to the global load-balancers (glb1). “glb.example.com” is used as an example throughout this architecture specification. There must be a minimum of instance of this element, but additional instances (b-n) are permitted. |
“glbp(a-n)” | GLB policy | A nominal policy executed on the GLB instances (“glb(a-n)”) which determines which element of “glbpool(a-n)” the GLB will include in its response to a query of “fqdn2(a-n)”. This policy will typically use some combination of the following data elements: (a) the state of “alb(n)” instances appearing in the “glbpool(n)” of “fqdn2(n)” (as inferred from the contents of a nominal glb-pool-member health-state table); (c) geographic proximity of “rr(n)” and “alb(n)” instances (as inferred from a nominal IP-based geo-location service); (d) the contents of the nominal session-persistence table for “fqdn(2)” in “glb(a-n)”; and (e)any explicitly configured preference for a given entry on “glbpool(n)”. An instance of “glbp” must be applied to every instance of “fqdn2”. The same policy may be applied to multiple instances of “fqdn2” |
“glbpool(a-n)” | List of load-balancing targets for a GLB-hosted service FQDN | The list of load-balancing targets for a GLB-hosted service FQDN (“fqdn2”, e.g. “svc-x.glb.example.com). The items in this list may be either IP addresses or FQDNs. There must be a single instance of this element for each globally-load-balanced service. |
“locale(a-n)” | Workload hosting locale | An environment in which IT workload can be hosted. May denote regionally-based availability zones. Must be sufficiently localized for an ALB within the locale to effectively serve backend load-balancing targets in the same locale. |
“rr(a-n)” | DNS recursive resolvers | Recursive DNS resolvers serving the clients. There 1 or many instances (a-n) of this element. It is assumed that access to the DNS resolvers by the client devices is mediated by either IP anycast on the transport network or round-robin rotation on the part of the client devices (each configured with the IP addresses of multiple “rr” instances.) |
“rrset1(a-n)” | glbd delegation ns resource record set | A set of NS records maintained (below the zone apex) in the enterprise domain (ed1) zonefile on the enterprise authoritative nameservers (“ans1”) with values of the individual GLB instances (“glbd1”). The “name” value of these records is the global load-balancing domain (glbd1) and the RDATA value an FQDN of a “glb” instance. There is a separate record for each GLB instance. |
“rrset2(a-n)” | glbd delegation glue resource record set | A set of A records maintained in the enterprise domain (ed1) zonefile on the enterprise authoritative nameservers (ans1) with “name” values of the individual GLB instances (“glbd1”). The “name” field in each of these resource-records must correspond directly to the RDATA field from one of the rrset1 records. |
“rrset3(a-n)” | GLB service CNAME record | A CNAME record maintained in the enterprise domain (“ed1”) zone on the enterprise authoritative nameservers (“ans1”) for each globally load-balanced service’s FQDN (“fqdn1”). The “name” portion of each resource-record is the unique relative (aka host-only) value assigned to a single globally load-balanced service. The RDATA field is the corresponding FQDN (fqdn2) configured on the global load-balancers (glb1) for the same globally load-balanced service. |
“rrset4(a-n)” | GLB service FQDN synthetic A records | A “synthetic” A record resource record set maintained on the global load-balancers (glb1). Each globally load-balanced service must have a corresponding configuration on glb1 that is “keyed” to a fully qualified domain name (FQDN) in the global load-balancing domain (“glbd1”.) If the entries in the nominal load-balancing target pool for the GLB service’s FQDN are IP addresses, the glb will respond to queries with dynamically generated A records. |
“rrset5(a-n)” | GLB service FQDN synthetic CNAME records | A “synthetic” CNAME record resource record set maintained on the global load-balancers (glb1). Each globally load-balanced service must have a corresponding configuration on glb that is “keyed” to a fully qualified domain name (FQDN) in the global load-balancing domain (glbd.) If the entries in the nominal load-balancing target pool for the GLB service’s FQDN are FQDNs, the glb will respond to resolution requests for the GLB service’s FQDN with dynamically generated CNAME records, aliasing the GLB’s service’s FQDN to the FQDN of an item from the configured list of load-balancing targets. |
“rrset6(a-n)” | ALB FQDN A records | An A record resource set maintained on the authoritative nameservers for any FQDNs that are included in the glbpool. (E.g. “alb1.example.com”) |