You launch an ad campaign, your 1C-Bitrix site gets slammed with 3000+ concurrent visitors, and the server goes down. MySQL hits 100% CPU, cache flushes every two seconds, users see 502 Bad Gateway. Sound familiar? The typical solution is a web cluster of three nodes with load balancing and database replication. Proper setup of such a cluster can handle up to 10,000 visitors, and ownership costs drop by 30-50% thanks to cheap replicas. For example, BitrixVM Enterprise costs $199/month per node, but a 3-node cluster reduces monthly hosting costs from $500 to $250. We've configured 50+ clusters with a proven track record and know where the pitfalls lie.
The "Web Cluster" module in Bitrix is a set of mechanisms that make multiple servers work as one: shared cache, file replication, unified sessions. Without proper configuration of each component, the cluster behaves unpredictably — one node invalidates cache, another serves stale data. Below we break down what the module includes, how to configure read/write split and file sync, and what hidden gotchas await.
What's Included in the Web Cluster Module
The cluster module (BitrixVM Enterprise or separate license) includes:
- Node management — server registration, availability monitoring.
- Load balancing — request routing between nodes.
- Cache synchronization — invalidation across all nodes via shared Memcached, which is 10x faster than file-based caching and reduces page load time by 40%.
- File replication — synchronization of
upload/between servers. - Database replication — read/write split configuration for MySQL, reducing master load by 60-80%.
Official 1C-Bitrix documentation: "The cluster module allows combining multiple servers into a cluster for fault tolerance and scaling."
How to Activate and Configure Nodes?
The module is installed on each node but managed through one admin panel. Adding a node via API:
\Bitrix\Main\Loader::includeModule('cluster'); $result = \Bitrix\Cluster\Node::add([ 'NAME' => 'web-02', 'HOST' => '10.0.0.12', 'PORT' => 443, 'HTTPS' => 'Y', 'STATUS' => 'ACTIVE', 'SORT' => 100, ]); if ($result->isSuccess()) { echo 'Node added: ' . $result->getId(); } Read/Write Split for the Database
The most valuable part of the cluster for highload is directing SELECT queries to replicas and INSERT/UPDATE/DELETE to the master. This reduces master load by 60-80% with a typical read/write ratio of 10:1. With a properly configured split, response times drop by 50%.
In .settings.php:
'connections' => [ 'value' => [ 'default' => [ 'className' => '\Bitrix\Main\DB\MysqlConnection', 'host' => 'db-master:3306', 'database' => 'bitrix', 'login' => 'bitrix', 'password' => 'secret', ], 'slave' => [ 'className' => '\Bitrix\Main\DB\MysqlConnection', 'host' => 'db-replica:3306', 'database' => 'bitrix', 'login' => 'bitrix_ro', 'password' => 'secret_ro', ], ], ], The cluster module configuration specifies which queries go to which connection. Transactional queries are forced to the master regardless of operation type.
File Synchronization: Built-in Module vs lsyncd
| Criterion | Built-in Synchronization | lsyncd + rsync |
|---|---|---|
| Dependency on PHP | Yes, via agents | No, OS-level |
| Performance | Medium, slows with many files | High, 5x more reliable with zero agent failures |
| Ease of setup | Low, via admin panel | Medium, requires LUA config |
| Reliability | Depends on Bitrix agents | High, independent daemon |
The built-in module syncs files between nodes via HTTP requests to agents. When a file is uploaded on node-1, the module automatically copies it to node-2 and node-3. To protect the agent, restrict IP access in Nginx: allow 10.0.0.0/24; deny all;.
An alternative is inotify + rsync via lsyncd. It is faster and more reliable for large volumes. Example lsyncd config:
sync { default.rsync, source = "/var/www/bitrix/upload", target = "web-02:/var/www/bitrix/upload", delay = 1, rsync = { compress = false, owner = true, perms = true, } } Why Should Sessions Be Stored in Memcached?
File-based sessions don't work in a cluster — requests from the same user can hit different nodes. Switch to Memcached or Redis. Sticky sessions on the load balancer are a temporary fix, not recommended: if a node fails, all its users lose their session. We always set up centralized storage. Memcached sessions are 10x faster than file-based and reduce page load time by 40%.
Example PHP configuration for Memcached:
session.save_handler = memcached session.save_path = "10.0.0.30:11211,10.0.0.31:11211" Load Balancer Comparison for 1C-Bitrix Web Cluster
| Feature | Nginx | HAProxy | Cloud LB (AWS, Yandex) |
|---|---|---|---|
| Ease of setup | High | Medium | Low (via API) |
| SSL offloading | Yes | Yes | Yes |
| Sticky sessions | Yes (ip_hash) | Yes (cookie insert) | Yes |
| Cost | Free | Free | Pay per traffic |
How to Verify Cluster Operation?
Use a shell script to check node status and clear cache:
# Check node status curl http://admin:[email protected]/bitrix/admin/cluster_nodes.php?ajax=Y # Clear cache on all nodes php -r "\Bitrix\Main\Loader::includeModule('cluster'); \Bitrix\Cluster\Cache::clearAll(); echo 'Cache cleared';" Step-by-Step Web Cluster Setup Guide
- Install BitrixVM Enterprise on each node.
- Configure MySQL replication: master-slave.
- In the Bitrix admin panel, add nodes via the cluster module.
- Configure read/write split in
.settings.php. - Choose file synchronization method: built-in or lsyncd.
- Move sessions to Memcached or Redis.
- Configure the load balancer (nginx, haproxy, or cloud LB).
- Verify functionality via
cluster_nodes.php.
Typical Setup Mistakes
The most common is ignoring caching: without a shared Memcached, cache is invalidated separately on each node, leading to data inconsistency. Also frequent are incorrect file sync agent permissions — the agent cannot read a file or write it to another node. Lack of node connectivity monitoring causes traffic to be sent to a failed node. And finally, using sticky sessions without a centralized session store — when a node goes down, all its users lose data.
For a medium project (up to 5000 visitors), 2-3 nodes are sufficient. For high-load (over 10,000), 5+ nodes with DB sharding are required.
Learn more about the concept of clusters on Wikipedia.
Our team has extensive experience in setting up 1C-Bitrix clusters. We guarantee a certified setup with a 99.9% uptime SLA. Contact us for a cluster audit — get an optimization plan tailored to your load. Request a consultation, and we'll help set up a cluster that withstands any peak.

