Best Practice for setting up a fault tolerant, scalable Squidex production environment

I am looking to see if there are any best practices for setting up a production, fault tolerant, scalable Squidex environment running on the Windows Server (2016) platform.

My experience is that Docker for Windows Server is not production ready, so I don’t really see it as a solution - if there are experiences other than this, I’d love to hear about it.

As far as I can see, there is a need to have MongoDB fault tolerant, Squidex fault tolerant and load balanced - we use F5 BigIp load balancers but I’ve also got experience with nginx. Is Redis still required in order to tie into the event mechanism, as we would like to take advantage of that also?

Thanks for any input.

No, Redis is not required anymore. You would need a MongoDB replica set and squidex on all IIS servers. The clustering should work out of the box, but you can get insights under /orleans.

My recommendation is to use kubernetes if possible.

I assume you meant “No, Redis is not required anymore”.

With the recommendation of kubernetes, are you saying that you are running a Docker environment on Windows in production ?

No, I am running all my stuff in kubernetes, either self hosted, google cloud or ibm cloud in the last 3 years.

If you’re using kubernetes (and pardon my lack of experience) you are running Squidex in some sort of container… I assume just not on Windows ?

With multiple instances of Squidex running, to get clustering out of the box, are you simply setting the “orleans” “clustering” setting to “MongoDB” ?

If you are running Squidex in a container, I assume you are not using the “folder” based asset store - unless you are mapping a volume from the host?

Have you used MongoDB as the asset store ? Is MongoDB capable of handling the binary data at production volumes ?

Thanks again… just trying to build a picture.

Hi,

yes, I run Squidex in linux containers, orchestrated by kubernetes. The clustering itself is enabled by default. As long as your (virtual) servers or containers are in the same network it should work.

The squidex cloud uses google storage for assets. But the MongoDB asset store is also ready for production and uses GridFS (https://docs.mongodb.com/manual/core/gridfs/) to store the assets.

If you already have a file server you can also use a network volume.

You can also combine your windows servers with a cloud solution like Azure Blob storage for your assets, it is up to you.

Personally I have used octopus deploy (https://octopus.com/) to deploy asp.net (core) applications to a cluster of IIS servers.

My personal recommendation is kubernetes, but it takes months to fully understand it and is a big investment and I do not know your infrastructure or other (political) considerations. I can only show you the options.