-4

I want to setup several dedicated servers in different parts of the world and one frontend server which will distribute the load between them. For that reason I'm looking for software solution on synchronizing the backend servers and for the front one to distribute the request.

In case there's a flaw with my plan would you recommend any alternative approaches, excluding clouds like AWS or AppEngine?

  • 2
    So you want to take requests from all over the world, run them through a single point of failure, and then spend the extra latency to distribute them back out around the world? Doesn't seem like such a win to me. Also, this sort of thing is entirely dependent on your technology choices; we'd need to know exactly what you're using in terms of database, file storage, architecture, languages used for app development, and so on. – womble Sep 23 '11 at 12:00
  • Having frontend as a single point of failure is inevitable as mush as I understand, since DNS resolution results in a specific IP which represents a single physical server. So what I actually need is to ease the burdon of this frontend server as much as I can. So the first thing I'm looking for is the best Load Balancer solution to set up on it. Considering technology choices I'm absolutely free except that the application will be written for JVM. – Nikita Volkov Sep 23 '11 at 13:33
  • Considering your concerns about the global distribution of servers - it's only determined by legal issues because of which the servers need to be located in offshore. The target market for this project is a single country, that's why I don't think that the frontend located in this country may introduce a noticeable overhead, or can it? – Nikita Volkov Sep 23 '11 at 13:33

2 Answers2

1

It sounds like you're asking how to write your own CDN (Content Delivery Network) - probably best to just use one of the pros like Akami.

Bart B
  • 3,419
  • 6
  • 30
  • 42
0

What do you mean about "distribute the load between them"? If frontend will just redirect user to nearest backend, this will work fine. But if frontend is reverse proxy, like nginx, this solution will work bad: payload on connecting to far away backend server will "eat" too much time. What type of synchronization do you need? Files, database? Type of database?

Selivanov Pavel
  • 2,126
  • 3
  • 23
  • 47
  • I guess what I meant was that the frontend would be a Reverse Proxy serving as a Load Balancer. Or what did you mean by frontend redirecting that will work better? If it means changing the urls it won't work for me. I need to sync both DB and files. It would be great if it was possible to keep servers identical at any moment. – Nikita Volkov Sep 23 '11 at 13:17
  • Considering the choice of DB I'm absolutely free - the best recommended for the final solution (not the Hitler's one). – Nikita Volkov Sep 23 '11 at 13:28
  • If you realy need to keep servers identical at any moment, you need distributed filesystem, like [DRBD](http://www.drbd.org/). If no users data is stored in filesystem, only code, then pause in several seconds between upgrades is not critial. Then you may use some rsync-based solution – Selivanov Pavel Sep 23 '11 at 14:06
  • For effective using of load balancer, it need to have fast and stable connection to backend servers, so best practice is to place them all in one location. If you want to speed up content delivery by redirecting user to server at nearest location, you need something like [CDN](http://en.wikipedia.org/wiki/Content_delivery_network) – Selivanov Pavel Sep 23 '11 at 14:08
  • What you will use for DB syncronization depends on what DB you will choose, no common solution – Selivanov Pavel Sep 23 '11 at 14:15