https対応した

なんとなくこのブログをhttps対応した。 blogを見る分にはhttpでも問題ないんだけど、記事を書いたりする管理画面へのログインがhttpで気持ち悪かったため対応することにした。 昔wordpressを使ってたときには管理画面だけオレオレ証明書でやっていて、ログインのときにchromeの警告画面が出てちょっとダサかった。最近は、Let's Encryptを使うと暗号化のための証明書が無料で作れるらしいので、ためしに使ってみた。 設定は以下などを参考にした。コマンドラインからやるだけなので、本当に簡単。10分くらいでできる。 光の速さのWEBサーバー(nginx)をlet's encryptでSSL化及びHTTP/2化。ついでにセキュリティ評価をA+にする。 - Qiita 今までのhttpのURLに来た分はリダイレクトされるので問題ない。 弊害として、はてブなどURLに紐づくカウントが引き継げないとか、そういうものはいくつかありそうだけど気にしないことにする。…

terraformを半年ほど使った感想

前回はconsulの感想について書いたけど、今回はterraformについて書いておく。 terraformはインフラ環境を構築するためのツールで、terraformを使うことでインフラ環境の構築を、設定ファイルとしてバージョン管理できるようになる。 自分はAWSで使ってたが、GCPやHerokuなどさまざまなインフラ環境の構築に使える。 AWSならCloudFormationを使うと、似たようなことができるのかな?使ったことないのでよく分からないが、後輩はCloudFormationの方がいいかもと言っていた。 terraformを使ってよかったところ terraformを使うと、たとえばAWSでSecurityGroupを作って、RDSを立ち上げて、EC2を立ち上げるときに、前に設定したSecurityGroupを割り当てて、EC2内の環境変数にRDSのアドレスを設定して・・・みたいなことが比較的カンタンにできる。 設定方法は、日本語の記事だと以下が分かりやすいかな。 AWSでTerraformに入門 | Developers.IO あとは、terraform applyというコマンドで実際に構築するまえに、terraform planというコマンドで何が変わるか確認できるので、安心して実行できる。 依存関係も見てくれるので、EC2の設定の中でRDSのアドレスを参照していれば、その依存関係を考慮して実行してくれる。 terraformの設定ファイルをgitで管理していたので、インフラの構成の変化がバージョン管理できる点が一番よかったと思う。設定を変えたらプルリク出してレビューしたり、terraform planを見てレビューしたり、といったことができた点がよかった。 terraformを使うときに気をつけるところ terraformも万能ではないので、いろいろ気をつけるべきことがある。自分がハマったところを書いておく。 terraformでconfigurationをやらない方がいい terraformでインフラを作るまでは良いのだが、その後EC2サーバ内の、たとえばnginxのconfを設定したり、いろいろサービスを動かすための設定をサーバ内ですることになると思う。terraformにはProvisionerという仕組みがあり、remote-execを使えばいろいろ設定することができるので、…

consulを使って半年運用した感想

毎週書く予定だったのにすっかり間があいてしまった。細かいtipsはQiitaに書いたりしてるので、こっちに書くのはある程度まとまった話にしたいと思う。 ここ最近開発・運用していたサービスが落ち着いたので、一度感想を書いておこうと思う。一人でインフラの設計、開発、運用までやるのは初めてだったのでいろいろ勉強になった。 terraformとconsulを半年くらい使ってるので、感想を書いておく。今回はconsul。 サービスの要件 サービスはAWS上で動かす。 いわゆる普通のWebサービスと違うのは、Websocketサーバのようなコネクションを持つサーバがあり、単純にELBで負荷分散できない部分がいくつかあること。イメージとしては、ニコニコ生放送みたいな、動画のストリームを受けて配信するサーバ(サーバAとする)と、リアルタイムにコメントをブロードキャストするサーバ(サーバBとする)、のようなものに近い。 サーバAは配信するクライアントとコネクションをはるタイプのサーバだけど、サーバ側のCPU負荷が高くサーバ1台で5-10本くらいしか捌けない。 サーバBは、チャットルームのようなものが存在して、部屋に入っている人同士がWebsocketサーバ経由で大量のメッセージを送り合う。そのため、同じ部屋に入ったユーザは同じサーバに割り当てる必要があり、部屋ごとにユーザ数やメッセージ数が異なるので均等に負荷を割り振ることが難しい。 サーバA、Bともに負荷が上がると新たに増やす必要があるし、全てのコネクションが切れるまでサーバを落とすことはできない。 あとは、普通のAPIサーバやWebのフロントサーバがあるけど、それはELBがあれば問題ない感じ。 Consulを使う ユーザが新たに配信を始める際、どのサーバA・Bに接続させたらよいか判断するためには、それぞれのサーバのリストと負荷状況を知る必要がある。また、サーバ台数を増やしたり減らしたりすることがあるので、そのサーバに接続してもいいのかどうかも知る必要がある。 そこで、サーバの管理にconsulを利用することにした。 consulとは…

nginxでpagespeedとSPDYを有効にする

nginxをpagespeedとspdyに対応した時のメモ。 もともとこのブログはリソースの数も種類も少ないのであまり効果がないと思うけど(むしろ遅くなるかもしれない)、勉強と調査をかねてやってみた。今はデフォルトではオフにしてる。 間違っている部分があるかも。 pagespeedとSPDYの説明は、どっか見てください。 apacheのmodpagespeedは安定してると思うが、nginx向けngxpagespeedはまだ不安定な部分もあるらしいので、使う際には十分にテストした方がよいと思う。 apacheにはmod_spdyがあるが、nginxではパッチを当ててビルドすることで対応させることができる。 インストール 環境は、ubuntu serverのたしか11.04で32ビット。 インストールの前に以下を入れる。 sudo apt-get install git build-essential make zlib1g-dev libpcre3 libpcre3-dev 作業ディレクトリを作っていろいろ取ってくる。 nginxは、2013/02/01時点で最新だった1.3.11を使ってる。 mkdir -p ~/ngx/src cd ~/ngx/src curl -O http://nginx.org/download/nginx-1.…

fluentd使ってdstatの結果をgrowthforecastで表示する

dstatでサーバの状態を取得して、fluentdで集めて、growthforecastでグラフにする、というのをやってみました。 dstat dstatというのは、CPU使用率やメモリ使用量などなどの情報を手軽に取得できるツールです。 とっても簡単に使えます。 使い方は以下のサイトを参考にしてみてください。 dstat が便利 | Carpe Diem dstatの万能感がハンパない - (ひ)メモ まずはdstatが必要なのでインストールします。 dstatをfluentdにつなぐのに、shun0102/fluent-plugin-dstat を利用します。 ただ、outputのフォーマットがそのままgrowthforecastに入れるのにうまくつなげなかったので、少しいじって使いました。tjun/fluent-plugin-dstat 追記 しかし、以下の記事のようにやればいじることなくdstatからgrowthforecastに投入できるので、このようにやることをおすすめします。 dstatをfluentd + GrowthForecastで可視化する - Qiita 追記終わり。 設定はこんな感じ type dstat tag dstat option -cmdn delay 5 growthforecast growthforecastは、APIに投げたデータをグラフィカルにしてくれるツール。 GrowthForecastというグラフ表示ツールで捗る話 -…