今日もみなさんどんどん ssh でどっかのホストにログインするのにお忙しい事と思います。最近のプロジェクトでは、ぼくもどんどん ssh でどっかのホストにログインするのにお忙しくて、ログインし続けていたら一日が終わる。 さて、ssh を使うときの個人用設…
gRPC の TLS を NLBで終端しようと思っていたらずいぶんとトラブってしまいました。 結局のところその原因は ALPN にあったのですが、ぼく自身が ALPN に詳しくないため、なかなかよくわからなかった。 このため、きちんと ALPN を理解しようというのが本エ…
gRPC には、当然ながらクライアントサイドでタイムアウトが設定できます。このとき、HTTP/2 上でどういうフレームが流れるのかを整理してみます。 タイムアウト設定 golang node HTTP/2 での挙動 まとめ タイムアウト設定 golang Golang の場合は、 context.…
gRPC には metadata という概念が存在します。 これは RPC においての付加情報ということになっており、golang からの扱いは簡単です。ただし、node.js を client として使う場合にどのようにして metadata を「取得する」かあまり情報がなく苦しみました。 …
このエントリは、 Qiita に投稿したエントリのマルチポストです。 tl;dr TIME-WAIT を含む状態遷移 TIME-WAIT の存在目的 Wandering Duplicate 問題への対策 その時間って TCP 切断に至るフローの最後の ACK が届かないケースへの対策 A の立場 B の立場 問…
今回は、gRPC で SSL 通信を行おうと思います。 環境としては、サーバは golang、クライアントは node.js という構成です。 ルート認証局、証明書を作成する。 golang の gRPC サーバに組み込む Node.js client を SSL に対応させる node のソース ルート認…
gRPC では HTTP/2 を使っており、HTTP/2 では 1 本の TCP のコネクションの上で stream を多重化します。このため、TCP のコネクションはずっと張りっぱなしになることが多く、どのようにしてこのコネクションを維持するかが重要な場合があります。 問題とな…
Go で gRPC 周りをデバッグするときに設定しているとデバッグするのが楽になる環境変数がいくつかあります。このあたり、情報が色んな所に散財しているので、ちょっとまとめますね。 GODEBUG その他 GRPC_VERBOSITY, GRPC_TRACE GRPC_GO_LOG_SEVERITY_LEVEL,…
なぜかおかしな振る舞いをするサーバプログラムをデバッグするというのは、それなりに骨の折れる作業です。大量のソースを前に「ここが怪しい」と言いながらデバッグログを埋め込むこともあるでしょう。また、lsof や ss といったコマンドやスタックトレース…
雑談ネタです。 4 月に入り、自宅の Mac をクリーンインストールし直しました。 最近どうも多忙にかまけてしまい、この Blog も含めて自宅での IT 関連のモチベーションが湧かない状況でした。全てを一新することで、もう一度あの熱い想いを思い出せないか、…