148 lines
7.1 KiB
Markdown
148 lines
7.1 KiB
Markdown
# Clustered configuration
|
|
|
|
Running `./start.sh -c` will perform some cleanup then start the containers in a clustered configuration.
|
|
When running, the system looks like this:
|
|
|
|
```
|
|
+--------------------------------------------------+
|
|
| 172.60.0.99 |
|
|
| +----------------+ |
|
|
| | |+--------------+ |
|
|
(XMPP-C2S) 55222 -|-------| Load Balancer |+-------+ | |
|
|
(BOSH) 57070 -| | | | | |
|
|
(BOSHS) 57443 -| +----------------+ | | |
|
|
| | | 172.60.0.30 |
|
|
| | | +--------+ |
|
|
| | +=============+ | |- 5223 (XMPP-C2S)
|
|
| | | | | XMPP 3 |----|- 5263 (XMPP-S2S)
|
|
| | | | | | |- 9093 (HTTP-Admin)
|
|
| | | | +------+-+ |- 7073 (BOSH)
|
|
| | | | | |
|
|
| 172.60.0.10 | 172.60.0.20 | |
|
|
| +--------+ | +--------+ | |
|
|
(XMPP-C2S) 5221 -| | +======+ | |=====+ |- 5222 (XMPP-C2S)
|
|
(XMPP-S2S) 5261 -|------| XMPP 1 +============+ XMPP 2 | |- 5262 (XMPP-S2S)
|
|
(HTTP-Admin) 9091 -| | | | |------------|- 9092 (HTTP-Admin)
|
|
(BOSH) 7071 -| +----+---+ +----+---+ |- 7072 (BOSH)
|
|
| | | |
|
|
| | | |
|
|
| +---+--+ | |
|
|
| | | | |
|
|
(Database) 5432 -|-------| DB +------------------+ |
|
|
| | | |
|
|
| +------+ |
|
|
| 172.60.0.11 |
|
|
| |
|
|
+----------------172.60.0.0/24---------------------+
|
|
```
|
|
|
|
Note that the load balancer is configured to be less flappy, with the flappiness controlled by the nginx config,
|
|
simulating simple round-robin DNS load balancing. Ports from individual servers are exposed and can be hit directly.
|
|
|
|
Openfire is configured with the following XMPP domain:
|
|
|
|
* `xmpp.localhost.example`
|
|
|
|
Openfire is configured with the following hostnames:
|
|
|
|
* `xmpp1.localhost.example`
|
|
* `xmpp2.localhost.example`
|
|
* `xmpp3.localhost.example`
|
|
|
|
The following users are configured:
|
|
|
|
* `user1` `password`
|
|
* `user2` `password`
|
|
|
|
The following MUC rooms are configured:
|
|
|
|
* `muc1`
|
|
* `muc2`
|
|
|
|
|
|
## Hosts file entries
|
|
To access the XMPP servers and load balancer from your local machine you should
|
|
add entries to your hosts file:
|
|
|
|
```
|
|
127.0.0.1 openfire-lb-1
|
|
127.0.0.1 xmpp.localhost.example
|
|
127.0.0.1 xmpp1.localhost.example
|
|
127.0.0.1 xmpp2.localhost.example
|
|
127.0.0.1 xmpp3.localhost.example
|
|
```
|
|
|
|
## Client configuration
|
|
Depending on your requirements, you can configure your client to connect via the load balancer
|
|
at `openfire-lb-1:55222` or directly to the individual servers at:
|
|
- `xmpp1.localhost.example:5221`
|
|
- `xmpp2.localhost.example:5222`
|
|
- `xmpp3.localhost.example:5223`
|
|
|
|
## Network
|
|
|
|
The Docker compose file defines a custom bridge network with a single subnet of `172.60.0.0/24` for the clustered configuration.
|
|
|
|
When the `-6` argument to `./start.sh` is provided, then an additional subnet of `fd23:0d79:d076::/64` is configured.
|
|
Then, IPv6 is preferred for internal networking. Note that the IPv4 network remains in place, as Docker does not support
|
|
IPv6-only containers.
|
|
|
|
When running with the optional `-6` flag (that adds IPv6 support) the system looks like this:
|
|
|
|
```
|
|
+--------------------------------------------------+
|
|
| [fd23:d79:d076::99] |
|
|
| 172.60.0.99 |
|
|
| +----------------+ |
|
|
| | |+--------------+ |
|
|
(XMPP-C2S) 55222 -|-------| Load Balancer |+-------+ | |
|
|
(BOSH) 57070 -| | | | | |
|
|
(BOSHS) 57443 -| +----------------+ | | |
|
|
| | | [fd23:d79:d076::30]
|
|
| | | 172.60.0.30 |
|
|
| | | +--------+ |
|
|
| | +=============+ | |- 5223 (XMPP-C2S)
|
|
| | | | | XMPP 3 |----|- 5263 (XMPP-S2S)
|
|
| | | | | | |- 9093 (HTTP-Admin)
|
|
| | | | +------+-+ |- 7073 (BOSH)
|
|
| | | | | |
|
|
| [fd23:d79:d076::10] | [fd23:d79:d076::20]| |
|
|
| 172.60.0.10 | 172.60.0.20 | |
|
|
| +--------+ | +--------+ | |
|
|
(XMPP-C2S) 5221 -| | +======+ | |=====+ |- 5222 (XMPP-C2S)
|
|
(XMPP-S2S) 5261 -|------| XMPP 1 +============+ XMPP 2 | |- 5262 (XMPP-S2S)
|
|
(HTTP-Admin) 9091 -| | | | |------------|- 9092 (HTTP-Admin)
|
|
(BOSH) 7071 -| +----+---+ +----+---+ |- 7072 (BOSH)
|
|
| | | |
|
|
| | | |
|
|
| +---+--+ | |
|
|
| | | | |
|
|
(Database) 5432 -|-------| DB +------------------+ |
|
|
| | | |
|
|
| +------+ |
|
|
| 172.60.0.11 |
|
|
| [fd23:d79:d076::11] |
|
|
| |
|
|
+----------------172.60.0.0/24---------------------+
|
|
fd23:0d79:d076::/64
|
|
```
|
|
|
|
### Removing a node from the network
|
|
|
|
To remove a node from the network run the following command:
|
|
|
|
`docker network disconnect NETWORK-NAME CONTAINER-NAME`
|
|
|
|
For example:
|
|
|
|
`docker network disconnect openfire-testing_openfire-federated-net openfire-testing_xmpp1_1`
|
|
|
|
### Adding a node to the network
|
|
|
|
To add a node to the network fun the following command:
|
|
|
|
`docker network connect NETWORK-NAME CONTAINER-NAME`
|
|
|
|
For example:
|
|
|
|
`docker network connect openfire-testing_openfire-federated-net openfire-testing_xmpp1_1` |