Amazon EC2インスタンスをスケールアップする

Amazon EC2をスケールアップする方法

今までELB(ロードバランサー)を使ってスケールアウト(数を増やして対応)する方法を何回かご紹介してきました。今回は、動いているAmazon EC2インスタンスを消さず(Terminate)に停止(Stop)からスケールアップ(性能をアップして対応)をして再度開始(Start)する方法をご紹介します。このスケールアップは何気に知られていないのでご参考にしてください。

インスタンスを起動

いつものインスタンス起動です。t1.microインスタンスを起動しています。

$ ec2-run-instances ami-9a54e19b --region ap-northeast-1 --instance-type t1.micro 
RESERVATION	r-82424f83	771293814336	default
INSTANCE	i-1ce4f41d	ami-9a54e19b			pending		0		t1.micro	2011-10-27T14:30:07+0000	ap-northeast-1b	aki-d209a2d3			monitoring-disabled				ebs					paravirtual	xen		sg-06c26807	default

インスタンスが起動していることを確認しました。SSHでログインして様々なアプリケーションをセットアップした後を想定しています。

$ ec2-describe-instances --region ap-northeast-1
RESERVATION	r-82424f83	771293814336	default
INSTANCE	i-1ce4f41d	ami-9a54e19b	ec2-175-41-218-178.ap-northeast-1.compute.amazonaws.com	ip-10-152-103-233.ap-northeast-1.compute.internal	running	mykey1	0		t1.micro	2011-10-26T16:35:55+0000	ap-northeast-1b	aki-d209a2d3			monitoring-disabled	175.41.218.178	10.152.103.233			ebs					paravirtual	xen		sg-06c26807	default
BLOCKDEVICE	/dev/sda1	vol-fd977791	2011-10-26T16:36:15.000Z

起動中のインタンスを停止

起動中のインスタンスを停止するには、Stopコマンドを実行します。TerminateでもRebootでもありません。気をつけてください。

$ ec2-stop-instances --region ap-northeast-1 i-1ce4f41d
INSTANCE	i-1ce4f41d	running	stopping
$ ec2-describe-instances --region ap-northeast-1
RESERVATION	r-82424f83	771293814336	default
INSTANCE	i-1ce4f41d	ami-9a54e19b			stopped	mykey1	0		t1.micro	2011-10-26T16:35:55+0000	ap-northeast-1b	aki-d209a2d3			monitoring-disabled				ebs					paravirtual	xen		sg-06c26807	default
BLOCKDEVICE	/dev/sda1	vol-fd977791	2011-10-27T14:01:49.000Z

停止中のインスタンスのタイプを変更する

Modifyコマンドによって停止しているインスタンスのタイプをt1.microからm1.smallに変更しています。これがスケールアップですね。逆に、インスタンスの性能を下げることもできます。

$ ec2-modify-instance-attribute i-1ce4f41d --instance-type m1.small --region ap-northeast-1
instanceType	i-1ce4f41d	m1.small

停止中のインスタンスを動かす

Startコマンドによって停止しているインスタンスを動かします。

$ ec2-start-instances i-1ce4f41d --region ap-northeast-1
INSTANCE	i-1ce4f41d	stopped	pending
$ ec2-describe-instances i-1ce4f41d --region ap-northeast-1
RESERVATION	r-82424f83	771293814336	default
INSTANCE	i-1ce4f41d	ami-9a54e19b			pending	mykey1	0		m1.small	2011-10-27T14:10:22+0000	ap-northeast-1b	aki-d209a2d3			monitoring-disabled				ebs					paravirtual	xen		sg-06c26807	default
BLOCKDEVICE	/dev/sda1	vol-fd977791	2011-10-27T14:10:28.000Z
$ ec2-describe-instances i-1ce4f41d --region ap-northeast-1
RESERVATION	r-82424f83	771293814336	default
INSTANCE	i-1ce4f41d	ami-9a54e19b	ec2-175-41-235-33.ap-northeast-1.compute.amazonaws.com	ip-10-150-165-40.ap-northeast-1.compute.internal	running	mykey1	0		m1.small	2011-10-27T14:10:22+0000	ap-northeast-1b	aki-d209a2d3			monitoring-disabled	175.41.235.33	10.150.165.40			ebs					paravirtual	xen		sg-06c26807	default
BLOCKDEVICE	/dev/sda1	vol-fd977791	2011-10-27T16:10:46.000Z

AWS Management Consoleでもできます

今回はコマンドからスケールアップ方法をご紹介しましたが、AWS Management Consoleでも操作できます。

まとめ

Amazon EC2インスタンスをスケールアップする方法をご紹介しました。セットアップし直す必要がありませんので大変便利な機能です。動作中のインタンスにおいてCPUやメモリが足りない状況になったらスケールアップを検討してください。また、アクセス数が多くてなかなか応答が無い場合にはロードバランサーを使ってスケールアウトによる負荷分散をしてみてください。スケールアップとスケールアウトをマスターしてAmazon EC2マエストロになりましょう!