比如有5台服务器跑了5个node项目,然后前面使用nginx做负载均衡
比如项目访问量很大,然后增加了一些新的功能,项目需要升级 5台服务器逐个升级,怎么能保证在升级的过程中不会影响访问
例如 现在要升级A服务器上的node项目,但是A服务器上有许多请求 如果直接升级的话,请求可能就会没有响应,如果项目涉及到对数据库操作,可能会产生脏数据
我能想到的一种方案是 事先发公告 没有流量的时候再升级
我想请问还没有其它方案,在不影响用户请求的情况下对服务进行升级呢
认证0级讲师
単に応答しないだけです (TCP 接続が中断されていると思われます)。この方法では、バックエンドを削除して、バックエンドをアップグレードして、再度追加することができます。
しかし、「アクセスに影響を与えずに」これを解決する必要があるだけでなく、古いバージョンのフロントエンドと新しいバージョンのサーバーを共有可能にする必要もあります。
ダーティデータも問題です。すべてのリクエストが正常に終了することを期待すべきではなく、ダーティ データを (オンサイトまたはその後で) クリーンアップするメカニズムが常に存在する必要があります。
サーバーがグレースフル リスタートをサポートしている場合、これはさらに便利です。スムーズな再起動は自分で実装することも、フレームワークやライブラリによって提供されることもあります。
そう考えるのは間違いです。5 台のマシンに異なるプロジェクトをデプロイしない限り、アップグレードはシャットダウンするしかありません。そうでない場合は、他に何ができるでしょうか。つまり、同じプロジェクトを 5 台のマシンにデプロイするということです。次に、アップグレード時に、サービスに影響を与えないようにする方法を検討します。次に、ここで、リクエストを 5 台のマシンに分散する方法を考えます。マシン上で、実行中に応答できないことが心配な場合は、最低の時点で 5 台のマシンを 4 台のマシンに変更し、再度追加してください。アップグレード プロセスを実行し、キャッシュ時間を調整します。マシンが 5 台ある場合、キャッシュは存在しません。 。 。
アップグレードは通常、早朝に行われます。これは、何か問題が発生しても、それほど大きな影響が及ばないためです。
サーバーのバランス調整とダウングレード、アップグレード、および再起動を担当します
影響をまったく受けないことは不可能です。唯一の方法は、影響をできるだけ目立たないようにすることです。JD.com のサーバーは、アップグレード時に頻繁にアップグレードされます。 、メニューを開くことができず、何も表示されません。はい、ずっと見て回っていましたが、コンテンツが出てきませんでした。したがって、基本的にアップグレード時には、サーバーはコンテンツを表示しないフレンドリーなインターフェイスに切り替えられ、アップグレード後に元に戻ります。
1 つずつアップグレードし、アップグレード プロセス中にトラフィックを他のサーバーに転送します
私たちのプロジェクトはリリースとプロセス管理に pm2 を使用します
公開時にユーザーは影響を受けません
ホットデプロイメント
グレースケールリリース
単に応答しないだけです (TCP 接続が中断されていると思われます)。この方法では、バックエンドを削除して、バックエンドをアップグレードして、再度追加することができます。
しかし、「アクセスに影響を与えずに」これを解決する必要があるだけでなく、古いバージョンのフロントエンドと新しいバージョンのサーバーを共有可能にする必要もあります。
ダーティデータも問題です。すべてのリクエストが正常に終了することを期待すべきではなく、ダーティ データを (オンサイトまたはその後で) クリーンアップするメカニズムが常に存在する必要があります。
サーバーがグレースフル リスタートをサポートしている場合、これはさらに便利です。スムーズな再起動は自分で実装することも、フレームワークやライブラリによって提供されることもあります。
そう考えるのは間違いです。5 台のマシンに異なるプロジェクトをデプロイしない限り、アップグレードはシャットダウンするしかありません。そうでない場合は、他に何ができるでしょうか。つまり、同じプロジェクトを 5 台のマシンにデプロイするということです。次に、アップグレード時に、サービスに影響を与えないようにする方法を検討します。次に、ここで、リクエストを 5 台のマシンに分散する方法を考えます。マシン上で、実行中に応答できないことが心配な場合は、最低の時点で 5 台のマシンを 4 台のマシンに変更し、再度追加してください。アップグレード プロセスを実行し、キャッシュ時間を調整します。マシンが 5 台ある場合、キャッシュは存在しません。 。 。
アップグレードは通常、早朝に行われます。これは、何か問題が発生しても、それほど大きな影響が及ばないためです。
サーバーのバランス調整とダウングレード、アップグレード、および再起動を担当します
影響をまったく受けないことは不可能です。唯一の方法は、影響をできるだけ目立たないようにすることです。JD.com のサーバーは、アップグレード時に頻繁にアップグレードされます。 、メニューを開くことができず、何も表示されません。はい、ずっと見て回っていましたが、コンテンツが出てきませんでした。したがって、基本的にアップグレード時には、サーバーはコンテンツを表示しないフレンドリーなインターフェイスに切り替えられ、アップグレード後に元に戻ります。
1 つずつアップグレードし、アップグレード プロセス中にトラフィックを他のサーバーに転送します
私たちのプロジェクトはリリースとプロセス管理に pm2 を使用します
公開時にユーザーは影響を受けません
ホットデプロイメント
グレースケールリリース