{"id":496,"date":"2024-08-09T13:46:03","date_gmt":"2024-08-09T17:46:03","guid":{"rendered":"https:\/\/waterloobae.com\/?p=496"},"modified":"2025-08-20T14:28:54","modified_gmt":"2025-08-20T18:28:54","slug":"building-auto-scaling-system-with-lb-asg-on-aws","status":"publish","type":"post","link":"https:\/\/waterloobae.com\/blog\/2024\/08\/09\/building-auto-scaling-system-with-lb-asg-on-aws\/","title":{"rendered":"Building Auto Scaling System with LB &amp; ASG on AWS"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This blog lists the sequences of AWS services you have to setup for a scalable system. It is not required to setup in this sequence, but I found it is one of straight forward and the easiest way.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">AWS Certificate Manger<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create SSL certificate for your system URL and import it. You can reimport for update.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"296\" src=\"https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-1-1024x296.png\" alt=\"\" class=\"wp-image-499\" srcset=\"https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-1-1024x296.png 1024w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-1-300x87.png 300w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-1-768x222.png 768w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-1-1536x444.png 1536w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-1-2048x593.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">EC2 &#8211; Key Pairs &amp; Security Groups<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create key pair to use. EC2-&gt;Network &amp; Security -&gt; Key Pairs<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"249\" src=\"https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-2-1024x249.png\" alt=\"\" class=\"wp-image-500\" srcset=\"https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-2-1024x249.png 1024w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-2-300x73.png 300w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-2-768x187.png 768w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-2-1536x374.png 1536w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-2-2048x499.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The user name of Ubuntu is Ubuntu not like other EC2 instances. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create Security Group for CE2 instances(Web Server) and RDS(DB Server)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"264\" src=\"https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-3-1024x264.png\" alt=\"\" class=\"wp-image-501\" srcset=\"https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-3-1024x264.png 1024w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-3-300x77.png 300w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-3-768x198.png 768w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-3-1536x395.png 1536w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-3-2048x527.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Dev Server<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create one EC2 instance. This can be used as your dev. server.<\/li>\n\n\n\n<li>Configure your system on it. <\/li>\n\n\n\n<li>Create and Install SSL certificate. Do not set up redirect from HTTP to HTTPS. Auto Scaling Group listener will do the redirection. <\/li>\n\n\n\n<li>Lastly, create AMI Image fro Auto Scaling Group.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Launch Template<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Select the AMI image created from Dev Server. <\/li>\n\n\n\n<li>Select Actions -&gt; Modify template(Create new version) to update Auto Scaling Group.<\/li>\n\n\n\n<li>Change Default version by clicking Actions -&gt; Set default version<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"301\" src=\"https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-4-1024x301.png\" alt=\"\" class=\"wp-image-503\" srcset=\"https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-4-1024x301.png 1024w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-4-300x88.png 300w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-4-768x226.png 768w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-4-1536x451.png 1536w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-4-2048x602.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Auto Scaling Groups<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create Sale in &amp; Scale out Policy (Step Scaling) <\/li>\n\n\n\n<li>Create CloudWatch Alarm for Sacle in and Scale out Policy.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"377\" src=\"https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-5-1024x377.png\" alt=\"\" class=\"wp-image-505\" srcset=\"https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-5-1024x377.png 1024w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-5-300x111.png 300w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-5-768x283.png 768w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-5-1536x566.png 1536w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-5-2048x755.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Load Balancers<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Your system URL should be assigned here. <\/li>\n\n\n\n<li>Create a Target Group to include instances from the Auto Scaling Group. <\/li>\n\n\n\n<li>Make sure Stickiness is enabled if your system uses sessions.<\/li>\n\n\n\n<li>Setup Listeners for HTTP(80) and HTTPS(443)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"304\" src=\"https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-6-1024x304.png\" alt=\"\" class=\"wp-image-506\" srcset=\"https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-6-1024x304.png 1024w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-6-300x89.png 300w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-6-768x228.png 768w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-6-1536x456.png 1536w, https:\/\/waterloobae.com\/wp-content\/uploads\/2024\/08\/image-6-2048x607.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">RDS<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create one Parameter Group in Amazon RDS with &#8220;max_allowed_packet: 64000000&#8221; <\/li>\n\n\n\n<li>Modify cluster to have this new parameter group <\/li>\n\n\n\n<li>Reboot DB instances.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">AWS WAF &#8211; Web ACLs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Make if sure to set IP sets if it has in-bound and\/or out-bound API call to call\/listen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog lists the sequences of AWS services you have to setup for a scalable system. It is not required to setup in this sequence, but I found it is one of straight forward and the easiest way. AWS Certificate Manger Create SSL certificate for your system URL and import it. You can reimport for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,4],"tags":[],"class_list":["post-496","post","type-post","status-publish","format-standard","hentry","category-aws","category-it-tips"],"_links":{"self":[{"href":"https:\/\/waterloobae.com\/blog\/wp-json\/wp\/v2\/posts\/496","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/waterloobae.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/waterloobae.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/waterloobae.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/waterloobae.com\/blog\/wp-json\/wp\/v2\/comments?post=496"}],"version-history":[{"count":5,"href":"https:\/\/waterloobae.com\/blog\/wp-json\/wp\/v2\/posts\/496\/revisions"}],"predecessor-version":[{"id":508,"href":"https:\/\/waterloobae.com\/blog\/wp-json\/wp\/v2\/posts\/496\/revisions\/508"}],"wp:attachment":[{"href":"https:\/\/waterloobae.com\/blog\/wp-json\/wp\/v2\/media?parent=496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/waterloobae.com\/blog\/wp-json\/wp\/v2\/categories?post=496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/waterloobae.com\/blog\/wp-json\/wp\/v2\/tags?post=496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}