jakimfett
(jakimfett)
January 3, 2017, 7:58am
1
Has anyone played with a HAProxy/nginx/etc?
I could have sworn there was a how-to guide for a way to do distributed hosting, either via Docker or via multiple instances of Discourse all hitting a single high availability database server, but I can’t seem to find a guide for it.
Any thoughts? I’m currently serving a small single Discourse site, but am interested in learning as much as I can about scaling and load balancing of Discourse.
5 Likes
jakimfett
(jakimfett)
January 3, 2017, 8:11am
2
Found it , less than fifteen minutes after I posted. I’ll put any info on snags or clarifications that might be helpful into the conversation here.
jakimfett
(jakimfett)
January 3, 2017, 8:18am
3
The documentation is very fragmented. I’m going to attempt to pull it all together here.
Any chance I could get some input from @nx2zdk or @jspdng ?
This is an advanced setup. Don’t follow this unless you are experienced with Linux server administration and Docker.
Hello everyone!
If you don’t want to mess with the firewall rules and security of your server, you can configure your Docker multiple container setup with just links and no exposed ports!
This way you can share your data container (postgres/redis) with other containers without exposing it to the internet.
How to
Edit your data.yml file commenting all the expose …
Multiple Container setup
If you would like to connect web-only and data Discourse docker containers.
There is optional setting for this, which is, you could specify a links key in container configuration (yaml file) to link those containers together ( i.e. linking web-only and data container ).
This way is also known as Docker --link flag.
Usage:
If you are trying to link database container to your web container
Add the following section in containers/web.yml
links:
- link:
name:…
jakimfett
(jakimfett)
January 3, 2017, 3:49pm
4
Info on avoiding port exposure:
Just in case anybody stumbles here for running several Discourse instances behind https://github.com/jwilder/nginx-proxy:
Set discourse to listen on a local link port and tell the proxy to use the container’s internal port 80 like
expose:
- "127.0.0.1:2836:80"
env:
VIRTUAL_PORT: '80'
Load balancing with nginx:
Enabling http2 on Debian:
Offline page setup:
This guide is intended for advanced users, who are already using nginx outside the docker container. By following this guide you make your setup more complicated and will loose some speed benefits like HTTP2 if you’re not running Ubuntu 16.04 or later. Proceed with caution!
When Discourse is rebuilding or starting up, your users will usually either see an error message from their browser…
[image]
…or a not-so-nice 502 error message from Nginx:
[image]
If you’re a perfectionist l…