14Room

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

ausearchをcronで定期実行させる

auditのlogから欲しい情報を検索するために使えるausearchはとても便利です。 -kでkey fieldに設定した文字列を含む情報だけ抜き出すとか、–start, –endで指定した時間の情報だけ見るとかもできます。 しかし、crontab中でausearchを呼び出すと期待した結果…

LambdaでRDSを定期的にスケールアップ・ダウンさせてみた

概要 普段はmicroインスタンスで十分だけど、重いSQLを実行するときだけsmallにしたいという要件を満たすために、 Lambdaを使ってサーバレスでRDSを定期的にスケールアップさせてみました。 ここではスケールアップする方法のみ記述してますが、業務時間終了…

StatusCakeからslackにアラートを飛ばしてみる

概要 URL監視を手軽にする際にStatusCakeは便利です。設定は簡単だし、監視対象URL数もフリープランで20個以上軽く行けますし。 今回はStatusCakeからslackにアラートを飛ばしてみようとした際にしょうもないところでハマったのでソレについて述べます。 sla…

Google Developers Launchpadで$100,000 GETした時の思い出

gcp

概要 Google Developers Launchpadに選出され$100,000 GETした時の流れを簡単にまとめました。 自分たちがGoogle Developers Launchpadに挑戦した時(2015/4)と状況が変わっているので、今はちょっと違うかもしれませんが誰かの参考になればイイなと。 流れ 2…

Shinjuku.rb #33 でspot instanceについてLTさせてもらった時の資料

aws

概要 Shinjuku.rb #33 ではLTのお題目に縛りが無かったのでインフラっぽいことを喋らせてもらいました。 資料 Aws spot instanceを攻めてみた 発表用 from taro uematsu

ubuntuでセキュリティアップデートを自動で行う。

概要 unattended-upgradesを導入してdpkgで管理されてるアプリのセキュリティアップデートを自動で行います。 インストール apt-get install unattended-upgrades 設定 /etc/apt/apt.conf.d/50unattended-upgradesの下記のコメントアウトを外す Unattended-U…

unable to resolve hostのエラーを抑制する。

概要 sudoコマンドを実行した際などホスト名が解決できないと sudo: unable to resolve host と出力されますが、ウザいので抑制したいです。 対処法 下記のスクリプトで起動時にhostnameを/etc/hostsに追記する。 -------------- #! /bin/sh ### BEGIN INIT …

mysqldumpslowの結果をslackに投げてみた

概要 以前、mysqlのslow query数をslackに投稿させていましたが、数だけでなく質も見ないとダメだなということで、今回はmysqldumpslowによる統計結果を投稿させるようにしました。 mysqldumpslow MySQLに付属しているツールで、スロークエリログを集計して…

MySQL+MHA+HAproxy+consul環境構築ログ

MySQL MHAで使う万能ユーザを用意します。 grant all privileges on *.* to mha@'10.%' identified by 'mhapassword'; mysqlチェック用ユーザを作成 grant select on *.* to haproxy@'10.%';] MHA 準備 mha manager ssh-keygen -t rsa -f /root/.ssh/id_rsa …

upstartでdaemon化してみよう

概要 OSSの中にはinitスクリプトの無いモノが少なく無いですが、upstartで手軽にdaemon化してしまいましょう。ちなみにdaemon化したプロセスが不意に落ちた場合も自動で立ち上げ直してくれる機能もあります。ここではMHAを例にdaemon化してみました。 instal…

HTTP load balancingで海を跨いだ負荷分散をしてみた

gcp

概要 GCPのHTTP load balancingには一つのIPアドレスで複数のリージョンに負荷分散できる機能があります。 Google Cloud Platform Blog: Unveiling scalable HTTP load balancing across cloud regions これを上手く使えば、ニューヨークにいる人にはアメリ…

DKIM導入

概要 送信したメールがSPAM扱いされるので、証明書による送信元証明を付加しました。 インストール インストール sudo apt-get install opendkim opendkim-tools ディレクトリ用意 mkdir -p /etc/opendkim/keys/naked.com 鍵生成 cd /etc/opendkim/keys/nake…

ゾンビDBの作り方 at GCP

概要 毎朝、前の日に本番DBから取ったバックアップを元に復活するDBをGCPでも作りました。 やってることは、 mysql止める 古いvolumeをアンマウント 古いvolumeをdetach スナップショットから新しいボリュームを作成 新しいvolumeをattach 新しいvolumeをマ…

ゾンビDBの作り方 at AWS

aws

概要 開発メンバーからの要望で毎日、本番DBから取ったバックアップを元にデータをリフレッシュするDBを作りました。 何度データを壊しても次の朝には復活してるので社内ではコレをゾンビDBと呼んでいます。 やってることは、 1.定期的に取ってるsnapshotか…

capistranoでデバッグのため、ダミータスクを動かしてみる

概要 デプロイの処理を1個づつ試しながら確認したい場合が多々有ります。 そんな時はCapfileにダミータスクを追加して、そのタスクを直接動かして動作を確認してみましょう。 Capfile 例)GCPのインスタンスリストをコマンドから取得する処理を確かめてみる。…

Google cloud shell使ってみました

gcp

Google cloud shellって? 日本語だと下記のページで概要を掴めるかと思います。 Google Cloud Platform Japan 公式ブログ: Google Cloud Shell の無料期間が 2016 年末まで延長 使ってみました 特に設定の必要も無くGCPのコマンドが使えますし、普通にlinux…

local-ssdを積んだインスタンスのサイズ変更はできない

gce

