前回まででEC2、ELB、CloudFrontで遊んだので、最後はデータベースのサービスRDSと、CloudWatchで見るEC2のCPUCreditの話。RDSのエンジンはMySQLを選んだ場合の設定方法です。
RDSとは
RDSはMySQL、PostgreSQLをはじめとしたRDBを、OSやRDBをインストールすることなく利用できるサービス。インストール作業はありませんが、データベースの設定ファイルはちゃんといじれます。
いつもの確認
いつもと同じく、リージョンが東京になっていることを確認し、サービス→データベース→RDSをクリックします。
前準備
DBインスタンスを作る前に、通信するためのサブネットの作成、セキュリティグループの作成、DB用設定ファイルを作っておきます。
DB用サブネットの作成
RDSとEC2を通信させるには、VPC編で作ったネットワークで通信できる必要があります。
RDSはより良い感じに使えるように、セットアップ時に2つの異なるアベイラビリティーゾーンのサブネットに入れてあげる必要があります。1つしか作っていない場合は、ネットワーキング→VPCを開き(実際には使わないけど)サブネットの作成→アベイラビリティーゾーンの異なるサブネットを追加します。
DBサブネットグループの作成
RDSダッシュボード→サブネットグループ→DBサブネットグループの作成
名前:適当(db)
説明:適当(db)
VPC ID:VPCで作ったIDを選択
アベイラビリティーゾーン:ap-northeast-1x(VPCで作ったサブネットの1つ)
サブネットID:VPCで作ったサブネットの1つを選択
追加
アベイラビリティーゾーン:ap-northeast-1x(VPCで作ったサブネットの1つ)
サブネットID:VPCで作ったサブネットの1つを選択
追加
作成
します
VPCのセキュリティグループの設定
RDSに適用するセキュリティグループを設定します。
ダッシュボードからネットワーキング→VPC→セキュリティグループの作成
ネームタグ:適当に(db)
グループ名:適当に(db)
説明:適当に(db)
VPC:作ったVPCを選択
インバウンドルールの設定
インバウンドルール→編集
タイプ:MySQL(3306)
送信元:VPCの範囲内(今回は192.168.0.0/16)
MySQLの設定ファイルの作成(パラメータグループ)
デフォルトのMySQLの設定を使うと日本語関係があんまりよろしくなかったりするので、その辺りの設定ファイルを作っておきます。
パラメータグループ→パラメータグループの作成
Parameter Group Family:使うmysqlのバージョンを選択
Group Name:適当に(Wordpress_jp)
Description:適当に(Wordpress日本語用)
選択→パラメータの編集
フィルタ→変えたいパラメータを入力
値の編集→変更
変更の保存
今回は下記のように設定しました。
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_results utf8
character_set_server utf8
slow-query-log = 1
long_query_time = 2
RDSの作成
ようやく作成です。
インスタンス→DBインスタンスの起動
エンジンの選択
今回はMySQLを選択しました
本番稼働用?
無料枠なので「いいえ」を選択します。
DB詳細の設定
DBエンジンのバージョン:設定ファイルと同一のバージョン
DBインスタンスのクラス:db.t2.micro(無料枠)
マルチAZ配置:いいえ
ストレージ:10GB
インスタンスの識別子:適当に
マスターユーザの名前:適当に(管理ユーザid)
ちなみに、無料枠以外の設定を選択するとちゃんと教えてくれるので安心です。
詳細設定
VPC:作ったVPC
サブネットグループ:EC2と同じサブネットグループ
パブリックアクセス可能:外部から接続しないので いいえ
アベイラビリティーゾーン:選択
VPCセキュリティグループ:このページ上部で作ったDB用のセキュリティグループ
データベースの名前:初期で作るDB(wordpressとか)
DBパラメータグループ:このページ上部で作ったパラメータ
バックアップは7日としました。
DBインスタンスの起動
ステータスが利用可能になるまでは結構時間かかりました(5分程度?)ので、ちょっと休憩でもしておきましょう。
接続確認
ステータスが利用可能に変わったら、EC2内から接続してみます。
RDSダッシュボード→インスタンス→起動してるdbの▼→「エンドポイント」をメモします。
EC2にログインし↓等を参考にMysql 5.6 クライアントをインストールします。
- Amazon Linux AMIにMysql 5.6 をインストール
http://www.skyarch.net/blog/?p=2393
vi /etc/my.cnf [client] default-character-set = utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8 mysql -u 設定したマスターユーザ -p -h dbのエンドポイント
とかして、接続、show databases;とかして、上記の設定で作ったDBが存在していることを確認します。
ちなみに設定では、スロークエリログを出す設定にしました。ログの確認方法は↓。
- 参考
RDS(MySQL)でログファイルを見る方法
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MySQL.html
CPUCreditについて(CloudWatch)
t2系のインスタンスは、CPUを使わないときにエネルギー(クレジット)を貯めておいて、使うときになったらエネルギーを使って普段以上の性能を使える(バースト)って機能が付いています。それがCPUクレジット。1クレジットで1分間バースト可能。なんだかゲームっぽい。
無料利用枠のt2.microは、
ベースライン性能 | 1時間あたりに貯まるCPUクレジット | 最大チャージ料 |
t2.micro 10% | 6 | 144 |
で、ベースラインを越えたときにクレジットが消費され、越えてないときに貯まります*1。クレジットが無くなったら、強制的に10%の性能しか使えなくなるみたい。
どれくらいのクレジットが消費され、現在貯まっているかはCloudWatch→EC2から見ることができます。
で、しばらく人を入れて運用して見てみたところ…
CPUクレジットは徐々に右下がりで少なくなって、全然回復してくれていません。もう少しCPUを使わないように工夫しないとt2.microでは厳しい&このままほっておくとガツンとCPUを使って裁けたとしても、回復できずいつかは使い物にならないときが来ると言うことでしょうか。詳しい方教えて下さい。
*1
クレジットは整数で減っていくのかと思っていたのですが、CPUCreditUsageを見る限り、0.0Xとかの単位で減ってます。CPU Utilizationを見る限りは10%を越えているようには見えません。CPUを使ったら減るもの=CPUCreditなのかもしれません。
参考
- T2インスタンスがでたので簡単に性能をみてみた
http://d.conma.me/entry/2014/07/02/214746 - AWS 初心者向けWebinar 基本から理解する、AWS運用監視
http://www.slideshare.net/AmazonWebServicesJapan/20150512-awsmonitoring
その他の資料
性格にもよると思うのですが、一通り触った後に読むと理解もしやすくなります。
Amazon公式でいくつか初心者向けの資料が出ています。
- AWS 初心者向けWebinar 利用者が実施するAWS上でのセキュリティ対策
http://www.slideshare.net/AmazonWebServicesJapan/aws-webinar-47323216
・セキュリティに関する不安
・AWSに関する簡単なおさらい
・ネットワークセキュリティ
・論理アクセス管理
・データの保護
・監視・ログ
- トレーニング資料
初心者向け オンラインセミナーシリーズは分かりやすかったです。
http://aws.amazon.com/jp/aws-jp-introduction/
最初に読んでおけば色々捗りそうだけど、手を動かさないと眠くなっちゃうんですよね。
一年後どうするか
無料期間が終わった後どうするか… 自分がどんな設定をしたか覚えてない場合は、いっその事 解約しちゃうのが早いかもしれません。他の所へ引っ越すのであれば、初めからDockerとかで作るのも良いのかもしれませんね。
解約する
アカウントの最下部の「アカウントの解約」を押します。
RDS等を使わず小さくする
本番運用しながらだとなかなか厳しい部分もあるかもしれませんが、EC2インスタンスのコピーを取り、そちらで作業して良い感じに切り替えとかはクラウドっぽくて良いかもしれません。
他社へ引っ越しする
再度、一から構築すると言うのは面倒ですよね。クラウドモノは競争も激しく値段も競い合っていますので、初めからOSをCoreOS等にして、Dockerで環境を組み、Dockerコンテナのみ他のクラウドに移すと言うのも楽しい気がします。
最後に
他のクラウドものも触っていますが、AWSはホント色んな事ができますね。ただ、できることが多い分、(料金も含め)分かりにくい。他社がシンプルな物をと言うのを売りにしている気持ちがよく分かります。
あー。でも面白かった。
・はじめの一歩!無料で始めるAWS
コメント