Nginx の入手
gRPC サポート機能は 1.13.10 で追加されたようですので、1.13.10 以降のモジュールを入手します。
Introducing gRPC Support with NGINX 1.13.10
https://www.nginx.com/blog/nginx-1-13-10-grpc/
ダウンロードサイト
http://nginx.org/en/download.html
Nginx のインストール
入手した圧縮ファイルを任意のディレクトリに展開します。インストーラーはありません。設定ファイルの記述を変更し、実行ファイルを起動するだけです。
Nginx を起動するには、nginx.exe の格納ディレクトリでコマンドプロンプトを起動し、次のコマンドを実行します。
start nginx
Nginx を終了するには、nginx.exe の格納ディレクトリでコマンドプロンプトを起動し、次のコマンドを実行します。起動したときのコマンドプロンプトを閉じるだけでは終了しません。終了コマンドを実行する必要があります。
nginx -s quit
Nginx が起動しているかどうかを確認するには、インターネットブラウザで http://localhost:80/ を表示します。「Welcome to nginx!」ページが表示されれば成功です。
既定のポート番号は 80 です。ポート番号を変更するには、設定ファイル内の記述を書き換えます。次項を参照してください。
gRPC のロードバランス設定
展開先の conf ディレクトリ内にある nginx.conf に設定を追加します。
http {
server {
server_name localhost;
# 既定のポート
# Welcomeページのポート番号を変更するにはこの番号を変更
listen 80;
location / {
root html;
index index.html index.htm;
}
# gRPC用のポート
# クライアントアプリケーションからはこのポートに対してリクエスト
listen 50001 http2;
# gRPCのサービス
# スラッシュの後にサービス名を記述
location /SampleGrpcService {
# ロードバランスさせるサーバーグループ名を指定
grpc_pass grpc://grpcServers;
# 502エラーが発生したときのレスポンスを指定?(未検証)
error_page 502 = /grpcError502;
}
location = /grpcError502 {
internal;
default_type application/grpc;
add_header grpc-status 14;
add_header grpc-message "unavailable";
return 204;
}
}
# ロードバランスさせるサーバーグループ
upstream grpcservers {
server localhost:50051;
server localhost:50052;
}
}
gRPC アプリケーションの実行
・サーバーアプリケーションを二つ起動します。一つはポート 50051、もう一つはポート 50052 を使用します。
・クライアントアプリケーションから、ポート 50001 に対してリクエストを送信します。
既定ではラウンドロビンで振り分けが行われます。交互(数リクエストごと)に 50051, 50052 に対してリクエストが送信されました。
Nginx のアクセスログには次のように記録されました。
127.0.0.1 - - [15/Apr/2018:17:25:40 +0900] "POST /SampleGrpcService/GetData HTTP/2.0" 200 4213 "-" "grpc-csharp/1.10.1 grpc-c/6.0.0 (windows; chttp2; glamorous)"
サーバーがダウンしていたら?
片方(50052)のサーバーアプリケーションを終了させた状態で実行したところ、50052 に対するリクエストでタイムアウトが発生した後に 50051 に対して同じリクエストが送信されました。このあたりの挙動は動作設定で変えられると思いますが、未確認です。
0 件のコメント:
コメントを投稿