1.ProudNet 1 AWS EC2 인스턴스 만들기

1.1ProudNet 1 AMI 소개

ProudNet 1 AMI는 EC2 인스턴스에 다음과 같은 셋팅이 미리 되어진 상태에서 만든 아마존 머신 이미지입니다.

  1. 프라우드넷 기기당 동시접속자 무제한 라이선스 인증

  2. 프라우드넷1을 사용하여 개발된 서버 프로그램이 구동되는데 필요한 하기와 같은 제반 프로그램들 설치

    • Windows Server AMI의 경우

      • Visual C++ 2015~2019 x64 재배포 패키지

      • DotNet Core 3.1

      • DotNet 5.0

    • CentOS7 AMI의 경우

      • unixODBC-devel

      • openssl-devel

      • wget

      • mono-complete

      • Development Tools ( installed by yum groupinstall )

      • CMake

      • DotNet Core 3.1 SDK ( 런타임 포함 )

      • DotNet 5.0 ( 런타임 포함 )

      • dotnet-sos ( 리눅스에서 생성된 닷넷코어 프로그램의 덤프파일을 분석 가능하게 해줍니다. )

      • lldb

  3. 리눅스 CentOS7 AMI의 경우, 크래시 발생시 코어 덤프가 남도록 설정이 미리 되어 있습니다.

1.2ProudNet1 AMI로 EC2 인스턴스 만들기 동영상

1.3ProudNet 1 AMI로 EC2 인스턴스 만들기

그림 1-1Step1. EC2 서비스로 들어갑니다.

그림 1-2Step2. EC2 페이지에서 인스턴스 메뉴를 선택합니다.

그림 1-3Step3. 인스턴스 페이지에서 우측 상단의 '인스턴스 시작' 버튼을 누릅니다.

그림 1-4Step4. '단계 1: AMI 선택' 페이지에서 좌측의 AWS Marketplace 탭을 선택합니다.

그림 1-5Step5. 검색창에 "ProudNet"을 입력합니다.

그림 1-6Step6. 검색하여 나온 PN1 AMI들 중에서 원하시는 OS의 AMI 옆에 있는 '선택' 버튼을 누릅니다.

그림 1-7해당 PN1 AMI에 대한 상세한 설명이 나옵니다. 우측 하단의 Continue 버튼을 누르시면, 이후부터는 일반적인 EC2 생성 페이지(성능 선택, 키 페어 등록 등)가 나오게 됩니다.

지금까지 소개해드린 방법으로 생성된 EC2에는 "ProudNet1" 문자열로 시작하는 이름의 보안그룹이 자동생성되어져 적용됩니다.

이 보안그룹은 TCP & UDP에 대해서 9000-9100 포트만 인바운드 허용을 하고 있고,

아웃바운드는 모든 트래픽에 대해서 허용하고 있습니다.

( 윈도우 버전의 경우 RDP를 사용하시려면 TCP 3389 포트를 인바운드 규칙에 추가해주셔야 됩니다.

리눅스 버전의 경우 SSH를 사용하시려면 TCP 22 포트를 인바운드 규칙에 추가해주셔야 됩니다.

저희가 default로 미리 추가해두지 않은 이유는 이렇게 잘 알려진 포트들을 미리 추가해두면 보안 취약점이 될 수도 있기 때문입니다. )

서버의 리스닝 포트와 static assign mode로 P2P에 사용할 UDP 포트들을 지정하실 때에 9000 - 9100 범위 내의 포트들 중에서 선택하시면 됩니다.

static assign mode가 무엇인지 그리고 왜 클라우드 환경에서는 static assign mode를 사용해야 되는지는 하기 링크의 가이드 페이지 내용을 참고부탁드립니다.


http://guide.nettention.com/cpp_ko#server_udp_assign

http://guide.nettention.com/cpp_ko#lfour_switch_setting

1.4Windows Server EC2 인스턴스

RDP를 통하여 생성된 EC2 인스턴스에 원격 접속을 해봅니다.

위 스크린샷과 같이, C:\ 하위에 하기와 같은 프라우드넷 폴더과 폴더가 들어있습니다.

  1. Nettention 폴더

  2. ProudNetSetup 설치파일

여러분들의 개발PC에서 로컬로 프라우드넷을 사용하시려면, 다음과 같이 진행합니다.

  1. EC2 머신 내의 C:\를 윈도우 탐색기로 엽니다.

  2. C:\ProudNetSetup.exe 파일을 여러분 개발PC에 복사합니다.

  3. 개발PC에 복사된 설치파일을 실행합니다.

  4. 설치가 완료되면, 이제 프라우드넷을 여러분 개발PC에서 Personal License로 사용하실 수 있습니다.

Personal License는 동시접속자수가 20명으로 제한되어 있는 라이선스입니다.


더 많은 동시접속자수가 필요한 테스트를 하시려면, ProudNet1 AMI로 생성하신 EC2 인스턴스를 이용하시면 됩니다.

