2011-02-01 19 views
11

Quiero colocar un programa de servidor escrito en Java en la nube. Aceptaría las conexiones de socket TCP de los clientes (los clientes son teléfonos Android que utilizan 3G), realiza algunos cálculos, guarda cosas en una base de datos MySQL (también en EC2) y envía cosas a los clientes a través de las conexiones TCP. Incluso puede ser necesario crear varias instancias del servidor (es decir, un grupo de procesos).¿Cómo ejecutar un servidor Java en el EC2 de Amazon?

¿Es esto fácil de hacer? Creo que puedo hacer una AMI, pero no estoy seguro de cómo subir archivos Java, compilarlos y ejecutarlos, y crear una base de datos MySQL, etc.

Cualquier ayuda sería muy apreciada.

+1

Imagina que la instancia de EC2 es un servidor real, ya que así es exactamente como interactúas con ella. Cuando se aprende a subir archivos, compilar y ejecutar ellos, no buscar "cómo compilar en EC2" - el hecho de que usted alquila su 'servidor' de EC2 es irrelevante. El servidor –

+1

estoy refiriendo a es simplemente una aplicación que recibe las conexiones entrantes en un puerto, y genera un subproceso que hace algún trabajo (así que no estoy seguro de donde Tomcat entra en la ecuación).Además, no estoy seguro de cómo se conectaría un cliente a través de un socket: necesita una dirección IP y un puerto, de modo que ¿obtiene una dirección IP para una AMI como la que obtendría en una VM en una máquina local? Disculpe mi ignorancia Gracias por las respuestas, por cierto! – foxy

+0

Cuando crea su instancia en Amazon, obtiene una dirección IP para su servidor en la nube. Usas esa IP para iniciar sesión en el cuadro para administrar – Speck

Respuesta

1

¿Qué tan cómodo está con la administración remota de un servidor y la solución de problemas que la mayoría de las personas nunca han escuchado? De eso es de lo que estás hablando.

Creará su instancia de EC2, inicie sesión en ella y configúrela como lo haría con cualquier otro servidor con el que esté trabajando. Puede descargar los JDK, dbs, etc. Puede considerar el uso de una herramienta como Chef para ayudarlo. Utilizará ftp y scp para copiar archivos en el servidor.

Probablemente va a querer tener su servidor Java en una caja y tenerlo hablar con un servidor de db por separado, ya que dice que puede querer varios servidores.

Una vez que el servidor está funcionando como a usted le gusta, puede crear una imagen para usarlo para iniciar varias instancias, luego configure un equilibrador de carga para apuntar a sus servidores.

Si puede crear un MySql db en su caja local, puede crearlo en la nube. Si no? ....

3

¿Es esto fácil de hacer? Creo que puedo hacer que sea un AMI, ...

Creo que la respuesta depende de qué tan cómodo se sienta con la administración del sistema en general. Crear una AMI para ejecutar en EC2 es realmente más o menos lo mismo que crear un servidor físico o una imagen de VM. Tendrá que instalar un sistema operativo y luego instalar las herramientas, bibliotecas y programas que necesita (como mysql, jdk, ssh, etc.).

Puede ahorrarse un poco de trabajo al utilizar uno de AMI pre-construido de Amazon http://aws.amazon.com/amis/. Pero, en última instancia, usted será responsable de toda la administración del sistema del servidor. Si nunca has construido un servidor desde cero, tienes una gran curva de aprendizaje por delante. No es insuperable, pero ten en cuenta que el diablo está en los detalles; hay un montón de cosas que necesita aprender ;-)

... pero no estoy seguro de cómo cargar archivos Java , compilar y ejecutar ellos, ...

Una vez que el servidor está configurado y ejecutándose en EC2, compilarlos y ejecutar archivos java es lo mismo que compilar y ejecutar en su localidad. Normalmente, es probable que desee compilar y empaquetar su aplicación java en un contenedor o war y luego transferirla a su servidor EC2. Si instala Linux OS en su servidor EC2, puede usar scp o un cliente FTP para transferir sus archivos a través de sftp para mover los archivos desde su servidor local hasta el servidor. Una vez que los últimos archivos estén disponibles en su servidor, puede iniciar sesión en el servidor e iniciar su aplicación.

... y crear una base de datos MySQL, etc. ...

La instalación de mysql va a ser específica para el sistema operativo que elija instalar en su servidor. Por ejemplo, se puede instalar MySQL fácilmente en Ubuntu con un comando como:

sudo aptitude install mysql 

Una vez más, habrá más de tipo administrador del sistema para aprender cosas aquí específica para bases de datos MySQL.

Por lo tanto, es definitivamente factible. Un administrador de sistema experimentado podría construir una instancia de AMI con bastante facilidad/rapidez. Si esta es tu primera experiencia con la administración del sistema, te sugiero que busques un Escritorio viejo que tengas e intente instalar Ubuntu y todas las bibliotecas y herramientas necesarias que necesitas (mysql, jdk, ssh, etc.). Haz que tu programa java funcione en el viejo escritorio y luego debería ser bastante fácil crear un AMI a partir de eso. Luego puede ejecutar su AMI personalizado en EC2 y se configurará.

Si no tiene un escritorio de repuesto por ahí, puede usar uno de los productos de Virtual Machine como VMWare Player o Sun's VirtualBox y crear una instancia de servidor en uno de ellos.

Si desea evitar la molestia de administrar toda la instalación del sistema operativo, es posible que desee consultar servicios como slicehost y/o linode en lugar de EC2. Le dan acceso ssh a un servidor preinstalado. Y es tan fácil como hacer clic en un botón para instalar programas como mysql, etc.

