Load Balancer
- Load Balancer Configuration
This article details the configuration and importance of a Load Balancer in a MediaWiki environment. A Load Balancer distributes network traffic across multiple servers, ensuring no single server bears too much demand. This results in improved responsiveness, increased availability, and scalability for your wiki. This guide is targeted towards newcomers to server administration for MediaWiki.
Why Use a Load Balancer?
Without a Load Balancer, all traffic to your wiki hits a single server. This creates a single point of failure. If that server goes down, the wiki is inaccessible. Even if the server *doesn't* go down, high traffic can lead to slow response times and a poor user experience. A Load Balancer solves these problems by:
- Distributing Load: Spreading requests across multiple servers.
- Increasing Availability: If one server fails, traffic is automatically routed to the remaining healthy servers.
- Improving Scalability: Easily add more servers to the pool as your wiki grows.
- Session Persistence: (Optional) Ensuring a user's session remains on the same server for a consistent experience (important for things like editing).
Load Balancer Options
Several options exist for implementing a Load Balancer. The best choice depends on your budget, technical expertise, and hosting environment. Common options include:
- Hardware Load Balancers: Dedicated physical devices offering high performance and reliability (e.g., F5 Networks, Citrix). These are generally more expensive.
- Software Load Balancers: Software running on standard servers (e.g., HAProxy, Nginx, Apache). Often a cost-effective solution, but require more configuration and management.
- Cloud Load Balancers: Offered by cloud providers (e.g., AWS Elastic Load Balancing, Google Cloud Load Balancing, Azure Load Balancer). Convenient and scalable, but can be vendor-locked.
For this guide, we will focus on configuring a software Load Balancer using HAProxy, as it's a popular and powerful open-source option. See Special:MyLanguage/Project:Configuration_checklist for initial server setup requirements.
HAProxy Configuration
HAProxy is a TCP/HTTP Load Balancer and proxy server. Here's a basic configuration example:
``` global
log /var/log/haproxy.log maxconn 4000
defaults
mode http timeout connect 5s timeout client 30s timeout server 30s
frontend mediawiki
bind *:80 default_backend webservers
backend webservers
balance roundrobin server wiki1 192.168.1.101:80 check server wiki2 192.168.1.102:80 check server wiki3 192.168.1.103:80 check
```
This configuration listens on port 80 and distributes traffic to three backend servers (wiki1, wiki2, and wiki3) using a round-robin algorithm. The `check` option tells HAProxy to periodically check the health of each backend server. See Help:Contents for more details about MediaWiki.
Server Specifications
The following table outlines minimum recommended specifications for the backend MediaWiki servers:
CPU | RAM | Storage | Operating System |
---|---|---|---|
2 cores | 4 GB | 50 GB SSD | Linux (Ubuntu, Debian, CentOS) |
The Load Balancer server itself requires less resources, as it primarily handles network traffic.
CPU | RAM | Storage | Operating System |
---|---|---|---|
1 core | 2 GB | 20 GB SSD | Linux (Ubuntu, Debian, CentOS) |
These specifications are a starting point and may need to be adjusted based on your wiki’s traffic and content size. Consider Special:Statistics to monitor your wiki's performance.
Health Checks
Proper health checks are crucial for ensuring only healthy servers receive traffic. HAProxy's `check` option performs a simple TCP connection check. For more robust checks, you can configure an HTTP health check that verifies the wiki is responding correctly.
For example, you could modify the backend configuration to:
``` backend webservers
balance roundrobin server wiki1 192.168.1.101:80 check http server wiki2 192.168.1.102:80 check http server wiki3 192.168.1.103:80 check http
```
This will cause HAProxy to request a specific URL (e.g., `/`) and verify the HTTP status code is 200 OK. More advanced checks can be configured to verify database connectivity or other critical functions. Refer to the Manual:Configuration page.
Session Persistence (Sticky Sessions)
In some cases, you may want to ensure a user's session remains on the same server. This is known as session persistence or "sticky sessions." HAProxy supports several methods for achieving this, including source IP address and cookies.
To enable session persistence based on source IP address, add the following to the `frontend` section:
``` frontend mediawiki
bind *:80 mode http option forwardfor # Preserve client IP address option httpclose # Always close HTTP connections option httplog default_backend webservers
```
Note that IP-based session persistence can be unreliable if users are behind a shared IP address (e.g., a corporate network). Consider using cookie-based session persistence for more accurate results. See Help:Cookies for more information.
Database Considerations
When using a Load Balancer, it’s essential that all backend servers share the *same* database. This ensures all users see the same content and that edits are synchronized correctly. A dedicated database server is highly recommended. Consult Manual:Database_setup for details.
Here is a table illustrating a typical database server configuration:
CPU | RAM | Storage | Database |
---|---|---|---|
4 cores | 8 GB | 100 GB SSD | MySQL/MariaDB or PostgreSQL |
Monitoring and Logging
Regularly monitor your Load Balancer and backend servers to ensure optimal performance. HAProxy provides detailed logging capabilities. Analyze the logs to identify any issues, such as server failures or performance bottlenecks. Tools like Grafana and Prometheus can be integrated for visual monitoring. Check Special:Search/Monitoring for related wiki pages.
Final Thoughts
Implementing a Load Balancer is a critical step in building a reliable and scalable MediaWiki deployment. While the initial configuration may seem complex, the benefits of increased availability, performance, and scalability are well worth the effort. Remember to thoroughly test your configuration before putting it into production.
Special:Search/Load Balancing
Manual:Configuring_servers
Manual:Installation_guide
Manual:Upgrading
Manual:Maintenance
Manual:Security
Help:Contents
Manual:Configuration
Special:Statistics
Special:MyLanguage/Project:Configuration_checklist
Help:Cookies
Manual:Database_setup
Special:Search/Monitoring
Manual:FAQ
Manual:Extension_installation
Special:Search/HAProxy
Intel-Based Server Configurations
Configuration | Specifications | Benchmark |
---|---|---|
Core i7-6700K/7700 Server | 64 GB DDR4, NVMe SSD 2 x 512 GB | CPU Benchmark: 8046 |
Core i7-8700 Server | 64 GB DDR4, NVMe SSD 2x1 TB | CPU Benchmark: 13124 |
Core i9-9900K Server | 128 GB DDR4, NVMe SSD 2 x 1 TB | CPU Benchmark: 49969 |
Core i9-13900 Server (64GB) | 64 GB RAM, 2x2 TB NVMe SSD | |
Core i9-13900 Server (128GB) | 128 GB RAM, 2x2 TB NVMe SSD | |
Core i5-13500 Server (64GB) | 64 GB RAM, 2x500 GB NVMe SSD | |
Core i5-13500 Server (128GB) | 128 GB RAM, 2x500 GB NVMe SSD | |
Core i5-13500 Workstation | 64 GB DDR5 RAM, 2 NVMe SSD, NVIDIA RTX 4000 |
AMD-Based Server Configurations
Configuration | Specifications | Benchmark |
---|---|---|
Ryzen 5 3600 Server | 64 GB RAM, 2x480 GB NVMe | CPU Benchmark: 17849 |
Ryzen 7 7700 Server | 64 GB DDR5 RAM, 2x1 TB NVMe | CPU Benchmark: 35224 |
Ryzen 9 5950X Server | 128 GB RAM, 2x4 TB NVMe | CPU Benchmark: 46045 |
Ryzen 9 7950X Server | 128 GB DDR5 ECC, 2x2 TB NVMe | CPU Benchmark: 63561 |
EPYC 7502P Server (128GB/1TB) | 128 GB RAM, 1 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (128GB/2TB) | 128 GB RAM, 2 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (128GB/4TB) | 128 GB RAM, 2x2 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (256GB/1TB) | 256 GB RAM, 1 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (256GB/4TB) | 256 GB RAM, 2x2 TB NVMe | CPU Benchmark: 48021 |
EPYC 9454P Server | 256 GB RAM, 2x2 TB NVMe |
Order Your Dedicated Server
Configure and order your ideal server configuration
Need Assistance?
- Telegram: @powervps Servers at a discounted price
⚠️ *Note: All benchmark scores are approximate and may vary based on configuration. Server availability subject to stock.* ⚠️