Architecture 101 - What's my first step?

I am completely new to Linode and cloud hosting, my past experiences have all been on VPS platforms for about 40 Wordpress driven websites.

My first step here was to set up a 12GB Linode with a LAMP Stack and have WHM / cPanel installed. I've taken "baby steps" by migrating about a dozen extremely low-traffic sites over and ensuring that all is behaving as it should. I'm here to tell you that the performance has been nothing short of outstanding … rock solid / lightning fast response and according to the graphs, my Linode is hardly breaking a sweat. I understand things will start looking different when some of the more active / resource intense sites come on board and that's the point of this post.

In your experience, if I were to add a second Linode mirroring the first one and a Node Balancer to act as "Traffic Cop", would that be the best first fallback, or would it be better to use a second Linode for running the databases, or as a storage block for images and other "downloadable files"?

I understand that I am starting very small - like I said, this is my first step in to the cloud and just want to start getting comfortable with how this all goes before throwing a ton of money at a big mess.

Thanks for your suggestions!

Wendy

1 Reply

Glad to hear you're getting great performance on Linode!

In your experience, if I were to add a second Linode mirroring the first one and a Node Balancer to act as "Traffic Cop", would that be the best first fallback, or would it be better to use a second Linode for running the databases, or as a storage block for images and other "downloadable files"?

Balancing traffic between two 'web' instances is a great step for redundancy and handling higher amounts of traffic, but with this type of setup you'll need a separate database instance to keep things consistent. For example if a plugin gets updated, a plugin creates stateful DB data, or if a user comment gets made, you'll get differences between the two Linodes and essentially two different websites running on each web instance. A separate Linode instance dedicated to running MySQL is the solution to keeping multiple web Linodes consistent.

Having a dedicated database instance is also great for evening out load on Linux. MySQL and PHP are both resource-hungry processes, and tuning them to properly use the system's resources in a smart and non-interfering way can be difficult on a single system. As your sites receive increasing traffic, you may eventually be faced with a situation where one process or the other grabs too much RAM and causes that process or system to crash. This is a common dilemma with Linux, and a good explanation for why this is can be found on this article about the Linux OOM-killer. WordPress is especially vulnerable to this issue since many user-developed plugins you might want to add tend to be inefficiently designed.

I'd recommend first making a dedicated database instance and tuning it according to MariaDB's tips. Then if your system is still close to getting maxed out, consider a NodeBalancer and 2nd web Linode instance.

Hope it works out for you, and if you'd like to consider expert assistance with this you can reach out to my team! https://www.linode.com/professional-services

-Roland, Linode Professional Services

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct