0
goサーバーをシャットダウンして再起動する必要がなくても、それを展開する方法があるのか不思議でした。私は、ASP.NetやPHPなどの一般的なソリューションが、ユーザーセッションでこれをシームレスに実行することを知っています。シームレスパッチ再起動せずにGoサーバーを展開する
ステートレスセッションはこの問題を処理しますか?
goサーバーをシャットダウンして再起動する必要がなくても、それを展開する方法があるのか不思議でした。私は、ASP.NetやPHPなどの一般的なソリューションが、ユーザーセッションでこれをシームレスに実行することを知っています。シームレスパッチ再起動せずにGoサーバーを展開する
ステートレスセッションはこの問題を処理しますか?
nginxまたはhaproxyのような要求ルータを導入することで、最も単純なアプリケーションサーバーでも、このようなシームレスな展開を実現できます。これらのルータの両方を使用すると、要求を異なるサービス(リバースプロキシと呼ばれます)に転送し、接続を破棄せずに設定をリロードすることができます。一例として:
0.0.0.0.80
に耳を傾け、127.0.0.1:5001
にこれらの要求を転送するようにルータを設定します。127.0.0.1:5001
でアプリケーションサーバーv1を実行します。127.0.0.1:5002
でリッスンするようにアプリケーションを構成します。127.0.0.1:5002
に転送するように変更します。ルータに設定をリロードするように指示します。これは単純化されたハイレベルの概要です。 (たとえば、ループバックインターフェイス上でUNIXソケットを使用することをお勧めします)。この種の展開は、通常、カナリアまたはblue-green deploymentと呼ばれます。
あなたが探しているものかもしれませんが、まだ安定しておらず、afaikでのみ動作します:https://appliedgo.net/plugins/ – hermancain
[this](https:// github .com/facebookgo/grace)は役に立ちますか? – tkausl
@hermancain、プラグインはアンロードできないので、どのようにすれば十分か分かりません。 – JimB