월요일, 11월 09, 2015

No Comment
"4.AWS 초간단 웹서비스 구축하기 - Nginx 설치하기" 에서 Nginx Web Server를 설치해 보았다. Web Server에서는 주로 정적인 파일에 대한 처리를 담당하고, 이번 시간에 설정할 Vert.x Server에서 동적인 처리를 담당할 것이다. 이렇게 Web Server와 WAS를 분리하는 주된 이유는 부하 분산과 보안을 강화할 목적으로 분리한다.

Vert.x에 대해서 알아보고, Nginx가 설치된 EC2 인스턴스에 환경을 설정하고 직접 웹에서 Nginx를 통해서 Vert.x로 접근하도록 구성할 예정이다. 직접 접속을 해도 되지만 이렇게 분리하는 이유는 위에 간략히 설명했다.

과거에는 주로 Tomcat를 Web Application Server로 사용했는데, Tomcat은 Thread Pool을 사용해서 Connection을 사용하기 때문에 일반적으로 최대 500개의 Thread정도가 적당해서 Tomcat 서버 하나에 동시에 최대 처리할 수 있는 Connection은 500개 정도라고 이해하면 되겠다. 

하지만 요즘처럼 잘나가는 서비스들은 동시에 처리해야할 Connection이 수백만개에 이르기 때문에 많은 Connection을 효율적으로 처리해야할 고민이 필요하게 되었고, 또한 프로토콜도 HTTP를 포함해서 다양한 프로토콜에 대한 필요성이 생기게 되었다. 이러한 필요성 때문에 node.js, Vert.x와 같은 비동기 소켓 서버가 많이 사용되고 있다.

Vert.x는 Node.js와 같은 비동기 소켓서버 Framework으로 많은 Connection을 무리없이 처리가 가능하며 node.js에 비해서 발전된 부분이 많다. 또한 Java언어 뿐만이 아니라 Javascript, Python, Groovy,Scala에 대한 지원을 하고 있어서, 개발자는 주로 사용하는 언어를 선택해서 개발을 진행하면 된다.

Vert.x 설정부터 시작하자.


Vert.x 설정하기
Vert.x는 특별히 Install이 필요가 없다. 특정 위치에 Vert.x를 다운받아서 Path를 잡아주면 된다.
1. Vert.x 최신 버젼 다운로드 및 압축해제
$ wget https://bintray.com/artifact/download/vertx/downloads/vert.x-3.1.0-base.tar.gz
$ tar xvf vert.x-3.1.0-base.tar.gz

2. 설치를 원하는 위치로 이동
   - 필자의 경우는 /usr/local/vertx 위치에 설치할 것이다.
$ mv vert.x-3.1.0 /usr/local/vertx

3. 환경 변수 설정
   - 압축을 해제한 위치의 경로의 bin 디렉토리를 환경변수의 path에 추가하고, 반영한다.
$ vi /etc/profile
export PATH:$PATH:/usr/local/vertx/bin
$ source /etc/profile 

4. Path 설정 확인
   - vert 명령어를 입력해서 관련 내용이 출력되면 Path가 설정된 것이다.
$ vertx


간단한 Vert.x 프로그램 실행하기
"Hello World" 가 출력되는 간단한 프로그램을 작성할 것이다. vi편집기나 사용 가능한 편집기를 이용해서 아래 코드를 입력하자.
필자는 /usr/local/vertx/html/Server.java 파일에 아래 내용을 동일하게 입력했다.
1. Vert.x 소스 코드 추가
2. Vert.x 소스 코드 실행
$ cd /usr/local/vertx/html
$ vertx run Server.java

3. Web에서 접속하기
   - 아무 문제가 없다면 아래처럼 Hello World가 출력될 것이다.
 
  
Nginx를 통해서 Vert.x 에 접근하기
마지막으로 기존에 설치했던 Nginx를 통해서 Vert.x에 접속할 것이다. 우선 Nginx의 설정을 조금 바꾸어 주어야하고, 기존 Vert.x의 Server.java도 포트를 52222번으로 변경한다. 정확한 이해를 돕기 위해서는 인스턴스를 각각 분리해서 생성하고 설명하는 것이 더 정확하게 이 상황을 이해할 수 있으리라 생각되지만 독자들은 쉽게 이해하시리라 짐작하고, 살짝 귀찮은 작업은 빼도록 하겠다.
결론적으로 Nginx에 기본포트인 80으로 접속하면 Nginx에서는 Vert.x의 52222포트로 연결되도록 설정할 것이다.
1. Nginx의 nginx.conf 설정 변경
  - nginx.conf 파일에서 Vert.x에 52222포트로 접근 가능하도록 수정한다.
  - nginx.conf 파일의 내용을 아래 빨간색으로 표시한 부분으로 대체하면 된다.
$ cd /usr/local/nginx/conf
$ vi nginx.conf

   server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
#          root   html;
#          index  index.html index.htm;

            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded_For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;

            proxy_pass http://localhost:52222;
            proxy_redirect off;
        }

2. Nginx 실행
$ cd /usr/local/nginx/sbin
$ ./nginx

3. Vert.x 실행
$ cd /usr/local/vertx/html
$ vertx run Server.java

4. 웹에서 접속
  - 아래처럼 나오면 성공한 것이다.

설정이 좀 길긴했지만 Nginx를 통해서 Vert.x에 접속하는 방법을 알아 보았다. 경우에 따라서 Nginx 필요없이, Vert.x에 직접 접속을 원하는 경우는 처음 Vert.x에 80포트로 설정했었던 처음 소스를 가지고 Vert.x를 구동하면 된다.

0 개의 댓글:

댓글 쓰기

 
Toggle Footer