GCEのインスタンスサイズを変更する
概要
EC2だとインスタンス停止後、change instance sizeで一発ですが、gceでは下記の手順を踏んでインスタンスサイズの変更を実施します。 流れは下記の通りです。ここではmanageというインスタンスのサイズを変更してみます。
- サイズを変更したいインスタンスのsnapshotを取る。
- サイズを変更したいインスタンスを削除する。
- サイズを変更したいインスタンスと同じ名前のインスタンスを先ほどのsnapshotから作成(この時、希望のサイズに変更する)
snapshot取得
Snapshotsの「Create a new snapshot」でコピー元のOSが入ったディスクをSource diskに指定してsnapshotを取得。
インスタンスを削除する
Deleteする前に下記のデータを必ず忘れずに書き留めておくこと。
- インスタンス名
- Tags
- Zone
- Network
- Permissions
インスタンス再構築
Nameにサイズ変更したいインスタンス名を入れ、Boot diskは「Create a new disk」で先ほど作ったsnapshotをSource snapshotに指定して新規Diskを作成。zoneも忘れずに。
「Management, disk, networking, access & security options」をクリックして先ほどメモった内容を入力します。
tags
network
permissions
最後に「create」をクリックして完成です。
あとがき
「インスタンスサイズを変更する」、というより「同じ名前でインスタンスを再構築する」と言った方が相応しいような気がしますね(汗)
さらにあとがき(2015/12/21)
と思ったら、インスタンスを[stop]して[edit]したら下記のようにインスタンスサイズを変更できるようになっていました(汗)
slackにslow query数を出してみた
概要
注意しなきゃいけ無いんだけど、気が付いたらslow queryがいっぱい出ていた・・・・。なんて事を回避するために、とりあえず毎日slackにslow query数を出すようにしてみました。
Webhook URL
slackにslow query数を投げるためのWebhook URLを取得します。詳しくは下記を参照してください。 Slack
スクリプト
前日分のslow logから件数を数えてslack(上記で取得したWebhook URL)に投げています。
#!/bin/bash date=`date '+%Y-%m-%d'` server_name=`hostname` url="https://hooks.slack.com/services/zzzzzzz/xxxxxx/123456789aaa?parse=full" num=`/bin/gzip -dc /var/log/mysql/mysql-slow.log.1.gz|grep Query_time|wc -l` message="($date) $server_name のslow-query数は$num です。" payload="payload={\"text\": \"${message}\", \"username\": \"tabby\", \"icon_emoji\": \":tabby6:\"}" curl --data "${payload}" ${url}
実行
各DBサーバ上のcronで毎朝9:10に定期実行させます。
10 0 * * * /root/work/slack.sh
DBバックアップスクリプト(GCP版)
概要
もしもの時のためにmaster-dbのデータバックアップを行っています。
バックアップスクリプト
#!/bin/sh date=`date '+%Y%m%d%H'` DESCRIPTION="db-backup-$date" gcloud compute -q --project "naked.co.jp:api-project-123456789" disks snapshot "master-db-disk" --zone "us-central1-a" --snapshot-names "$DESCRIPTION"
古いバックアップを消す
#!/bin/bash date=`date --date="3 day ago" +%Y%m%d%H` DESCRIPTION="db-backup-$date" gcloud compute -q --project "kiheitai.co.jp:api-project-784973659234" snapshots delete "$DESCRIPTION"
実行
両スクリプトとも毎時cronで実行しています。
rbenvでrubyのバージョン管理をする。
sudo update-alternatives --config editor sudo visudo -f /etc/sudoers.d/00_base
下記を追記
Defaults !secure_path Defaults env_keep += "PATH RBENV_ROOT"
環境変数設定
export RBENV_ROOT=/usr/local/rbenv export PATH=${RBENV_ROOT}/bin:${PATH}
rbenv本体インストール
sudo git clone git://github.com/sstephenson/rbenv.git ${RBENV_ROOT} sudo git clone git://github.com/sstephenson/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build sudo rbenv init -
シェル設定
bash -c 'cat <<\__EOT__ >> ~/.profile export RBENV_ROOT="/usr/local/rbenv" export PATH="${RBENV_ROOT}/bin:${PATH}" eval "$(rbenv init -)" __EOT__'
シェル設定反映
exec ${SHELL} -l
いったんログアウト、再ログイン
rbenv install -l sudo rbenv install 2.1.3 sudo rbenv global 2.1.3 sudo rbenv exec gem install bundler cd /var/www/taptrip2/current
2.1.3
Gemとかインストール&バージョン変更反映
rbenv exec bundle install sudo rbenv rehash
SSL証明書の期限を調べてみよう
概要
ブラウザで確認する方法もありますが、ここではコマンドで確認する方法を述べます。 コマンド実行
-connect で調査したいFQDNを指定します。
openssl s_client -connect nativeapi.naked.com:443 < /dev/null 2> /dev/null | openssl x509 -text | grep Not
結果
BeforeからAfterまでの期間が証明書が有効な期間です。
Not Before: Jan 18 17:17:32 2015 GMT Not After : Apr 22 08:27:53 2017 GMT
DBバックアップスクリプト(AWS版)
概要
mysqlサーバのデータを定期的にスナップショットでバックアップしていました。
シェルスクリプト
バックアップ
#!/bin/sh date=`date '+%Y%m%d_%s'` DESCRIPTION="DB_backup_$date" VOLID="vol-783ac837" /usr/local/bin/aws ec2 create-snapshot --volume-id $VOLID --description "$DESCRIPTION"
古いバックアップを消す
#!/bin/bash date=`date --date="7 day ago" +%Y%m%d` DESCRIPTION="DB_backup_$date" snap=`/usr/local/bin/aws ec2 describe-snapshots --filters Name=description,Values=$DESCRIPTION"*" --query Snapshots[*].SnapshotId --output text` VAR="$snap" ary=($VAR) for i in "${ary[@]}" do /usr/local/bin/aws ec2 delete-snapshot --snapshot-id $i done
おまけ
crontabで下記のように実行されてました。 35 * * * * /root/work/db_snapshot.sh >>/tmp/analog.log 2>>/tmp/analog-err.log 25 14 * * * /root/work/delete_snapshot.sh >>/tmp/analog.log 2>>/tmp/analog-err.log
HTTP/HTTPS balancerに証明書を設定する
概要
GCPでもHTTP/HTTPS balancerにSSL証明書を持たせアクセラレータのような使い方ができます。 本投稿ではHTTP/HTTPS balancerに証明書を設定する方法を述べます。
設定方法
- 「HTTP load balancing」で設定したいバランサーをクリックして選択。
- 「Incoming traffic」の「Add a global forwarding rule」をクリック
- 「Protocol」でHTTPSを選択して、「Certificate」で「Create a new certificate」をクリックする。
- 下記のダイアログが表示されるので、必要情報を入力して保存