FAQ:ロードバランサのバックエンドにプリザンターを導入したサーバが複数台ある環境で添付ファイルを正常にアップロード、登録することができない
回答
BinaryStorage.jsonのTemporaryBinaryStorageProviderに"Rds"を指定してください
概要
BinaryStorage.jsonのTemporaryBinaryStorageProviderに 既定値(null) を指定している場合
下図のようにロードバランサ(LB)のバックエンドにプリザンターを導入したサーバが複数台(WEB#1,WEB#2)ある環境で、添付ファイル項目にファイルをアップロードしようとすると、ロードバランサによってリクエストが振り分けられるため、正常にアップロードや登録ができないケースがあります。
TemporaryBinaryStorageProviderを null を指定している場合、WEBサーバの一時フォルダ(App_Data/Temp)に、アップロードしたファイルが保存され、後続の処理(作成や更新)を行うタイミングで、その一時フォルダ配下にある対象ファイルを読み込んで、そのバイナリデータをデータベース(Implem.Pleasanter)のBinariesテーブルへ登録します。
そのため、ロードバランサによって、アップロードのリクエストを受け取るWEBサーバと、後続処理のリクエストを受け取るWEBサーバが異なるケースや、分割して送られたデータ(サイズが大きいファイルは分割する)を片方のWEBサーバで全て受け取れないケースのような状況になると、正常にアップロードや登録ができません。
BinaryStorage.jsonのTemporaryBinaryStorageProviderに "Rds" を指定している場合
上記の回答に記載の通り、emporaryBinaryStorageProviderに "Rds" を指定することで、下図の赤線ようにデータベース(Implem.Pleasanter)へデータを直接登録することができるようになります。
Binariesテーブルに登録するレコードのBinaryTypeカラムは、アップロードした時点では "Temporary" で、後続処理を行ったタイミングでは "Attachments" となります。
設定手順
下記手順は上図のようにプリザンターを導入するサーバが2台(WEB#1,2)あることを前提としています。
- WEB#1にログインします。
- App_Data/Parameters/BinaryStorage.jsonを開きます。
- ファイル内の各パラメータを以下のように設定して保存します。パラメータの詳細につきましては、 パラメータ設定:BinaryStorage.json をご参照ください。
- ・Provider:"Rds"
- ・UseStorageSelect:false
- ・TemporaryBinaryStorageProvider:"Rds"
- プリザンターを再起動します。
- WEB#2も同様に手順1~4を実施します。
関連情報
- Set Parameter: BinaryStorage.json08.13.2024 up
- Table Management: Item: Attachment08.13.2024 up