Debianにおけるパッケージ流通はaptが基本的なものになっている。いまどき完全なスタンドアローンで動作しているような例もすくないので、なにかしらaptの御世話になっていることは多いかと思う。
昔のaptの実装ではhttp redirectができないので、http redirectに頼らない誘導方法になっている(現在のaptの実装ではhttp redirectができるので、http.debian.netというサービスが誕生している)。
check_serverの実装自体はRails3.2です。
動作チェック、文句、要望について
- チェックサーバの動作は http://cdncheck1.araki.net/view/index で確認できます。
- https://github.com/armaniacs/CnameQRV4 で内容を見ることができるので、Issue管理もそちらでお願いします。
- サーバ追加してくれといった要望もそちらでおねがいします。
以下、内部の説明。
DNSサーバは dns.s.araki.net という名前で、dns_balanceが動作しています。
- どのDNSを使うかはレイテンシベースのルーティングで3リージョンから選択している。
- DNSであるdns_balanceは定期的にcheck_serverに対して最新のサーバ生死情報をELBのURL ( http://cdncheck1.araki.net/status/alive )に対してとりにいく。
- 入手はJSONが使われる。この取得のためのプログラムは gae-surrogate.rbという名前
チェックサーバは、
- チェック対象である世界中のDebianミラー200台をSQSに順次登録する。
- チェックサーバの動作は http://cdncheck1.araki.net/view/index で確認できる。
チェックするためのコードはcheck-receive-forward.rbというファイル。
- SQSからチェック対象ホストを1つ抜き出す。
- チェックは対象ホストの http://対象サーバのアドレス/debian/project/trace/ftp-master.debian.org を確認し、最終ミラー時刻が8日以内であることを確認する。不達であったり遅延が大きい場合には"alive=0"として登録される。
- チェック終了したらSQSから消す。
- チェック結果はSimpleDBに登録
地理情報の話やAS情報の話は又の機会に。