Round-Robin DNS (RDS)

The Aerospike Knowledge Base has moved to https://support.aerospike.com. Content on https://discuss.aerospike.com is being migrated to either https://support.aerospike.com or https://docs.aerospike.com. Maintenance on articles stored in this repository ceased on December 31st 2022 and this article may be stale. If you have any questions, please do not hesitate to raise a case via https://support.aerospike.com.

Title

How does Round Robin DNS work with Aerospike?

Abstract

Round-robin DNS (or Resource Distribution Pool) is supported by most Aerospike client libraries (including the C, C# and Java client libraries). This feature is used to seed a cluster using a DNS entry that does round-robin across different IP addresses for the nodes in the cluster.

For Aerospike Clients

Expected Behavior

  • For clients configured to use DNS, all of the IP addresses appear as aliases to the base DNS name. The client will validate and add these aliases as server nodes. If one or more connections are made, the cluster will be initialized properly.
  • The seed is only referenced on these 2 occasions:
    • Startup
    • When no nodes are responding to cluster tend info requests.
  • This technique is used to abstract the IP addresses of a cluster from the client’s seed.
  • A good example for this feature is when you need to facilitate the addition of new nodes in a cluster or to even fully point a client to a new cluster.
  • The client and all server nodes must reference the same DNS server where round-robin addresses have been configured for this to work.

Important notes

  • This does not affect any client operations outside of the initial seeding of the cluster.
  • When one node in the cluster goes down, there is a lag (usually 1 – 2 seconds) until the client gets a new partition map. The client will continue to direct commands to the node that went down until the map is updated. To succeed transactions in such windows, it is recommended to use appropriate client policy settings so that transactions are retried and eventually succeed.

For Aerospike Server

Expected Behavior

  • The server mesh configuration (mesh-seed-address-port) can be configured to use DNS name for versions 3.10 and above.
  • If the DNS name resolves to more than 1 IP, the server will try to connect to all IPs in round robin fashion.
  • However, it will only add the first one it is able to connect to the mesh seed node list at startup.
  • Thus, in situations when the DNS resolves to itself, we could have situations of node unable to join the cluster. It is not recommended to use DNS round-robin in the server configuration and rather specify the IP address or have DNS resolve only to 1 single IP.

Keywords

dns round robin client server seed

Timestamp

01/09/2018

Hi,

Can Elastic Load Balancer or Route53 DNS be used for this Round-Robine DNS on AWS?

Thank you, Khanh

A blog post by Thinknear talks about using CloudFormation to spin up an Aerospike cluster, including a Route53 DNS entry: http://engineering.thinknear.com/blog/2016/06/14/deploying-aerospike-to-aws-with-ansible/