6

Erlang で記述された複数の Web サーバーを実行 (負荷分散) しており、バックエンド データベースに Mnesia を使用している場合、システム全体を新しいバージョンにアップグレードする最良の方法は何ですか?

4

2 に答える 2

4

Erlang はホット コード ローディングをサポートしていますが、使用しなければならないものではありません。あなたの場合、ロードバランサーから一度に 1 つのノードを削除し、新しいコードを実行して再起動し、ロードバランサーに戻す方が簡単なようです。

稼働中のシステムで新しい Erlang/OTP リリースにホットアップグレードしたい場合は、ノードを停止することも準備しておく必要があります。

しかし、あなたに起こりうる本当の問題は、記憶喪失から来る懸念です. 記憶喪失が何をしたいのかという詳細について、新しい質問をする必要があると思います。スキーマ/テーブルの変更がなく、1 つのノードを停止して後で追加するだけの場合。または、実際に新しいテーブルまたはテーブルに新しい列を導入している場合。Mnesia は、テーブル レプリカを使用してノードを追加および削除する機能を提供します。また、複数のテーブル定義を独自にサポートしますmnesia:transform_table/3,4

于 2009-07-25T12:50:19.180 に答える
1

コードのアップグレードだけを行っている場合は、fab を使用した erlang のリリース処理に関する記事を書きました。この設定により、ノードを再起動することなく、リアルタイムでコードをロードできます。ただし、データベースの変換は、リリースのアップグレードとは別にトリガーされた単一のノードから実行する必要があります。

于 2009-07-25T22:33:53.973 に答える