Forums / General / eZ Publish and MySQL replication / cluster environnement

eZ Publish and MySQL replication / cluster environnement

Author Message

Nicolas Steinmetz

Wednesday 22 October 2008 9:04:53 am

Hello,

As our new intranet is now online (with eZ 4.0), I need to work on its scalability and its recovery capacity (do not know the right word in English).

So just for now, all is on one server which is for the moment sufficient for the current traffic.

What I was working on as I need to present all possibilities to my boss :
- Proposition 1 : Keep MySQL & Web server on the machine and add new web server
- Proposition 2 : Distinguish MySQL servers from Web servers : 1 DB & several web servers
- Proposition 3 : Distinguish MySQL servers from Web servers : 1 active DB, 1 idle DB (sync is done with some regular import/export) & several web servers
- Proposition 4 : Distinguish MySQL servers from Web servers : 1 master DB, 1 slave DB with replication & several web servers
- Proposition 5 :Distinguish MySQL servers from Web servers : MySQL Cluster & several web servers

Each proposition has its own costs and I did a quick swot for each of them. As we have 2 datacenters, it's quite easy to put half of the servers in each side.

My question is more related to eZ Publish. I know that eZ Publish supports up to the proposition 3 as we use this one for some public sites still on eZ Publish 3.8.6.

As regarding some changelog and issues, it looks that improvements have been made in 3.10/4.0 series. However, I did not find up to which proposition (ie, I mean 4 and 5) eZ Publish is compliant with.

Thanks for all who will be able to help me in my quest,

Regards,
Nicolas

Gaetano Giunta

Wednesday 22 October 2008 10:23:40 am

- Proposition 4 : Distinguish MySQL servers from Web servers : 1 master DB, 1 slave DB with replication & several web servers

1 master/N slaves is supported - but you'd better go with the latest version of eZ Publish, as there have been a few bugfixes in master/slave support lately.

- Proposition 5 :Distinguish MySQL servers from Web servers : MySQL Cluster & several web servers

depends on the kind of mysql cluster you can set up. Standard cluster iirc has the in-memory only engine plus a lot of limitations on the queries it can run, so it is unsuitable for eZ.

I'd say separating db from webserver is surely the easiest way to scale (2 servers).
Then add a reverse proxy in front (3 servers).

For ha/disaster recovery, you can then set up a mirrored stack in the other datacenter.
Of course this takes in no account load balancing or massive increases in traffic, but is also simpler to set up.

Principal Consultant International Business
Member of the Community Project Board

Nicolas Steinmetz

Wednesday 22 October 2008 1:57:36 pm

"1 master/N slaves is supported - but you'd better go with the latest version of eZ Publish, as there have been a few bugfixes in master/slave support lately."

So far, the concerned project is based on eZ 4.0.0 - It is not yet planned to upgrade on 4.0.1

"depends on the kind of mysql cluster you can set up. Standard cluster iirc has the in-memory only engine plus a lot of limitations on the queries it can run, so it is unsuitable for eZ."

I was thinking of the MySQL Cluster solution, as it is presented on MySQL site. It looks there is only one solution for this (or I missed something). It's a pity that eZ Systems do not state clearly that MySQL Cluster is not suitable with eZ Publish (Or I missed it too)

"I'd say separating db from webserver is surely the easiest way to scale (2 servers).
Then add a reverse proxy in front (3 servers)."

It's not possible as I need a SSO authentification based on NTLM. If we set a proxy in front of the web servers, the authentification fails.

"For ha/disaster recovery, you can then set up a mirrored stack in the other datacenter.
Of course this takes in no account load balancing or massive increases in traffic, but is also simpler to set up."

That's what I had more or less in mind. Having the whole system in both data center so that I can set up a round robin DNS for load balancing between the 2 web servers, and with a db server in each data center.

Thanks for your answer,
Nicolas

Gaetano Giunta

Thursday 23 October 2008 4:15:45 am

This page lists the current (5.0) set of limitations for mysql cluster:

http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster-limitations.html

On first page, we miss already:
- temp tables
- indexes on text columns

There are other alternatives to mysql cluster, but I do not have direct experience to recommend any of those.

About round-robin-dns: keep in mind that by default eZP stores binary content (eg images or word/pdf files) and cache files on the filesystem. If you have 2 eZPublish instances (front-end servers) active at the same time you should take care of sharing those resources, by either:
- setting up a network share for cache and binary files - using preferably a sturdy nas/san with a big pipe
- using the eZ Publish cluster mode, where those files get actually stored in the db and not on the filesystem

Principal Consultant International Business
Member of the Community Project Board

Björn Dieding@xrow.de

Thursday 23 October 2008 6:56:45 am

http://www.continuent.com/

This seems to be the only option when master slave doesn`t do it anymore / is not enough ...

Does anyone have experience wiht this solution?

Looking for a new job? http://www.xrow.com/xrow-GmbH/Jobs
Looking for hosting? http://hostingezpublish.com
-----------------------------------------------------------------------------
GMT +01:00 Hannover, Germany
Web: http://www.xrow.com/

Nicolas Steinmetz

Friday 24 October 2008 1:56:51 am

@Gaetano :
- Thanks for your highlight on MySQL Cluster
- I forgot the nas/san solution - thanks too.

@Björn : I did not know continuent. It looks good, I send the url to our architects - They are more aware of F5 solutions ;-)