So after running this blog on a single server running within an ISPConfig setup for quite some time I have finally redesigned the back-end (it has taken a good week getting it to where it is now). This was basically due to the fact that I have started getting a lot more traffic and I needed the ability to scale better. So far this new setup has proven to be very good, even though there have been a few gotchas along the way. And there will be many things I will still be stumbling across as I get more traffic. I do appreciate those who have let me know when something is not working correctly which I have corrected along the way.
- For the edge I am still using a PFSense dedicated server as my firewall.
- For load balancing I am using a pair of Citrix VPX Express Netscaler’s HA clustered. I am using LeastConnection policy and CookieInsert for persistence.
- For my web server’s I am using a pair of Apache Web Servers running on Ubuntu 12.04 x64. All /var/www content is being synced between them by using a Unison replication that runs every minute. I have also setup each server with a 64MB Memcached Cache which is shared between each server. I also installed the PECL memcached extension. For Wordpress to utilize this I used this drop-in and then setup batcache drop-in.
- For my MySQL DB Server’s I am running a pair of MySQL Server’s running on Ubuntu 12.04 x64. These are setup in an Active/Active Master-Master mode. Make sure to setup the following in your my.cnf when doing this or you will get duplicate entries in your DB and it sucks. Here is a great writeup on doing this.
Node-1 server-id = 1 auto-increment-offset = 1 auto-increment-increment = 4 Node-2 server-id = 2 auto-increment-offset = 2 auto-increment-increment = 4
Below is a quick drawing of what this all looks like.
And here are some memcached stats after running for a day.