{"id":1559,"date":"2016-02-29T11:50:22","date_gmt":"2016-02-29T11:50:22","guid":{"rendered":"http:\/\/www.tekhead.org\/blog\/?p=1559"},"modified":"2017-03-14T22:33:21","modified_gmt":"2017-03-14T22:33:21","slug":"amazon-aws-tips-and-gotchas-part-2","status":"publish","type":"post","link":"http:\/\/tekhead.it\/blog\/2016\/02\/amazon-aws-tips-and-gotchas-part-2\/","title":{"rendered":"Amazon AWS Tips and Gotchas &#8211; Part 2 &#8211; AWS EBS &#038; RDS MS SQL"},"content":{"rendered":"<p>Continuing in this series of blog posts taking a bit of a \u201cwarts and all\u201d view of a few Amazon AWS features, below are a handful more tips and gotchas when designing and implementing solutions on Amazon AWS, including EBS and MS SQL on RDS.<\/p>\n<p class=\"p1\"><span class=\"s1\">For the first post in this series with a bit of background on where it all originated from, see here<\/span>:<br \/>\n<a href=\"http:\/\/tekhead.it\/blog\/2016\/02\/amazon-aws-tips-and-gotchas-part-1\/\" target=\"_blank\">http:\/\/tekhead.it\/blog\/2016\/02\/amazon-aws-tips-and-gotchas-part-1\/<\/a><\/p>\n<p>For more posts in this series, see here:<br \/>\n<a href=\"http:\/\/tekhead.it\/blog\/2016\/07\/index-of-tekhead-it-blog-posts-on-amazon-aws\/#gotchas\" target=\"_blank\">Index of AWS Tips and Gotchas<\/a><\/p>\n<h5 class=\"p1\"><span class=\"s1\"><b>AWS Tips and Gotchas &#8211; Part 2 &#8211; EBS &amp; RDS<\/b><\/span><\/h5>\n<ol class=\"ol1\" start=\"4\">\n<li class=\"li1\"><span class=\"s2\"><em>You cannot increase the size of EBS volumes without stopping the instance.<\/em> If you are designing scale-out \/ high availability solution then this is not a big issue as you should be able to take some downtime on any individual node, but that downtime is going to be fairly significant, and the larger the volume, the more downtime you will incur. The actual process looks <a href=\"http:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/ebs-expand-volume.html\"><span class=\"s3\">like this<\/span><\/a> (summary below):<\/span>\n<ul>\n<li class=\"li1\"><span class=\"s2\">Stop the instance<\/span><\/li>\n<li class=\"li1\"><span class=\"s2\">Snapshot the volume<\/span><\/li>\n<li class=\"li1\"><span class=\"s2\">Create a new volume from the snapshot, with your new larger size<\/span><\/li>\n<li class=\"li1\"><span class=\"s2\">Detach the old volume<\/span><\/li>\n<li class=\"li1\"><span class=\"s2\">Attach the new volume and start the instance back up<\/span><\/li>\n<\/ul>\n<p>This is one of those features which is bread and butter for a vSphere or Hyper-V admin, and could be done online in seconds with the vast majority of guest operating systems.<\/p>\n<p>I think it really highlights the key difference between designing for AWS Cloud, and a traditional enterprise virtual infrastructure. In a solution where most of your hosts are ephemeral, this should not be a big issue. If you try to take a traditional enterprise approach, you may find yourself in hot water, having to take service downtime to make simple changes.<\/p>\n<p>I suggest where possible \/ appropriate, avoid using EBS and use alternative options such as S3 which can scale on demand.<\/p>\n<p><strong>UPDATE 13th Feb 2017:<\/strong> Amazon have just released Elastic Volumes, which allow you to scale up EBS volumes on demand! Yay! More info here:<br \/>\n<a href=\"https:\/\/aws.amazon.com\/blogs\/aws\/amazon-ebs-update-new-elastic-volumes-change-everything\/\" target=\"_blank\">Amazon EBS Update \u2013 New Elastic Volumes Change Everything<\/a><\/li>\n<li class=\"li1\"><span class=\"s2\"><span class=\"s2\"><span class=\"s2\"><em>Similar to resizing EBS volumes, you cannot hot-resize an instance, or indeed resize them \/ change their type in place<\/em>. In order to change instance type you need to detach any EBS volumes (including root volumes if you wish to maintain them too), terminate the instance, create a new one and re-attach your volumes.<\/span><\/span><\/span><br \/>\nObviously you cannot re-attach a root volume if you are using instance storage (ephemeral) for this, so make sure you use EBS backed volumes if you want to maintain your root volumes for any scale-up elements of your solutions which cannot simply be re-created from a bootstrap script.<\/li>\n<li><span class=\"s2\"><span class=\"s2\"><span class=\"s2\">If your application depends on Microsoft SQL, you are going to be in for a fairly unpleasant surprise! <em>It is not currently possible to resize MS SQL volumes on Amazon RDS once they have been deployed! At all. Full stop. Nada.<\/em><\/span><\/span><\/span><img loading=\"lazy\" decoding=\"async\" class=\"center alignnone wp-image-1571 size-full\" style=\"display: block; margin: 5px auto;\" src=\"http:\/\/tekhead.it\/wp-uploads\/www.tekhead.org\/2016\/02\/saywhatnow.jpg\" alt=\"AWS MS SQL - say what now\" width=\"253\" height=\"260\" data-position=\"1\" srcset=\"http:\/\/tekhead.it\/wp-uploads\/www.tekhead.org\/2016\/02\/saywhatnow.jpg 253w, http:\/\/tekhead.it\/wp-uploads\/www.tekhead.org\/2016\/02\/saywhatnow-146x150.jpg 146w\" sizes=\"auto, (max-width: 253px) 100vw, 253px\" \/><span class=\"s2\"><span class=\"s2\">The recommendation from AWS is to deploy your estimated future capacity requirement from day one! Not very cloudy at all\u2026<\/span><\/span>Your only growth option when you hit your initial capacity limit is to migrate all the data to a new RDS instance and take some application downtime to fail over.This can be minimised by using things like log shipping from the source instance to get the target as close to up-to-date as possible, but you will still need to shut down and swing your applications, and frankly it&#8217;s a risky headache which would be better avoided if possible, and certainly not something you want to be doing on a regular basis.Probably best to design for your estimated growth, and add a percentage on top.<\/li>\n<\/ol>\n<p class=\"p1\"><span class=\"s1\">Find more posts in this series here:<br \/>\n<\/span><span class=\"s2\"><a href=\"http:\/\/tekhead.it\/blog\/2016\/07\/index-of-tekhead-it-blog-posts-on-amazon-aws\/#gotchas\" target=\"_blank\">Index of AWS Tips and Gotchas<\/a><\/span><\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"FbfZ6DwY7P\"><p><a href=\"http:\/\/tekhead.it\/blog\/2016\/03\/amazon-aws-tips-and-gotchas-part-3\/\">Amazon AWS Tips and Gotchas \u2013 Part 3 &#8211; S3, Tags and ASG<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;Amazon AWS Tips and Gotchas \u2013 Part 3 &#8211; S3, Tags and ASG&#8221; &#8212; Tekhead.it\" src=\"http:\/\/tekhead.it\/blog\/2016\/03\/amazon-aws-tips-and-gotchas-part-3\/embed\/#?secret=naKUhV6e5t#?secret=FbfZ6DwY7P\" data-secret=\"FbfZ6DwY7P\" width=\"590\" height=\"332\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Continuing in this series of blog posts taking a bit of a \u201cwarts and all\u201d view of a few Amazon AWS features, below are a handful more tips [..]<\/p>\n","protected":false},"author":1,"featured_media":1549,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_focuskw":"ebs","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"AWS is awesome, but this series describes common issues you may come across and provides tips, workarounds & fixes. Part 2 covers AWS EBS & RDS MS SQL.","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"New Blog Post: #Amazon #AWS Tips and Gotchas \u2013 Part 2 | #vExpert #MSSQL #EBS","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[688,42,449],"tags":[270,709,699,706,707,701,702,57,1009,541,708,376,537,710,572,189,66,56],"class_list":["post-1559","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aws","category-microsoft","category-storage","tag-amazon","tag-architecture","tag-aws","tag-awsgotchas","tag-awstips","tag-ebs","tag-ec2","tag-education","tag-elastic-volumes","tag-microsoft","tag-mssql","tag-rds","tag-s3","tag-solution-architect","tag-sql","tag-storage","tag-tips","tag-training"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"http:\/\/tekhead.it\/wp-uploads\/www.tekhead.org\/2016\/02\/amazon-web-services-logo.png","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2l3lU-p9","amp_enabled":true,"_links":{"self":[{"href":"http:\/\/tekhead.it\/blog\/wp-json\/wp\/v2\/posts\/1559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/tekhead.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/tekhead.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/tekhead.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/tekhead.it\/blog\/wp-json\/wp\/v2\/comments?post=1559"}],"version-history":[{"count":31,"href":"http:\/\/tekhead.it\/blog\/wp-json\/wp\/v2\/posts\/1559\/revisions"}],"predecessor-version":[{"id":1643,"href":"http:\/\/tekhead.it\/blog\/wp-json\/wp\/v2\/posts\/1559\/revisions\/1643"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/tekhead.it\/blog\/wp-json\/wp\/v2\/media\/1549"}],"wp:attachment":[{"href":"http:\/\/tekhead.it\/blog\/wp-json\/wp\/v2\/media?parent=1559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/tekhead.it\/blog\/wp-json\/wp\/v2\/categories?post=1559"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/tekhead.it\/blog\/wp-json\/wp\/v2\/tags?post=1559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}