インフラブログ

とあるWEBサイトのインフラを構築運用するメモ

2014-01-01から1ヶ月間の記事一覧

unicorn/resqueのプロセス管理にeyeを使う

unicorn,resqueのプロセス管理に今回はeyeを使うことにします。 はじめBluepillで設定していたのですが、Ruby2.0環境だとBluepillのプロセスがゾンビで溜まりまくるという問題があり、代替をさがしていたところeyeというのがありました。God、Bluepillを参考…

nginxでソーリーページを返す - メンテ以外の場合

以下の状況の場合はnginxでエラーハンドリングを行います。 リバースプロキシしてappsサーバからの応答が一定以上ない場合のタイムアウト appsサーバからのステータスコードが40x,50xの場合 nginxが40X,50Xのステータスコードでレスポンスを返すと、プラット…

メール以外の方法でもアラートの通知を行う(Twilio)

アラート通知の続きです。 サービスダウン検知 MSPに運用を手伝ってもらっていればサービスダウンが発生した場合でも電話で障害連絡してくれたり一次対応をやってくれたりするのですが、今回はスモールスタートでの運用ということもありMSPを使うことを勘定…

メール以外の方法でもアラートの通知を行う(1)

前に書いた記事がデプロイの話で、WEBサイト環境構築というよりかは運用的な記事でした。今回はさらに脱線してアラートの通知について書きます。 デプロイの設定作業の時に色々参考記事を漁ってたのですが、デプロイ開始、終了を音声で通知したりJenkinsのビ…

Capistrano(3.x)でデプロイする

AWS内のステージング環境をセットアップしているとアプリが動くところを早く確認したくなり、過去の案件で使われてたCapistranoの設定を流用してさっさとデプロイしようとしたところ、最近はバージョンが3らしく、書き方も大きく変わっているようです。 Capi…

appサーバ(Rails)周りの準備

appサーバ(Rails)周りの準備 アプリそのものはプログラマーさんが制作していて、私のほうでは作ったアプリをサーバ上で動かす環境とデプロイ周りを担当します。 以前にもRails環境のサーバをいくつか構築したことがあり、過去を思い出してみると、 Lighttpd+…

nginxでのプロキシ

nginxに来たアクセスをインターナルなELBにフォワードしてappサーバ群に振り分けてもらいます。 インターネット | nginx | ELB | appサーバ群 nginxのプロキシ先にELBを指定している場合このような問題がおきますので、参考記事のように設定しておきます。 h…

アクセスログのフォーマットをltsv形式にする

nginxが出力するアクセスログをfluentdで取り込み、それをElasticSearchやMongoDBに集約する予定なので、取り込みやすいようにログフォーマットをltsv形式にします。 必要そうな項目を一通り羅列しました。 upstream_statusはappsサーバからのステータスコー…

メンテ中の場合、nginxでメンテ画面を返す。

メンテ中のメンテ画面 Capistranoでのメンテナンス切り替えはmaintenance.htmlファイルを配置するかどうかというものなので、nginx側で下記のように設定してメンテ画面を表示するのが一般的かと思います。 こういう感じ if (-f $document_root/system/mainte…

nginxで同一ユーザからの過度なアクセスを制限する。

連打対策してるのをユーザにわかってもらえる程度の制限 今回運用するWEBサイトではユーザがほぼ同タイミングでPOSTのボタンを数回連打したり、もしくはツールなどを使って一定期間同じリクエストを延々と飛ばしてきたりする可能性が普通にあるらしく、ある…

内部用の名前解決DNSを用意する

物理サーバでインフラ環境を作っていた時は、サーバに固定IPをつけたりネットワークアドレスも「10.1.1.0/24がAPPSセグメントで10.1.2.0/24がDBセグメントで・・・」と設計することがほとんどでした。 EC2を試した時はデフォルトでDHCPな環境だったので、AWS…

リバースプロキシ用のnginxをインストールする

WEBサーバ(web)とアプリケーションサーバ(apps)をリバースプロキシ構成にします。WEBサーバは今回nginxを採用します。 WEBサイトの構築運用にあたってWEBサーバ側で行いたい要件が以下のようにあり、nginxに設定していきます。 nginxがどれくらい負荷に強い…

システムモニタのグラフ生成にMuninを使用する

Monitでシステムモニタ、プロセス監視も行うのですが、プラスでMuninも導入します。 Muninでは各種システムモニタ、グラフ生成、しきい値超え検知時の通知など行います。 導入するパッケージは各インスタンスに導入するmunin-nodeとmunin-nodeから情報を収集…

Monitでインスタンス内のシステムモニタ、プロセス死活監視する

各EC2インスタンスにMonitを導入して、CPU使用率、メモリ空き容量、Disk容量といった数値の監視とプロセスの死活監視を行います。例えば、Disk容量が90%超えを検知したら指定のメールアドレスに送信することもできます。 モニタをグラフで見る機能はないので…

HAProxyでMySQL slaveの通信を分散する

初めにだらだらと概要を書く MySQLの負荷分散として更新系のmaster、参照系のslaveでインスタンスを複数台用意することにします。slaveについては負荷に応じて台数を増減する予定です。 アプリからみてslaveサーバが何台あるか意識しなくてもいいようにHAPro…

クライアント側の名前解決を設定する

各インスタンスのリゾルバを設定する VPC内インスタンスの名前解決は下記の順に行います。 /etc/hosts見る /etc/resolv.confに書かれたDNSサーバに問い合わせる /etc/resolv.confは下記のように設定します。 options single-request-reopen search example.i…

最初のec2インスタンスを作る

AWS management consoleのEC2 Dashboardから早速EC2インスタンスを一つ作り、これをテンプレートマシンと呼ぶことにします。 このテンプレートマシンに一通りのソフトウェア、設定を手でごりごり入れていきます。 アプリケーションサーバが1台ほしいという時…

AWS内の全体構成を図にした

構成図 今現在ステージング環境をこの構成で動かしています。 最初この構成内のサービスの機能や役割についてだらだらと書いていたら、やたらかったるい長文になってしまったので書き直しました。 思う事がある所だけ書き留めておきます。 VPC環境下に構築す…

やること、要件など

下記が私の作業分担と認識してまして、このブログのネタになるものであります。 やること インフラ周りの新規構築 Railsで動くオープンソーシャルなWEBサイト一式 デプロイ周り リリース後の運用保守 障害時対応 負荷に応じてのインスタンス等リソース調整 …

はじめに

はじめまして とあるWEB屋で働いています。専任のインフラ担当者が日経先物225で大損ぶっこいて逃亡したらしく、新規案件の構築運用を急遽私がすることになりました。 インフラ周りが全く未経験というわけではないのですが、AWSクラウドを使うことや、オープ…