인증없이 퍼스널 라이선스로 동작하는 것은 '프라우드넷 인증이 이루어진 적이 없는 머신'에서만 그렇게 동작합니다. 또한, 이러한 무인증 퍼스널 라이선스 동작 기능은 1.7.53519 버전부터 추가된 기능입니다.

Auto Scaling 등에 ProudNet1 윈도우 AMI를 사용하시려면, 다음과 같이 하시면 됩니다.

  1. EC2 인스턴스가 생성될 때, metadata & user data를 사용하게 합니다.

  2. user data를 통해서 여러분의 서버 실행파일과 실행에 필요한 파일들을 개발에 사용하신 언어에 따라 다음과 같은 위치에 삽입되게 합니다.

    • 서버를 닷넷 혹은 닷넷코어로 개발하셨을 경우, C:\Nettention\ProudNet\Sample\bin\netcoreapp3.1 에 서버 실행파일과 실행에 필요한 파일들을 넣습니다.

    • 서버를 C++로 개발하셨을 경우, C:\Nettention\ProudNet\lib\${platform}\dll\${Configuration} 에 서버 실행파일과 실행에 필요한 파일들을 넣습니다. ( C:\Nettention\ProudNet\Sample\bin\Release 에 넣으셔도 됩니다. )

  3. 여러분의 서버 실행파일이 launch 직후 삽입되어졌다면, user data를 통해서 삽입되어진 서버 실행파일이 실행되어지게 합니다.

EC2의 meta data & user data에 대해서는 하기 링크의 AWS 매뉴얼을 참고부탁드립니다.


https://docs.aws.amazon.com/en_us/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

1.5Linux ( CentOS7 ) EC2 인스턴스

생성된 CentOS7 인스턴스에 접속해보시면,

root directory( / )에 ProudNet 폴더가 있는 것을 보실 수 있습니다.

여러분들의 개발용 리눅스PC에서 로컬로 프라우드넷을 사용하시려면, 다음과 같이 진행부탁드립니다.

  1. scp 등을 이용하여 CentOS7의 ProudNet 폴더에 있는 다음과 같은 폴더 2개를 개발PC로 전송합니다.

    • include

    • lib

  2. 개발PC에서 전송받은 lib 폴더에 있는 라이브러리를 링킹하고, include 폴더에 있는 헤더파일을 인클루드하게 하여 사용합니다.

  3. 빌드된 서버 프로그램을 실행시키면 personal license로 서버가 동작하게 됩니다.

personal license는 동시접속자수가 20명으로 제한되어 있는 라이선스입니다.


더 많은 동시접속자수가 필요한 테스트를 하시려면, ProudNet1 AMI로 생성하신 EC2 인스턴스를 이용하시면 됩니다.

Auto Scaling 등에 ProudNet1 리눅스 AMI를 사용하시려면, 다음과 같이 하시면 됩니다.

  1. EC2 인스턴스가 생성될 때, metadata & user data를 사용하게 합니다.

  2. user data를 통해서 여러분의 서버 실행파일과 실행에 필요한 파일들을 개발에 사용하신 언어에 따라 다음과 같은 위치에 삽입되게 합니다.

    • 서버를 닷넷 혹은 닷넷코어로 개발하셨을 경우, /ProudNet/bin/${Configuration}에 서버 실행파일과 실행에 필요한 파일들을 넣습니다. ( Build 결과물이 아닌, Publish 결과물을 모두 넣으셔야 합니다. 개발하신 프로그램의 이름이 project라면, project.dll 뿐만 아니라 project.deps.json와 project.runtimeconfig.json도 필수로 넣어주셔야 합니다. ) Release 버전이라면 /ProudNet/bin/Release 입니다.

    • 서버를 C++로 개발하셨을 경우, /ProudNet/lib/x86_x64-linux/${Configuration}에 서버 실행파일과 실행에 필요한 파일들을 넣습니다.

  3. 여러분의 서버 실행파일이 launch 직후 삽입되어졌다면, user data를 통해서 삽입되어진 서버 실행파일이 실행되어지게 합니다.

EC2의 meta data & user data에 대해서는 하기 링크의 AWS 매뉴얼을 참고부탁드립니다.


https://docs.aws.amazon.com/en_us/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

1.6CloudFormation에서 사용하기

AWS CloudFormation을 이용하여 intra modeling과 provisioning을 하실 때에 ProudNet1 AMI를 사용하신다면, 스택을 생성하실 때에 다음과 같은 경로로 제공해드리는 템플릿을 사용하실 수 있습니다.

( AWS CloudFormation을 이용하는 intra modeling과 provisioning에 대해서 더 자세히 알고 싶으시다면 다음 링크의 AWS 매뉴얼 페이지를 참고부탁드립니다. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html )

s3://nettention.proudnet1.cloudformationsnippet/securitygroup.yaml

제공해드리는 템플릿에는 ProudNet1을 위한 SecurityGroup 세팅이 담겨있습니다.

아래 스크린샷에 표시된 것처럼, 스택을 생성하실 때에 상기 S3 URL을 입력하신 뒤, 'Designer에서 보기' 버튼을 누르시면 저희가 제공해드리는 템플릿의 전문을 보실 수 있습니다.