Espero que entienda esta respuesta es útil y útil, mucha suerte. - Dave

+0

Entonces, creo que puedo crear una AMI con todo el software en ella: - Java: no hay problema - MySQL: no estoy seguro, debería estar bien hacerlo a través de la terminal remotamente. - Mi código Java (es decir, mi (s) proceso (s) de servidor) junto con una clase Java de Database Wrapper utilizada por los procesos del servidor para acceder a la base de datos (una base de datos, tal vez más de un servidor accediendo a ella). – foxy

+0

Muy bueno. Sí, definitivamente es posible instalar y configurar mysql remotamente a través de un terminal. ¿Con qué AMI estás empezando (qué os)? – Upgradingdave

+0

Gracias por su respuesta, Dave. No estoy seguro de qué sistema operativo, probablemente Linux. Creo que necesitaremos un AMI con el servidor Java y DB, y replicaremos este AMI dos veces para la tolerancia a fallas. Los dos procesos de servidor formarán un grupo de procesos y los mensajes se enviarán multidifusión a este grupo desde clientes (teléfonos Android) a través de 3G. En este momento está un poco triste, pero es algo así, ¡complicado! – foxy

2

Si puede utilizar Tomcat como su servidor, puede intentar Amazon Web Services Elastic Beanstalk simplificará en gran medida su tarea al proporcionar una instancia sencilla de Tomcat para implementar.

EDIT: AWS tiene una sección completa sobre cómo desarrollar el uso de Java aquí: http://aws.amazon.com/java/

+0

También echa un vistazo a Cloudcat (http://www.mulesoft.com/cloudcat-apache-tomcat-cloud) – Ken

14

Tome un vistazo a utilizar Amazon Elastic Beanstalk. Beanstalk es la oferta PaaS de Amazon y aliviará una gran parte de la carga de administración del sistema. He aquí una breve descripción de sus documentos:

AWS Elastic Beanstalk es una forma aún más fácil para que le permite desplegar rápidamente y gestionar aplicaciones en la nube de AWS . Sólo tiene que cargar su aplicación y Elastic Beanstalk se encarga de automatizar el despliegue detalles de aprovisionamiento de capacidad, carga equilibrio, escala automática y vigilancia de la salud aplicación.

Además, si está interesado en usar MySQL, entonces debería mirar Amazon RDS. De nuevo, esto aliviará la carga de administración del sistema para su nivel de base de datos. He aquí una breve descripción de sus documentos:

Amazon Relational Database Service (Amazon RDS) es un servicio web que hace que sea fácil de configurar, operar y escala de una base de datos relacional en la nube . Proporciona capacidad de tamaño rentable y mientras administra tareas de administración de bases de datos que consumen tiempo , lo que lo libera para centrarse en sus aplicaciones y negocios .

+0

+1 No había oído hablar de Beanstalk, ¡genial! – Upgradingdave

+0

Cloudcat también está disponible y ofrece ejecuciones preconfiguradas de Tomcat y MySQL en EC2 con una consola de administración compatible para cargar, implementar aplicaciones y monitorear sus instancias. – Ken

1
  1. ejecución de aplicaciones necesidades de aplicación. s/w para ejecutarlos.

  2. Las aplicaciones como Cyber ​​Duck ayudan a cargar archivos a través de SFTP.

  3. Tengo éxito en hacer el mismo problema. Confíe en mí, PUEDE HACERLO. Toda la necesidad de u es interfaces para los servicios del servidor, tales como MySQL (el uso del banco de trabajo para conectarse a través de un par de claves), el acceso de terminal (el uso de masilla/SSH a través de MAC) y así que son buenos para ir

0

Creo que para empezar es usar una unidad completa empaquetada en un archivo.

Piénselo ya que tiene compilados sus archivos Java, un servidor http incrustado digamos tomcat. Ahora, todo esto envasado en un frasco listo para ser desplegado en Amazon's EC2. Use el enlace this para obtener más información sobre los servidores integrados y el código relevante.

En lo que se refiere a la base de datos, puede utilizar RDS de Amazon. Puede configurar mysql en RDS y obtener un enlace para la conexión. Amazon RDS lo ayudaría a comenzar con la base de datos.

Ahora que tiene todo listo para comenzar y trabajar con la aplicación. Ahora es el momento de desplegar en Amazon AMI

Realice los pasos siguientes para implementar aplicaciones que en Amazon EC2:

  1. Crear una instancia de servidor en Amazon EC2 referirse EC2 getting started.
  2. Recibir archivo de clave privada, es decir, .pem (recibir del Paso 1), este archivo lo ayudaría a iniciar sesión en su instancia de servidor y realizar SFTP.
  3. Uso Putty o similares SSH client Para acceder a la instancia del servidor EC2 creado en el Paso-1 utilizando .pem archivo y DNS público de servidor, se refieren Accessing Instance de inicio de sesión SSH.
  4. Transfiera los archivos archivados empaquetados en el jar al servidor utilizando el cliente SFTP, WinnSCP siendo uno de esos clientes, consulte SFTP para obtener más información al respecto.
  5. Ejecutar aplicación. Nota En el caso de archivo JAR puede simplemente disparar java -jar TomcatApp.jar.

Si todo está configurado correctamente que sería para acceder a la aplicación a través de instancia EC2 public DNS o public IP, lo que sería de la forma:
http://<public_dns_address>:<port number>/servlet

espero que ayude a empezar y un proporcionan vista general.