AWS CLI Application Load-Balancer Script for Re-Routing Traffic

I've recently set-up 3 Load-Balancers with 12 different Target Groups.

I'm looking to create a either an AWS CLI or Powershell script where I can send all traffic to one server (say, for the purposes of Maintenance and restarts).

Does anyone have, or would be willing to share, an AWS CLI script that allows me to essentially control the flow of traffic?

Thank you for your help.
TessandoIT AdministratorAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Shalom CarmelCTOCommented:

Trying to understand what you really need.

You mentioned that you set up 3 load balancers. Are they equivalently providing the same service? Are you looking for methodology to "load balance and failover" the load balancers?

Since you mentioned servers in your question, I assume that you are looking for what is called blue/green deployment. How to refresh your cluster in stages, so you have a mix of current servers (blue) and new servers (green).

The trick is to correctly use Auto-scaling groups, Launch configurations, AMI and code deployment tools.

1. Have an up to date AMI of your servers.
2. Change your application to run on ASG.
3. Have remote deployment and configuration toosl.  AWS CodeDeploy and AWS Systems Manager do the job well.
4. When change comes, start a new instance off your current AMI, apply changes and create a new AMI.
5. Update your launch configuration to use the green AMI
6. Increase you ASG target value. ASG will spin up green instances to meet your new target value. You now have a mixed environment.
7. Verify that all is well, and kill your blue instances

Here is an article with some code examples. They use python to deploy new code and reconfigure servers.

Or, if you have servers manually set up, no auto scaling, no AMI in place, then first ask yourself what are you doing in the cloud in the first place. But then, treat ELB and EC2 like you would treat an on prem lb with snowflake servers. You will come up with a playbook that you want to implement, and that can be translated to AWS CLI or PowerShell. For example, a command to add an instance to an ELB is someting like

aws elb register-instances-with-load-balancer   --load-balancer-name <value>  --instances <value>  --region <region>

Open in new window


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
TessandoIT AdministratorAuthor Commented:
Thank you, Shalomc. I really appreciate your answer... it's very thorough and an approach that, honestly, I didn't think of.

Right now, it's my understanding that the ALB splits traffic between two servers.

What I'm looking for is a script that would temporarily remove one server from the load-balancer so that I could do maintenance without effecting traffic. I could then run another script that would be in inverse of that to put both servers back into service, essentially normalizing the config.

If it's helpful, I wanted to do something like inverting the DNS Failover Policy. So, for example, if I want to invert my Failover Policy it would look like this:

aws route53 update-health-check --health-check-id xxxxxx-xxxx-xxx5-xxx8-d829615afced --inverted

Open in new window

And then I would normalize it like this:

aws route53 update-health-check --health-check-id xxxxxx-xxxx-xxx5-xxx8-d829615afced --no-inverted

Open in new window

Hopefully this makes sense.

Thank you again for your help, I appreciate it.
Shalom CarmelCTOCommented:
Look at the last 2 commands I mentioned. First one  disconnects an instance, second one reconnects it.
Shalom CarmelCTOCommented:
If you use ALB, then use the elbv2 register-targets and deregister-targets commands.
TessandoIT AdministratorAuthor Commented:
Thank you for the clear explanation.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Elastic load balancing (ELB)

From novice to tech pro — start learning today.