Make even a single AWS EC2 host highly available using autoscaling groups. Here's example using ASG, EFS for persistent data, and Terraform for easy automation.
This is an IPv4 address in hexadecimal: FF.FF.FF.FF (255.255.255.255).
This is an IPv6 address, which are always in hexadecimal: FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF. See the difference in size?
Everyone gets public IPv6 addresses. There is no need for NAT.
I'll say it again, there is a no need for NAT. Firewalls still work, but don't use NAT.
No NAT means end to end communication with less complexity. Rejoice!
You will be assigned a large subnet of public IPv6 addresses. No more rationing a handful of public IPs.
The smallest typical subnet of IPv6 is a /64 or 264 addresses. IPv4 space, all of it contains 232 addresses.
Small organizations, or even your home, are assigned a /56 which contains 256 /64 subnets.
Larger organization are assigned a /48 which contains 65535 /64 subnets.
Go back and count those in your head again. I'll wait.
Sipcalc is a good IPv6 subnet calculator.
Addresses can be statelessly assigned to nodes using SLAAC.
Addresses can be assigned statefully using DHCPv6.
IPv6 and IPv4 are separate protocols and co-exist. This is called dual stack.
You must have separate routing and firewall rules for both IPv4 and IPv6.
Services must be configured to listen on IPv6, but most do so by default already.
A DNS A record for an IPv6 address is an AAAA or 'quad A' record.
dig aaaa watson-wilson.ca.
Here are some quick notes about IPv6 on an Ubiquity router and Linux clients, using privacy extensions. With IPv6 everyone gets a public IP address. In order to offer some privacy, the IPv6 privacy extensions allow clients to change IPv6 addresses over a period of time.
Learn Python, Perl, or Ruby by example with my production focused templates. Each template can be an object or procedural, has standard CLI options, documentation, and is test driven.
Build Azure VMs with Terraform using my example code