Carpe Diem

備忘録

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

EnvoyのFrontProxyを用意してgRPCの負荷分散をする

概要 gRPCはHTTP/2プロトコルをベースとしたRPCです。 なのでコネクションが永続化され、その中で複数のストリームがリクエスト・レスポンスを取り扱うため負荷分散に注意する必要があります。 今回はEnvoyというgRPCに向いたproxyを使うことでそれを実現し…

curlのresolvオプションで名前解決

背景 ドメイン移管の関係でCloudFrontのDNSレコードをDNSimpleからRoute53へ移そうとしていたのですが、完全な移管手続前にRoute53側のレコードでエッジサーバにちゃんとアクセスできるか確認する必要がありました。 digのNS指定を使えばエッジサーバのIPは…

GoでGraceful Shutdown

Go

概要 以前はGraceful shutdownをするために以下のようなライブラリを使用していました。 github.com しかしながらGo 1.8 からGraceful Shutdown機能が標準で提供されるようになりました。 今回はその導入方法を紹介します。 環境 golang 1.10.3

Consulを支える技術

概要 ConsulではSWIMやRaftといった技術を使っています。 今回はそれらを説明します。 環境 Consul 1.1.0 SWIM Gossip Protocol SWIMはGossip Protocolの一種で、主に クラスタのメンバ管理機能 メンバの障害検出機能 イベント伝播 で使われています。

Dockerの埋め込みDNSサーバを使ったService Discovery

概要 Docker 1.10からユーザ定義のネットワークでは内蔵DNSサーバが用意され、名前解決ができるということを以下の記事で述べました。 christina04.hatenablog.com 実は単に名前解決ができるだけでなく、Service Discoveryとしても機能するのでその紹介をし…

ECS + awsvpc + Consul でService Discovery

概要 ECS + awsvpc + Consul でService Discoveryができるようにします。 最終的にConsulにDNS問い合わせすることでECSのコンテナのIPを知ることができるようにします。 環境 Consul 1.1.0 Task Definition 結論を先にいうと以下のようになります。 [ { "nam…