Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use ENI & EIP to get closer to HA for NAT egress instances #4

Closed
emmanuel opened this issue Jul 31, 2015 · 4 comments
Closed

Use ENI & EIP to get closer to HA for NAT egress instances #4

emmanuel opened this issue Jul 31, 2015 · 4 comments

Comments

@emmanuel
Copy link
Owner

As described here, attaching an Elastic IP (EIP) to an Elastic Network Interfaces (ENI) provides a foundation for building HA NAT.

@emmanuel
Copy link
Owner Author

Currently we run a script on boot on each NAT instance, which assigns the default route for the paired private subnet's route table to the booting NAT instance. The instance is assigned an IAM role that allows modifying the route table of the private subnet.

In the ENI+EIP model, instead of updating the private subnet's route table, the route table's default route is statically configured to direct traffic to the ENI. The NAT instance assigns the appropriate ENI to itself on boot.

The EIP is a cherry on top that presents a stable return address to the outside world. That facilitates the eventual goal of 2 NAT nodes per private subnet in a hot-standby scenario. Hot-standby remains for future work.

@emmanuel
Copy link
Owner Author

One stumbling point is that terraform doesn't currently support disabling source/destination checks on the ENI. It looks like this just landed in terraform, but hasn't seen a release yet.

@pidah
Copy link

pidah commented Aug 11, 2015

disabling source/destination checks on the ENI has been added in the 0.6.2 release

@emmanuel
Copy link
Owner Author

True that. Time to close this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants