Multiple PCs Running Zone Servers
First let me say that I have searched for this in the past and have found some information, but it wasn't nearly enough to get this running properly. I have only seen people post their config files, but from what I can tell so far, it seems like it takes much more than that to get this working properly. I experimented around quite a bit the other night and could not get this working the way I wanted.
What I want is to have my Server PC run all zones dynamically with the exception of a few zones that I want to run on a secondary PC statically. So, I assume that I set the launcher_zones table to look like: (Using navicat btw) launcher | zone | port zone | potimeb | 7250 zone | veeshan | 7260 zone | solrotower | 7270 I have my router to forward ports 7000 - 7249 to my Server PC and ports 7250 - 7500 to my Secondary PC. So, setting the launcher to these ports should send those zone requests to the Secondary PC (at least I think). Do I need to open any other ports to allow this, or does it communicate directly PC to PC on my LAN via the router? That is what I would imagine anyway. I only have the zone server ports and port 9000 forwarded atm. Do I need to open 3306 or 9080 or anything? And here are the config files I was trying. Server PC Config (IP 192.168.1.101): Code:
<?xml version="1.0"> Code:
<?xml version="1.0"> Next, I started the server from the server PC, but waited to hit <any key> to start zones loading until it was fully loaded on the Server PC and after I started zone.exe on the Secondary PC. I then hit the spacebar on the Server PC to start the dynamic zones all loading. It seems like the results I am getting are that I can't zone to other zones and after trying multiple configs and setups, it seemed like it kept making the zones I set to load statically load with a dynamic port instead. I am guessing that is because it wasn't able to connect to the secondary zone server so it just loaded them dynamically. Does anyone here know exactly what it takes to set one of these up the way I want? I have been able to get it to load all zones on the secondary PC, but I can't get it to split zones between the 2 PCs. I would MUCH appreciate if someone could provide a nice list of steps or walkthrough/guide on setting this up properly. Or if there is a post or wiki about it that someone knows of, I would appreciate being pointed in the right direction. I know most of the preferred servers run multiple zone servers. If one of you guys see this and wouldn't mind telling me what I did wrong, that would be awesome! Thanks in advance! Oh, and here is a PM from Aramid that might give more info on what he found when testing this out. Quote:
|
But it WORKS on my test servers... Did you load up the Web Templates in EQEMU and look at what ports it was loading the zones up in and then forward your router accordingly?
It takes some time for ALL of the zones to get fully loaded, so be patient for them all to appear. This is what I did and also found that I had to forward the UDP ports with the same ranges, why I don't know. I am using an RV082 LinkSys router and until I did, I still could not connect to a zone on the ZONE only server. After I got it working, I shut it all down and restarted it and the port forwarding held true and I was able to access all of the zones I had loaded up. I am beginning to think that you don't need to set ports in the 7000 range on the Zone only server because they are used by WORLD , not zone. It says it right there in the config file. ie:<!-- Sets port range for world to use to auto configure zones --> |
Ya, I think the setting in the config file is just the max port range you want set for dynamic zones to have access to.
So, does anyone know if the players connect directly to the secondary zone server PC, or do they go through the main server that is running the world to get there? I did notice that zones were being loaded on other ports besides the 7000 range. I think most of them were in the 2000 range when actually loaded. So, in order to set this up properly, I need to forward the 2000 range ports that I see in the templates to my secondary server in my router config? Or are those 2000 ports something else that can be ignored? Sorry if I am over-complicating this lol. I just don't want to have my server down for a couple hours again working on this tonight. Trying to verify as much as I can before I start messing with it again. Does anyone know exactly how this works and how to get it setup? I don't want to have sloppy configs or open up extra ports that don't need to be opened. |
One more time...
Did you look at the ZONES in the EQEMU Web Templates to see what PORTS to Forward on your router? |
Sorry Aramid, lol. Just trying to get as much info as I can before trying the changes again. I don't like having the server down for a long period of time while I mess with this stuff. I would like to get it right on the first try (well this time anyway).
I tried opening up the templates, but they all show some weird errors and don't display properly. Do I need to have something special configured or running to get them to work? I tried opening up port 9080 to see if that made a difference, but I don't see any. Do I have to access it from another machine for it to work or something? I have some Apache and PHP stuff setup on this PC, but that doesn't seem to make them work either. I have tried loading them in IE and Firefox, but both get the same issues. I didn't see any kind of config file to mess with. It seems like the templates are calling to use perl, but perl isn't working for them. Any ideas? Also, my router lets me forward TCP or UDP packets or both. I just set them all to both. |
So, I have tried using http://localhost:9080 to get to my server and it prompts me to login. But, no matter what login I try to use, it isn't working. I have tried accounts on my server and accounts for my database, but none work.
|
Quote:
Doing it now will let you SEE what I am talking about. You will be able to see what 7000(s) ports are being used now. Same will be when you install 2nd server. All Launchers will show up under Zones. Remember, this is Zones from the menu on the left, not under the Launcher which will give you the port number it was launched from.. which I don't know why they don't remain the same, but they don't. |
To rewind, what is the name of the launcher you use to load the dynamic zones? Is it also zone?
|
I believe that all of the launchers are zone. As far as I know, when setting a static zone the launcher_zones has to have "zone" set in it. And I am pretty sure it uses the same one for dynamics by default. But, it looks like you can set the launcher in the confix xml file.
And, I have been trying to login to my server through the browser, but it won't let me in even if I use my highest status account which is set to 250 status. I don't have a clue why. |
Quote:
You can change the name of zone to anything you want. Then just change your startup to eqlaunch.exe NOFLYZONE or whatever you name it. You would have to use different ZONE names for the 2 servers or else they will both try to load up the SAME zones. This is why I named mine ZONEW (World Server Zones) and ZONEZ (Zone Server Zones). Quote:
Did you go into your DATABASE and enter a PASSWORD in the PASSWORD field for this account? This has nothing to do with Game Login... Look at your account in the DB and see if you have a Password set. |
Well, I am learning something new with every post you make, LOL!
Ya, I am using the batch file setup from the wiki server setup guide: Code:
@echo off Code:
@echo off Code:
start eqlaunch.exe zonez So, if I set a password in the database for my admin account with status 250, will it still let me log in through the login server? I would think it should as long as the passwords both match. Otherwise, I could just create a new account with status 250 just for the web interface access. Thanks again for all of your help on this Aramid! By the time I get this all setup I will have plenty of new knowledge and understanding of how this all works. I can't believe I never looked into setting up the templates to work. They seem like a really cool feature! |
Yes on the batch files.
Yes on the eqlaunch from the zone only server, just remember to change the name in the launcher table, in the DB as well, not just in the .bat file. ZoneW would have the 5 for the 5 dynamic zones and zonez would have a 0 for no dynamic zones. Then in launcher_zones table, you enter the zonez name and the zones you want to load statically and the startup port, which apparently ends up having nothing to do with port forwarding on your router. Forward the ports as they show up in the Templates ZONES page. Start your World Server 1st and let it load it's zones, then when it is completely up and running, start the Zone Only Server. You can only run WORLD on 1 Server, not both unless you are going to run a seperate EMU Server. Eqlaunch is what launches the zones, I do believe it is required.... Yes, you can still use the Account to login and play the game as the login server only passes the LS ID #, not the password, so they do NOT have to match. |
OK, I finally got everything to work accept for 1 thing. I can't figure out how to set my zone server to map to the quest directory on my world server.
Here is the snippet from the config file that I would think should set the mapping: Code:
<!-- Directory locations. Defaults shown --> Thanks again for all of your help Aramid! I certainly couldn't have gotten this working without you. My players will owe you thanks as well :) Also, the whole thing about the port settings in the zone_launcher is confusing and annoying. Like you said, the port settings there seem to have no effect at all on what ports the zones load on. They load in the order that they are started starting at whatever port number you have set in the world server config. I set mine up a little different than the way you did. I was running into an issue that way. I have 45 dynamic zones set to load on my world server and it takes so long to load them all that I get players logging into them before they are all up. This causes a problem if players load into one of the zones that are set dynamic on the zone server, because it will load a dynamic version when players log in, and then load the static one when I start the launcher on the zone server. So, to get around this, I had to set my static zones for the zone server on ports 7000-7004 and change all of my settings accordingly. Then, I set the world server to 7005-7050. This way, I start the launcher on the zone server first and THEN start the world server up. So, when it first starts, it loads the statics immediately. Then I hit a key to start the dynamic zones loading on the world server. So far it seems to be working ok. If I can figure out this last issue with the quests, I will try to write up a guide to help people get these setup in the future, since everything I could find was little to no help with getting this setup properly. Heck, maybe I will stick it in the wiki if I can get that figured out. Haven't ever messed with updating a wiki before lol. Thanks again for the help Aramid! I certainly couldn't have gotten this to work without you. My players will owe you thanks as well! |
I didn't even try to use one area for the quest, I have them on both servers, as this too would probably help keep the load balanced, unless it's world that's running all the quests anyway. Coders will have to let us know if the code allows for drive changes to the locations or just folder/directory changes.
If you get the Templates running, you can start up your world and then LOCK it via the Templates OR, make it LOCKED by default on boot up and then UNLOCK it when all the ones are up. Glad I was able to help you get it up and running. |
Well, nexus crashed and for some reason restarted on 7050 which made the zone unreachable. I don't know why it would restart on another port when port 7002 was still available...
Code:
delveb (delveb) 7000 Players View Log Restart - Kill |
Quote:
|
The problem is that there is no way to set a zone server to use any specific port when a zone crashes and restarts. It will just use the next available one, but I don't think it ever uses the same one it was on before.
Unfortunately, this means that there is no way in the current system for me to setup my servers to run zones on both of them without risking zones being unavailable due to being on the wrong port. I am going to make a post in the bugs section about the launcher_zones table port setting being completely pointless. I am also going to make a feature request for an entry in the config file to let it set port assignment per zone server. Code:
<zones> I think that would be the simplest solution. And again, once I get this all worked out, I will write up a nice guide in the wiki for it. I hope I don't get mattmeck'd (tm) for making double posts! This post here is for support, the bug post I am going to make is to get the ports issue filed as a bug and the feature request post is the one to request a new setting in the config file. IMO, those are all separate even though they do all relate to this one same issue. Maybe posting the right things in the right places will get them looked at by the right people. |
What happens is when a zone crashes, it restarts on the next highest zone port above the last one used. I had dynamic zones boot from the zonew (World Server) 1st on ports 7000 thru 7004. I logged in and zoned into a dynamic zone and crashed the zone. When it restarted it was on port 7011 which was the next zone number in the queue so to speak. I crashed it again and it restarted on 7012... AND both times it restarted on the zonez server where it was originally on the zonew server. but... I was still able to get into the zone because port 7011 was forwarded to the server with zonez where it restarted.... So, it appears to restart on the next port in line and on the last zone server used.
It just keeps getting better..... |
Ya, if I wanted to run all dynamic zones, this wouldn't be an issue. The reason I am setting this up in the first place is because one of my raid zones gets over 20 players quite often and on the world server, it is too much for it to handle and it crashes ALOT! I am sure this is more than a little annoying to my players. So, I am setting it and 4 other heavy traffic zones to run on my main PC which has much more ram and a faster CPU. This should increase overall stability by a great amount and maybe even let me have more players on my server. So, I need to have static zones setup to run on the zone server. I don't want to just split the dynamics between servers.
The problem is if I set a zone to static, and no matter what port I actually start it on (before or after the dynamics on the world server are all loaded), I can get it working fine. But as soon as it crashes, the zone will have a big risk of starting on the wrong port dynamically and since it is specified in the launcher_zones table to launch that static zone on my secondary zone server, it will be unavailable to players. Now, this issue wouldn't be too bad if my zones stayed up all of the time. I am sure the ones on my zone server PC would be pretty stable there. But, I use a zone resetter quest script that I wrote to reset each of these zones after they have been up a certain number of hours. Nexus is set to reset after 4 hours, which is basically restarted the same as if the zone had crashed. I need the zone resetter to deal with the player ghosts issue that apparently only occurs on Windows. |
It seems that the only way to make this really work, is that it has to be changed in the code.
Does anyone know what the zone_server table is for in the DB? I added in a zone there and it picked up the last_alive time, so it's in the code some where. Seems you could edit in the zones and port and have the code look at what port the zone is supposed to be on and reload with that port number? Wondering why we haven't heard from any of the Ops who run multi-servers? |
I PM'd Cavedude directly and this is what he had to say about it:
Quote:
|
Quote:
|
We run all of our zones from one server, so I honestly have zero experience with this zone_servers issue.
As far as junctions (as they're called in NTFS) to network shares, it can be done with LSE (Link Shell Extensions). http://schinagl.priv.at/nt/hardlinks...kshellext.html Basically, you'll want to make c:\eqemu\quests pull from s:\eqemu\quests (where s:\ is a mapped network drive). Dax |
As a follow up to this thread, I wanted to make note that I have contacted all major servers and found that none of them other than PEQ use multiple zone servers. The only one I didn't check with that might be using it is Dragon Soul, which is a Chinese server.
So, it seems that this feature isn't very useful until some change is made to the code that will allow the world server to assign port ranges per zone server. If I can ever get to a state where I understand code well enough, I might try a crack at getting this added into the source. But, right now that is a ways off. If any other coders have a chance to look into this before then, I would greatly appreciate any feedback. I would mainly like to know if this would be something very complicated to change, or of this could be something that might not be too bad to add in. Hopefully this post will come in handy for someone considering multiple zone servers in the future. And maybe there will eventually be a fix to get this working :) |
Trevius,
Did you contact Rojadruid? Below is a post he made back in November of 2007. Although, I just tried to login to his sever and I just get booted back to the login screen. Quote:
|
Ahh, I knew I had read that exact message somewhere, but wasn't able to find it when I was looking for it.
I found these 2 related posts: http://www.eqemulator.net/forums/showthread.php?t=24754 http://www.eqemulator.net/forums/showthread.php?t=23916 I am PMing froglok23 and rojadruid in case either of them still read these forums and have any input into getting this working the way I want. My guess is that they got it setup and working, but that they never noticed that if a zone crashes, the world server doesn't know which port range to assign to which zone server. And that this causes the zone to be unavailable. I am trying to get a linux server up and running to see if it works any differently as far as multiple zone servers go. Windows definitely has issues as far as I have seen. The main problem is that the setting in the config for ports on the world server PC are the only ports that the world server will will ever create new zones on. So, even if you set a separate range of ports in the config on your zone only server, that port range pretty much just gets ignored. Hopefully one of the guys I am PMing will have a solution and will reply here or PM me with it. I would love to get this working. |
Quote:
|
Quote:
I did try that and it seemed even worse then running both the world and zones on the same PC. And for the record, the other PC I tried using as just a zone server is about double the stats of the server PC I have been running on and it was still unstable being only a zone server. I wish there was a way to share the load. I am trying to get a debian install of eqemu running, but mainly to see if it can help my resources and stability issues without having to do anything else. I have it almost ready to go accept for some reason it seems like the NPCs are hovering above the ground and it is hard to move around. I didn't get any errors when loading the world the last time I tried it so far. But I am definitely a novice with this setup. I don't even know if there is a way to watch the real time log entries echoed to the console similar to how it works on windows. The only thing that concerns me so far about the build is that I did get alot of warnings when I was compiling the eqemu source, but I didn't see any errors. I will leave those questions for another thread though, as I don't want to throw off the purpose of this one. |
All times are GMT -4. The time now is 05:40 AM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.