概要 local-ssdを積んだインスタンスのサイズ変更はできないので、気をつけましょう。 (local-ssdについては下記を見てもらうと雰囲気はつかめるかと思います。) Google for Work Japan 公式ブログ: [GCP] Local SSD がどなたでも利用できるようになりまし…

GCPでサブネットが使えるようになった。

gcp

概要 AWSでは「VPC内でサブネットを切ってAPPのネットワークとDBのネットワークを分ける」みたいなことができますが、GCPでは出来ませんでした。が、いつの間にかGCPでもサブネットを切ることが出来るようになったようです。 GCPのnetworks 以前のGCPではnet…

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

gce

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

slackにslow query数を出してみた

概要 注意しなきゃいけ無いんだけど、気が付いたらslow queryがいっぱい出ていた・・・・。なんて事を回避するために、とりあえず毎日slackにslow query数を出すようにしてみました。 Webhook URL slackにslow query数を投げるためのWebhook URLを取得します…

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 "mas…

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} rb…

SSL証明書の期限を調べてみよう

概要 ブラウザで確認する方法もありますが、ここではコマンドで確認する方法を述べます。 コマンド実行 -connect で調査したいFQDNを指定します。 openssl s_client -connect nativeapi.naked.com:443 < /dev/null 2> /dev/null | openssl x509 -text | grep…

DBバックアップスクリプト(AWS版)

aws

概要 mysqlサーバのデータを定期的にスナップショットでバックアップしていました。 シェルスクリプト バックアップ #!/bin/sh date=`date '+%Y%m%d_%s'` DESCRIPTION="DB_backup_$date" VOLID="vol-783ac837" /usr/local/bin/aws ec2 create-snapshot --vol…

HTTP/HTTPS balancerに証明書を設定する

概要 GCPでもHTTP/HTTPS balancerにSSL証明書を持たせアクセラレータのような使い方ができます。 本投稿ではHTTP/HTTPS balancerに証明書を設定する方法を述べます。 設定方法 「HTTP load balancing」で設定したいバランサーをクリックして選択。 「Incomin…

証明書をパスワード付きで作ってELBに怒られたときの対応方法

aws

ELB用で使うSSL証明書をうっかりパスワード付きで作ってしまうと、いざuploadする段階で、 Error: Private key must not be encrypted with a passphrase. と言われて拒否されます。_ノ乙(、ン、)_ そこでPrivate Keyを何らかのテキストファイルに保存して、 o…

消費税が海の向こうまで追って来た。

aws

ちょっと前の話になりますが、2015/10のAWS料金を確認したところ、いつもよりも明らかに高い・・・。 慌ててサポートに問い合わせると以下のようなお返事が来ました。 2015年税制改正により、国境を越えた役務の提供に係る消費税の課税の見直しが行われまし…

ELB等で使うSSL証明書を消してみよう

aws

ELB等で使う証明書はデフォルトで10個しか入れておけません。 期限切れなど必要の無くなった証明書は消しましょう。 確認 今格納されている証明書一覧を表示する aws iam list-server-certificates 結果がjson形式で表示される。 { "ServerCertificateMetada…

CloudFrontで使うためのSSL証明書をアップロードしてみよう

aws

2015/3/23時点でCloudFrontで使う証明書はCLIでしかアップロードできません。コマンドは下記の通り。 aws iam upload-server-certificate --server-certificate-name cdn.naked.com --certificate-body file://cert --private-key file://private --certific…

mysqlをサービス投入前にウォーミングアップしよう

概要 mysqlを再起動するとメモリに乗っていたデータがなくなり、そのままサービスに投入するとメモリにデータが載るまで負荷が高くなります。 そこでMySQL::Warmerを使ってサービス投入前にウォーミングアップしましょう。 インストール apt-get update apt-…

GCEでオートスケールを停止してみる

概要 デプロイのタイミングでオートスケールが発動すると色々困るので、止めます。 実行 下記のコマンドで停止可能。integration-201510290920はオートスケールを止めたいインスタンスグループの名前です。 gcloud compute -q --project "naked.co.jp:api-pr…

GCEでNATインスタンスを作ってみる

概要 GCPではexternal IPを持たないインスタンスはインターネットと通信できません。しかしDBサーバのようにセキュリティ的にexternal IPを持たせたくないけど、時々apt-getなどでソフトウェアを更新したい場合もあります。 そこで、NATインスタンスをdefaul…

GCEではquotasに気をつけよう

gce

EC2でもインスタンスの可能起動数に上限があるようにGCEにも色々なリソースに上限値が設けられてます。 オートスケールでインスタンスを大量に起動したりすると、この上限値にブチ当たり欲しいインスタンス数が確保できず、サービス影響が出る可能性がありま…

GCEはOPB25

ぱっと見た感じ、意味不明なsubjectですね。 「OPB25」は「Outbound Port 25 Blocking」の意味で、スパムメールなどを撲滅するためにGCE環境から外部にメールを直接送れないように25番portを塞いでいます。 なのでGCE環境からメールを送信したい場合はport番…

GCEではinternal IPが任意に設定できない代わりに、内部DNSにホスト名が自動で設定される。

長いsubjectのとおり、GCEではインスタンスのinternal IPを任意に設定することは出来ません(EC2では出来ます)。internal IPはインスタンスを起動すると自動で割り振られます。 上の図のようにExternal IPは「static IP address」を選ぶことで同じIPを使い回…

Google cloud platform はじめました。

Google cloud platform。略してGCP。GoogleがやっているCloudサービスですね。 gmailとかyoutubeとかと同じインフラを使えるって事で、ちょっと楽しみです。 ちなみにamazonと比較すると aws = gcp ec2 = gce (google compute engine) s3 = google cloud sto…