In some environments it is advisable to set up multiple FSI Server instances that access one internal storage. This setup is not recommended for failover/redundancy solutions as the hardware hosting the internal storage would in this case be the single point of failure.
Possible scenarios for multiple server instances accessing one storage are classical load balancing setups or dedicated import servers.
Dedicated importers are useful in high traffic environments with a lot of flucuation in the image stock. Importing images into the storage can be quite ressource intensive, especially with high resolution images, this might lead to longer image delivery times, making the customers website seem slow. In this case transfering the import process to differnt hardware can improve the overall performance.
Using multiple FSI Servers with a single storage in a load balancing setup is only recommended if the I/O-perfomance of the underlying storage architecure is fast enough. The FSI Server can easily spend more than 50% of the total time to deliver an image with reading the required data from the filesystem, depending on the use case (image effects, compression ratio, etc.), the amount of traffic and the servers memory and CPU performance. This in mind it should be obvious that for example three FSI Servers accessing the same storage will not be able to handle three times as many requests. Additionally in most single-storage-setups the storage will probably be accessed via a network filesystem which implicates a higher latency when accessing files compared to local disks.
In general it should be considered that placing (multiple) FSI Cache instances in front of a single FSI Server is usually the better option to handle more traffic and reduce server load than having two load balanced FSI Servers accessing one storage.
When setting up a scenario like this, it is important to keep in mind that the FSI Server instance with the importer disabled will not allow using the FSI Server webinterface to manage the images.
The following instructions apply to FSI Server 2 versions 2.0.195 and above using the default internal database for indexing image metadata.
What needs to be done
- Set up the first FSI Server
- Configure the search database
- Set up the second FSI Server
- Disable the importer and configure the search database
Start with a simple FSI Server setup
The first step is to set up the FSI Server that will run the importer. This is a default FSI Server setup as described in the documentation. Please assure that the storage is located on a drive or partition that is exported and can be accessed by the second FSI Server. Once the regular setup is complete you need to reconfigure the search database so that the other server has access. To do so, open the config/importer.xml file and find the section search and add your servers ip and/or hostname that can be used by the second server to address the first.
<search enabled=true> <hostname>firstservershostname</hostname> <port>9092</port> </search>
Once the server is restarted it will write a message to the log, which is needed to set up the second server:
14.03.2011 11:06:41 INFO 2049 FSIImageImporter: Search database started in server mode (TCP server running on tcp://firstservershostname:9092 (others can connect)). Please use “/data/storage/V1001/_database/search” as “database” on the client side.
Set up the second FSI Server
After installing the second FSI Server, please disable the Importer, by setting the enabled property of the application section in importer.xml to “false”. Furthermore you need to configure the storage location in the settings.xml. And to complete the setup the search database must be configured to access the database on the first server. To achieve this you need to set the hostname and database name to match the settings from the first server. The “database” parameter needs to be set to the path obtained in the previous step.
<search enabled="true"> <hostname>firstservershostname</hostname> <port>9092</port> <database>/data/storage/V1001/_database/search</database> </search>