Amazon EC2 Container Serviceでサービスを構築する① 〜 ECSとは? 〜

新しいサービスの本番環境を構築するにあたって、タイトルにも上げたとおりAWS ECSを使って構築してみようと思う。

なぜ使うのか

  • 現在他のサービスでdockerを使ってWebアプリケーションサーバーを管理しているから
  • EC2のダッシュボードでも、せやかて工藤、dockerつこてるならECSつこてみ、と言われたから
  • 基本方針としてインフラ系の管理を分散させたくなく、現状AWSを不満なく使用しているから(ちょい嘘)
続きを読む

yesodで自動でテーブル作らない、変更しないメモ

Application.hsのrunMigrationをprintMigrationにする。
とりあえずこうしとく。そうすればこうしたほうがいいんじゃない?って情報を出力するだけ。

import Database.Persist.Sql (runMigration)

↓ ここをこう

import Database.Persist.Sql (printMigration)
(Database.Persist.runPool dbconf (runMigration migrateAll) p)

↓ ここをこう

(Database.Persist.runPool dbconf (printMigration migrateAll) p)

詳しいことはまだ良くわかってないけど、
とりあえずautomatically migrationはyesod界では便利という位置づけっぽい。
今のところ邪魔にしか感じてない。

OpenLDAPのお勉強①

LDAPってなによ?

Lightweight Directory Access Protocol

LDAPっちゅうんはLightweight Directory Access Protocolの略なんやで〜
つまり、ディレクトリにアクセスする軽量なプロトコルやな!
もうわかったな!
じゃあの

ディレクトリサーバー

いや分からん。っちゅう者のために説明しちゃる。
まず、ディレクトリサーバーちゅうんがおるんや。
そいつは、ネットワーク上でユーザー情報、組織情報を保存、管理するんや。そんでネットワーク上におるクライアントに対して、保存しとる情報を提供するサーバーのことを言うんやな。

LDAPとディレクトリサーバー

クライアントはディレクトリサーバーで認証を受けた後、やってもええで〜って言われとる操作をすることができるんや。
そのためには、サーバ/クライアント間でプロトコルが必要となるわな、そこでLDAPさんの参上や。他にもあるらしいんやが、現在主に使われとるのがLDAPちゅうこっちゃな。

nginx ロードバランシング serverのパラメータまとめ

書式

upsteram appserver {
  server address1 [parametaers];
  server address2 [parametaers];
}

serverに指定可能なパラメータ

name value type default
weight number 1
max_fails number 1
fail_timeout time 10s
backup no value
down no value

weight

  • サーバーの比重設定 例
upstream astamuse_app {
  server app1.example.com weight=5;
  server app2.example.com weight=2;
  server app3.example.com;
}

この場合、8リクエストごとに、一番上に5、真ん中に2、一番下に1リクエスト割り振られる

max_fails

  • fail_timeoutで指定された時間内にサーバーに対する通信の最大試行回数
  • この回数を超えた場合、サーバーは停止状態として扱われる
  • 0はこの機能を無効
  • 失敗はproxy_next_upstream,fastcgi_next_upstreamで定義される(http_404エラーは除く)

fail_timeout

2つの意味をもつ

  • 時間内にmax_failsで指定された回数、サーバーとの通信が失敗すると、サーバーが停止状態とする
  • サーバーが停止状態とみなしている時間。停止状態から設定した時間経過すると、稼働状態とみなすようになる。

backup

  • バックアップサーバーの印
  • バックアップサーバー以外が全て停止、またはビジーの時のみこのサーバーが使用される

down

  • サーバーが常に停止しているものとして扱う