HA Bukkit Servers?

Discussion in 'Bukkit Discussion' started by ambientmf, Nov 18, 2011.

Thread Status:
Not open for further replies.
  1. Offline

    ambientmf

    Has anyone set up two or more Bukkit servers in a high availability way? For example, having an active and standby Bukkit server, using the standby to update builds and plugins, then performing a switchover with minimal impact?

    I would have to imagine a need for this with the largest servers with 100's of users. Does anyone know if this is technically feasible? I work in computer networking so I wonder if the same concepts of high availability, stateful switchover and redundancy could be applied to a couple of Bukkit servers. Maybe hosting the world file over NFS and mounting it in the root folder of multiple Bukkit servers? (forgive me, I'm only a Linux novice so I'm not even sure if that's possible to do)

    Just something I thought about today, waiting for the next Bukkit build and planning my next server deployment :). Anyone else have an opinion?
     
  2. Offline

    LEOcab

    I'm running both a 1.0 vanilla server and my old 1.8.1 server at the same time. Peeps who don't care about the update can work on their stuff while all the n00bs who upgraded without thinking of the consequences can still play. :p
     
  3. Offline

    mindless728

    technically could be doable, but you need to sync the servers, route traffic automatically, and other fun stuff

    i don't know if the utilities for this exist yet, but google is a good place to start
     
  4. Offline

    ambientmf

    I don't expect to find any automagic tools or utilities, as I'm sure the average Joe like me wouldn't need such a setup.
    I could definitely see this being used by the Minecraft server hosting companies. It would be pretty powerful to have one logical Bukkit server span two or more multiple physical (or virtualized) servers in an HA setup.

    On second thought though, there's probably no way to have hitless failover between servers. Users would just get disconnected if you failed over to another server, or were using a 2nd one to update to a newer build w/ patches, etc.
     
  5. Offline

    Vhab

    I use Mercurial to manage and store the server setup and plugins.
    I have a local copy of the server (usually with a recent snapshot of the live world) to which I do all testing and configuration.
    When I'm completely pleased with how it runs locally I commit my changes.
    Then I run a single script that asks me for the server password and after that automatically does a clean shutdown on the server, pull the latest version from Mercurial and starts up the server.
    Should the new setup not work as well as desired, I just 'back out' the last revision locally, do another testing run and update the live server back to the previous version.
    Only thing I really have to be aware of is newer versions of plugins that upgrade their data in a non-backwards compatible way. If that is the case I'll have to manually restore some stuff from backup before reverting.

    Backing up live data like the world, mysql and various other data like home locations is done automatically at an interval.
    All this data doesn't exist in the Mercurial repository as it doesn't have a place to be there.
     
  6. Offline

    TinuvaGeogroda

    The main problem I see with this, using just two seperate servers is the accessability. Server one has IP 123.456.789.0 and server two 098.765.432.1. You have your domain minecraft.myserver.com pointed to server one and then you take server one out to upgrade and switch server two in, or upgrade two and switch to it. Changing the DNS records can take up some time though. Losing more time by doing that.

    It'd be easier to have some sort of 'test'/beta server where you configure everything, test stuff out and then copy it to the main server only needing a restart.
     
  7. Offline

    mindless728

    it would easier to have a program that runs on the minecraft ip and port that routes all of the packets to the correct server and detects when one goes down starts another instance in the background and at the same time

    the easiest way i would see the failover working is to actually send all of the packets to both servers and only use the packets from one server and if the main server does not respond fast enough (short enough time so they don't disconnect) use the packet from the backup server, make it the new main server and start a new backup server on the original main host
     
  8. Offline

    ambientmf

    This is definitely doable with using a network load balancer in front of servers, using a virtual IP on my Internet-facing side and having the requests forwarded to different servers on the back-end. But again, its the communication and "sync" between different Minecraft/Bukkit servers that doesn't really exists at the moment. And I could definitely see issues if you're using large MySQL DB's with multiple servers writing to it simultaneously.

    Maybe a distributed server model could be developed, with things like the world and plugin DB's centralized and accessed by multiple load-balanced servers...but for the complexity, only the largest hosting gigs would have a need for this.

    Lol, I realize the Bukkit team and plugin devs have WAY more priorities than this. I'm just wondering if its possible.

    EDIT: For the purposes of just updating and patching Bukkit servers and plugins, I like what everyone's suggested. Just running seperate ones side-by-side, for testing and then just doing a graceful shutdown, copying the world file from old to new servers and starting the newly updated server.
     
  9. Offline

    TinuvaGeogroda

    Certainly true, though this'd require another server (or running it on besides MC on one of the servers but that doesnt seem recommendable when you want to spread out the accessability at every time) and well... seems like a bit of a money waste then if you could just run the test server. Although I realize this isn't about money and stuff, just looking at my own situations and experiences with servers too :p
     
  10. Offline

    mindless728

    yeah, certainly not cost effective in the slightest
     
Thread Status:
Not open for further replies.

Share This Page