Warning: This page has not been updated in over over a year and may be outdated or deprecated.
administration:fault_tolerance_and_load_balancing
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
administration:fault_tolerance_and_load_balancing [2017/04/11 06:35] – [Required Software Components] emaijala | administration:fault_tolerance_and_load_balancing [2023/03/30 19:31] (current) – Update image location in sitemap tidy-up cmurdoch | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Fault Tolerance and Load Balancing ====== | ====== Fault Tolerance and Load Balancing ====== | ||
- | This page contains strategies, examples and notes on achieving high availability with VuFind. | + | This page contains strategies, examples and notes on achieving high availability with VuFind®. |
===== High-Availability Strategies ===== | ===== High-Availability Strategies ===== | ||
==== Load-Balancing ==== | ==== Load-Balancing ==== | ||
- | Load-balancing distributes requests across multiple servers, or VuFind | + | Load-balancing distributes requests across multiple servers, or VuFind® |
If possible, load balancers should be redundant themselves. Many vendor load balancers (F5, Barracuda, Kemp, etc.) and open-source solutions (Zen, HAProxy, etc.) have documented solutions to achieve high availability. | If possible, load balancers should be redundant themselves. Many vendor load balancers (F5, Barracuda, Kemp, etc.) and open-source solutions (Zen, HAProxy, etc.) have documented solutions to achieve high availability. | ||
- | It may be noted that many installations separate the VuFind | + | It may be noted that many installations separate the VuFind® |
Below are two example configurations: | Below are two example configurations: | ||
- | {{:vufind2: | + | {{:administration: |
=== Front-End Sessions === | === Front-End Sessions === | ||
- | When configuring a load-balancer, | + | When configuring a load-balancer, |
There are two primary strategies for dealing with this issue: | There are two primary strategies for dealing with this issue: | ||
Line 22: | Line 22: | ||
Most load-balancers can be configured such that a user will always hit the same node during their session. This is often referred to as sticky sessions. The strategies for achieving this goal depend on the load balancer but can range from using cookies to keeping track of IP addresses. Consult the documentation for the load balancer to learn about the strategies available. | Most load-balancers can be configured such that a user will always hit the same node during their session. This is often referred to as sticky sessions. The strategies for achieving this goal depend on the load balancer but can range from using cookies to keeping track of IP addresses. Consult the documentation for the load balancer to learn about the strategies available. | ||
- | The issue with this strategy is that if a front-end node goes down, all the users using that node will be kicked off and will need to reauthenticate | + | The issue with this strategy is that if a front-end node goes down, all the users using that node will be kicked off and will need to re-authenticate |
== Session Distribution == | == Session Distribution == | ||
Line 32: | Line 32: | ||
There are two primary options for keeping multiple Solr nodes synchronized: | There are two primary options for keeping multiple Solr nodes synchronized: | ||
* SolrCloud: [[https:// | * SolrCloud: [[https:// | ||
- | * Traditional | + | * Traditional Replication: |
===== Example Configuration ===== | ===== Example Configuration ===== | ||
- | This example is by no means complete, but it gives some hints and guidelines for creating a fault tolerant and load balanced | + | This example is by no means complete, but it gives some hints and guidelines for creating a fault tolerant and load balanced |
- | There are of course many ways to improve fault tolerance of a service, but this example describes one way to implement a fault-tolerant and load balanced | + | There are of course many ways to improve fault tolerance of a service, but this example describes one way to implement a fault-tolerant and load balanced |
- | While it's easy to replicate | + | While it's easy to replicate |
==== Required Software Components ==== | ==== Required Software Components ==== | ||
Line 46: | Line 46: | ||
All of the components below will have an instance running on each server node. | All of the components below will have an instance running on each server node. | ||
- | * VuFind, of course | + | * VuFind®, of course |
* MariaDB Galera Cluster | * MariaDB Galera Cluster | ||
- | * This replaces the standard MySQL or MariaDB installation and allows | + | * This replaces the standard MySQL or MariaDB installation and allows |
* See https:// | * See https:// | ||
* SolrCloud | * SolrCloud | ||
- | * This replaces the single Solr instance | + | * This replaces the single Solr instance |
* See https:// | * See https:// | ||
- | * There' | + | * There' |
=== Load Balancer and Apache Setup === | === Load Balancer and Apache Setup === | ||
Line 67: | Line 67: | ||
RPAF_SetPort | RPAF_SetPort | ||
- | === VuFind | + | === VuFind® |
- | Here it is assumed that the MariaDB Galera Cluster and SolrCloud are already up and running on each node. Basic setup of VuFind | + | Here it is assumed that the MariaDB Galera Cluster and SolrCloud are already up and running on each node. Basic setup of VuFind® |
- | * Configure | + | * Configure |
- | * Configure | + | * Configure |
[Index] | [Index] | ||
Line 79: | Line 79: | ||
url[] = http:// | url[] = http:// | ||
- | * Configure | + | * Configure |
[Session] | [Session] | ||
type = Database | type = Database | ||
- | * Set up the load balancer to use a health probe to check server status from VuFind | + | * Set up the load balancer to use a health probe to check server status from VuFind® |
* Set up scheduled tasks like removal of expired searches to run on only one of the servers. | * Set up scheduled tasks like removal of expired searches to run on only one of the servers. | ||
Line 94: | Line 94: | ||
== Static File Timestamps == | == Static File Timestamps == | ||
- | It is important to make sure all the static files served by VuFind | + | It is important to make sure all the static files served by VuFind® |
* Deploy the files using a .zip package so that timestamps are preserved. | * Deploy the files using a .zip package so that timestamps are preserved. | ||
* Deploy from a git repository and use [[https:// | * Deploy from a git repository and use [[https:// | ||
Line 113: | Line 113: | ||
== Asset Pipeline and other shared files == | == Asset Pipeline and other shared files == | ||
- | Load balancing and VuFind's asset pipeline are currently not compatible. The problem is that the request for which the assets were created could be served by a different server than the one the client requests them from. Without software modifications there are at least the following possibilities: | + | Load balancing and VuFind®'s asset pipeline are currently not compatible. The problem is that the request for which the assets were created could be served by a different server than the one the client requests them from. Without software modifications there are at least the following possibilities: |
* Use a shared disk for all the load-balanced servers. This might have performance and reliability implications. | * Use a shared disk for all the load-balanced servers. This might have performance and reliability implications. | ||
* Use sticky session in the load balancer. This has its own downsides like causing future requests from clients to go to the same server as before, which could cause imbalance between the servers especially when new ones are added. | * Use sticky session in the load balancer. This has its own downsides like causing future requests from clients to go to the same server as before, which could cause imbalance between the servers especially when new ones are added. | ||
Line 124: | Line 124: | ||
* At the time of writing this it's not recommended to run Piwik in a load balancer environment like this. A [[http:// | * At the time of writing this it's not recommended to run Piwik in a load balancer environment like this. A [[http:// | ||
---- struct data ---- | ---- struct data ---- | ||
+ | properties.Page Owner : | ||
---- | ---- | ||
administration/fault_tolerance_and_load_balancing.1491892519.txt.gz · Last modified: 2017/04/11 06:35 by emaijala