14Room

みんな泣きながらオトナになったんだ。

GCEのインスタンスサイズを変更する

概要

EC2だとインスタンス停止後、change instance sizeで一発ですが、gceでは下記の手順を踏んでインスタンスサイズの変更を実施します。 流れは下記の通りです。ここではmanageというインスタンスのサイズを変更してみます。

  1. サイズを変更したいインスタンスのsnapshotを取る。
  2. サイズを変更したいインスタンスを削除する。
  3. サイズを変更したいインスタンスと同じ名前のインスタンスを先ほどのsnapshotから作成(この時、希望のサイズに変更する)

snapshot取得

Snapshotsの「Create a new snapshot」でコピー元のOSが入ったディスクをSource diskに指定してsnapshotを取得。

f:id:naked123:20151217180603p:plain

インスタンスを削除する

Deleteする前に下記のデータを必ず忘れずに書き留めておくこと。

インスタンス再構築

Nameにサイズ変更したいインスタンス名を入れ、Boot diskは「Create a new disk」で先ほど作ったsnapshotをSource snapshotに指定して新規Diskを作成。zoneも忘れずに。

f:id:naked123:20151217182752p:plain

「Management, disk, networking, access & security options」をクリックして先ほどメモった内容を入力します。

  • tags f:id:naked123:20151217183401p:plain

  • network f:id:naked123:20151217183459p:plain

  • permissions f:id:naked123:20151217183518p:plain

最後に「create」をクリックして完成です。

あとがき

インスタンスサイズを変更する」、というより「同じ名前でインスタンスを再構築する」と言った方が相応しいような気がしますね(汗)

さらにあとがき(2015/12/21)

と思ったら、インスタンスを[stop]して[edit]したら下記のようにインスタンスサイズを変更できるようになっていました(汗)

f:id:naked123:20151221162813p:plain

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」をクリックする。

f:id:naked123:20151211144448p:plain

  • 下記のダイアログが表示されるので、必要情報を入力して保存 f:id:naked123:20151211144509p:plain