Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Multiservidores

Iniciado por vicho, 27 de Diciembre de 2004, 09:22:25 AM

« anterior - próximo »

vicho

 hola chicos que tal, espero que esten pasando felices fiestas y disfruten que se viene el año nuevo :D

bueno ahora paso a lo que vine :P

imaginemos que tenemos los siguientes mapas:
-Mapa1
-Mapa2
-Mapa3

y bueno lo que quisiese implementar es que el Mapa1 lo maneje el servidor1, Mapa2 el servidor 2 y Mapa3 el servidor 3(enrrealidad lo que quiero es implementar esto en un numero X, pero creo que se entiende bien)

la idea es que el jugador se conecte y dependiendo del mapa donde se encontraba(esto se guarda en una DB) sea redirigido al servidor donde esta el mapa, se me ocurre implementarlo simplemente mandandole el servidor donde se encuentra el mapa, pero si Servidor1,Servidor2 y Servidor3 se encuentran dentro de la red de juego y salen a internet mediante ServidorPrincipal

osea una cosa como


pero no se me ocurre como implementarlo, aaa y una cosa, NO ES PARA UN MMORPG :P

shephiroth

 Wenas

Aqui te voy a dar unas cuantas ideas, pues el funcionamiento global no se como sería.

Lo primero es como dar salida a los 3 servidores internos. Una posibilidad (aunque viendolo desde la a seguridad no sería muy bueno) sería asignarle un rango de puertos a cada uno de los 3 servidores, y que el servidor central redirigese esos puertos sin preguntar nada. Por ejemplo, el server1 tiene 10.000-10.100, el server2 11.000-11.100.....etc.......Si quieres algo mas "seguro" podrías pensar incluso en una manera de que el programa abriese o cerrase puertos segun tus necesidades xDD

Sobro como hacer que se conecten a uno u otro......creo que la mejor manera sería crear otro programa en el ordenador principal, ademas que te serviría para control de usuario, estadisticas y demas historias que quisieras hacer (que nunca vienen mal xDD). En el ordenador principal tiene un programa q por ejemplo escucha en el puerto 9900-9999. Este comprueba el mapa, el puerto, el usuario, y le envia a la maquina cliente el puerto de conexion y un toquen para poder pasar. Cuando conecte con el puerto real comprueba el usuario, el toquen, y a jugar se ha dicho.

De esta manera podrías tener controlados numeros de usuarios en cada servidor, etc....

SALUDOS ^^

EDITADO: El programa que comento podría incluso estar en un hipotetico cuarto servidor con sus puertos redirigidos.......

senior wapo

 Si te he entendido bien, estas preguntando como implementar un proxy. Personalmente yo pondría todos los servidores accesibles desde internet (firewall de por medio y tal) pero como especificas que ha de pasar todo por el servidor proxy, asumo que tus buenas razones tienes.

Tienes 2 opciones: Proxy a nivel de aplicación y proxy a nivel de router.

A nivel de router consiste en que el router según a que puerto reciba el paquete, pues lo direccione a la IP interna y puertos que le hayas asignado. Configuras el router para que la IP predeterminada sea siempre la del servidor "lobby"/"world server" o como quieras llamar al primer server. Luego configuras una regla que redireccione el puerto 10000 al puerto 4000:server2, el 10001 al puerto 4000:server3, etc,etc...

A nivel de aplicación consiste en que todo el tráfico va a tu servidor principal, y este a su vez tiene una conexion abierta con cada servidor, y simplemente va copiando información entre el socket del servidor destino y el socket del cliente. Similar a un servidor IRC. Por supuesto, el unico server accesible desde internet es el principal. Esta opción la he visto en algunos proveedores de correo (por ejemplo, ¿ no usaba Terra un proxy POP3? lo he visto en otros igualmente)


Francamente, por cuestiones de estabilidad, mantenimiento y velocidad, te recomiendo la opción del router. Puede parecer que asignar las reglas de reenvio a mano es más trabajo o menos escalable, pero a la larga es mucho mejor. No entro en más detalles por no alargar el post.

 






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.