Multi-Server

  • This is for discussing how best to implement Multi-Server capability with internet Multi-Server Control Panel.


    Please feel free to add/discuss anything!


    To make i-MSCP multi-server capable from a customer standpoint, we can deploy many servers, but there needs to be a central login place, that can at least redirect, this can be the first "quick" step...


    Step 1:
    1. Central Control Panel login
    2. Central Webmail login
    3. Central WebFTP login


    To be truly muti-server in the future, these are some functions that come to mind...


    Step 2:
    1. DNS Replication (more than master-> many slaves)
    2. Migrate Customer Data between servers (webfiles, databases, email)
    3. Isolated roles (email server, web server, database server)



    Step 1 Approach:


    1. Central login options (customer login only): New Central Login database is created (admin table, column for serverid). From central server, add new server and db login credentials and it updates central user table periodically (faster), or simply will try all known servers in round-robin until login is validated (slower), and redirects user to new server's control panel after authentication
    or,
    Central server becomes only imscp database server (or specify imscp database location), all child servers use central imscp database (chosen at install), and central db has column added to show server identifier, and after authentication, redirects to new server's control panel.



    2. Central Webmail Login: Roundcube currently has plugin to choose webmail login server based on MX lookup. This is quick fix but not real function. Same options as #1 apply, but with mail_users table in db.


    3. I don't know enough about ajaxplorer and multiple db logins, so probably needs the central db option.



    DNS Needed: Maybe not immediate, but really need complete replication amongst many servers for DNS. There are workarounds for this, and up to 5 servers it's not really needed because of registrar allowing 5 nameserver records for a domain, but it is important functionality.


    I think just having the login central is enough to really be Multi-Server functional right now. All the other features to split apart functionality, migrate, super DNS is all future wishlist.


    Ideas? Comments? What way do you, would you go about these?

  • hi,


    although I guess many are requesting support for multi server-capabilities, this thread is pretty quiet.


    I already played a bit with my install and I conclude that the solution should be easy to implement and thus understandable for the user.


    Adding a server field to the domain tables would be the easiest part I could think off. This way each service needs to be configured to check only "his" customers, e.g. select from clients where server = myhostname. This could work out quite well for dovecot/postfix and probably also for apache too. Splitting login data db's could go wild when something is not reliably synced.


    Thoughts:
    Imapproxy can redirect dovecot logins
    Incoming SMTP could go using DNS round robin and LMTP to dovecot, but would perhaps need a db for transport routing
    For FTP, users would need to use their domain names (but with SSL only ftp.masterdomain works - no multisite!)


    Given above db addition, I could setup some web servers, fewer mail servers and so on. I could think of them all accessing one central db. If the load is to much, I could setup replication slaves on the different servers.


    DNS could also go on the master server and replicate to the others as slaves. If wanted, one could also set it up as a hidden primary. I think this is also not that big of a trick.


    But to make this all useful, we would need a conversion feature, something to move an account to a different box. And that's the tricky thing for me. Should the master server run SSH'ed rsync using keys to copy stuff around the servers? Can we make sure that it all copied successfully? When do we shut one down and start the other? Then how about quota and traffic counters... they can hardly be copied to another server!?


    In the end, step 1 seems nearly done for me. Customers only accept one panel and we keep using that, roundcube can use imapproxy. WebFTP could probably also select the server based on the customer login. The big step is really this customer migration/move functionality...