mirror of
https://github.com/ggogel/seafile-containerized.git
synced 2024-11-16 17:05:32 +00:00
Merge branch 'socat-keepalive'
This commit is contained in:
commit
1cbb7909f1
14
README.md
14
README.md
|
@ -269,11 +269,11 @@ seafile-net:
|
|||
```
|
||||
|
||||
#### Reverse Proxy load balancing
|
||||
If you want to run frontend replicas (clustering), you'll need to enable IP hash based load balancing. The load balancer, in this case *seafile-caddy*, will then create so called sticky sessions, which means that a client connecting with a certain IP will be forwarded to the same service for the time being.
|
||||
If you want to run frontend replicas (clustering), you'll need to enable dnsrr endpoint mode, which is needed for proper load balancing.
|
||||
|
||||
To enable IP hash based load balancing you have to configure the following options:
|
||||
To enable load balancing you have to configure the following options:
|
||||
|
||||
Set the endpoint mode for the frontend services to dnsrr. This will enable *seafile-caddy* to see the IPs of all replicas, instead the default virtual IP (VIP) created by the Swarm routing mesh.
|
||||
Set the endpoint mode for the frontend services *seahub* and *seahub-media* to dnsrr. This will enable *seafile-caddy* to see the IPs of all replicas, instead the default virtual IP (VIP) created by the Swarm routing mesh.
|
||||
```
|
||||
deploy:
|
||||
mode: replicated
|
||||
|
@ -287,6 +287,14 @@ environment:
|
|||
- SWARM_DNS=true
|
||||
```
|
||||
|
||||
The load balancer, in this case *seafile-caddy*, will then create so called sticky sessions, which means that a client connecting with a certain IP will be forwarded to the same service for the time being. Hashing is based on the header `X-Forwarded-For`. This is better than client ip based hashing, when you have another reverse proxy in front of *seafile-caddy*, which is highly recommended. With client ip based hashing *seafile-caddy* would just forward everything to the same container, as it only sees the IP of the reverse proxy. Instead the X-Forwarder-For header contains the actual client IP.
|
||||
|
||||
It is also recommended to use dnsrr mode on the *seafile-server*, when you run multiple replicas of *seahub*. This will enable *seafile-server* to see the actual IPs of the *seahub* replicas when they connect to it, instead of a single virtual IP for all of them. This will circumvent probable IP:PORT overlaps in the TCP connection between *seahub* and *seafile-server* if you run many *seahub* replicas.
|
||||
```
|
||||
deploy:
|
||||
endpoint_mode: dnsrr
|
||||
|
||||
```
|
||||
|
||||
#### Example
|
||||
You can check out this example and use it as a starting point for you Docker Swarm deployment. It is using [lucaslorentz/caddy-docker-proxy](https://manual.seafile.com/docker/deploy%20seafile%20with%20docker/) as the external reverse proxy and the GlusterFS plugin from [marcelo-ochoa/docker-volume-plugins](https://github.com/marcelo-ochoa/docker-volume-plugins). This resembles my personal production setup.
|
||||
|
|
|
@ -17,6 +17,8 @@ services:
|
|||
- memcached
|
||||
networks:
|
||||
- seafile-net
|
||||
deploy:
|
||||
endpoint_mode: dnsrr
|
||||
|
||||
seahub:
|
||||
image: ggogel/seahub:8.0.2
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
http:// https:// {
|
||||
reverse_proxy seahub:8000 {
|
||||
lb_policy ip_hash
|
||||
lb_policy header X-Forwarded-For
|
||||
}
|
||||
handle_path /seafhttp* {
|
||||
uri strip_prefix seafhttp
|
||||
|
@ -12,6 +12,6 @@ http:// https:// {
|
|||
}
|
||||
reverse_proxy /seafdav/* seafile-server:8080
|
||||
reverse_proxy /media/* seahub-media:80 {
|
||||
lb_policy ip_hash
|
||||
lb_policy header X-Forwarded-For
|
||||
}
|
||||
}
|
|
@ -9,4 +9,4 @@ while [ ! -S /opt/seafile/seafile-server-latest/runtime/seafile.sock ]; do
|
|||
sleep 1
|
||||
done
|
||||
|
||||
socat -d -d TCP-LISTEN:8001,fork,reuseaddr UNIX:/opt/seafile/seafile-server-latest/runtime/seafile.sock,forever,keepalive
|
||||
socat -v -d -d -d -d TCP-LISTEN:8001,fork,reuseaddr UNIX:/opt/seafile/seafile-server-latest/runtime/seafile.sock,forever
|
|
@ -3,7 +3,7 @@
|
|||
/scripts/create_data_links.sh
|
||||
|
||||
mkdir -p /opt/seafile/seafile-server-latest/runtime
|
||||
socat -d -d UNIX-LISTEN:/opt/seafile/seafile-server-latest/runtime/seafile.sock,fork TCP:seafile-server:8001,forever,keepalive &
|
||||
socat -v -d -d -d -d UNIX-LISTEN:/opt/seafile/seafile-server-latest/runtime/seafile.sock,fork TCP:seafile-server:8001,forever,keepalive,keepidle=10,keepintvl=10,keepcnt=2 &
|
||||
|
||||
python3 /opt/seafile/seafile-server-latest/seahub/manage.py runserver 0.0.0.0:8000
|
||||
|
||||
|
|
Loading…
Reference in a new issue