728x90

EC2 인스턴스를 발급받고 자동 생성된 기본 보안 그룹에 가서, 

 

Inbound 인바운드 : 인스턴스 외부로부터 들어오는 트래픽.  ==> ssh(22번 포트) 만 가능!

Outbound 아웃바운드 : 인스턴스로부터 나가는 트래픽        ==> 모든 IP, 모든 port 접속 가능으로 기본 설정.

 

 

 

카프카 브로커의 기본 포트 : 9092

주키퍼 기본 포트 : 2181

 

EC2 에 설치된 브로커에 접속하기 위해서는 AWS EC2의 보안 그룹 인바운드 설정에 해당 포트들 열어야 한다. source IP 는 위치무관(any)로 설정 가능, but 보안 신경쓰일 경우 자신의 IP 확인하여 입력하기.

 

any 로 설정하는 경우 고정 IP 아닌 컴퓨터 사용할 경우에는 실습환경이 달라지거나 와이파이망이 달라질 때마다 IP 변경됨.

 

 

728x90

EC2 를 통해 인스턴스 (운영체제가 포함된 가상 서버) 발급받을 수 있음.

 

AMI : 서버에 필요한 운영체제, 여러 소프트웨어가 조합된 템플릿.

 

위에 선택한 템플릿은 아마존에서 직접 만든 템플릿. EC2에 최적화되어있음. 각종 개발도구들이 포함되어있진 않지만 인스턴스 생성 이후 패키지 관리 도구를 사용해 카프카 실행에 필요한 JDK 를 설치할 수 있음.

 

 

인스턴스 유형. : EC2 인스턴스 서버의 CPU, 메모리, 네트워크 성능과 같은 서버 스펙.

 

 

카프카를 활용하기 위해 실행되는 프로세스는 주키퍼와 카프카 브로커가 있다. 

 

주키퍼 : 아파치 소프트웨어 재단 프로젝트 중 하나. 분산 코디네이션 서비스를 제공하는 오픈소스.

분산 코디네이션 서비스 : 분산 시스템 내부에 상태 정보를 저장하고 데이터를 key/value 저장소로 저장 및 제공하는 서비스.

 

카프카에서는 주피터를 운영에 필요한 각종 설정과 상태들을 저장하는 데 사용하고 있다. 

주피터, 카프카 브로커는 JVM 위에서 돌아가는 애플리케이션으로서 힙 메모리를 지정해야 한다. --> 1G 이상의 램 필요!

 

 

서버 접속을 위한 키 생성은 기존 글 참고!

728x90

앞 글에서 주피터 노트북까지 설치 완료 후, 

현재 브라우저의 주피터는 인증서가 적용되지 않은 상태라 통신과정에서 굉장히 위험하다. 그러므로

 

이번 목표 : HTTPS 적용하는 방법 공부하기!

 

 

먼저 콘솔에 sudo netstat -nap | grep 8888 에서 실행중인 키아이디 확인 가능하고 kill 명령어로 해당 주피터 노트북을 종료시킬 수 있다. 그럼 주피터 접속 불가!

 

 

 

 

 

1. 공개키, 개인키 만들기

 

 

인증과정에서 공개키, 개인키 방식이 있다. 콘솔에서 ssl 디렉토리 생성 후  sudo openssl ~~~ 명령을 이용해 개인키, 공개키를 만든 후 

 

 

환경설정 파일을 열어서 vi 편집기로 주피터를 이용해 ssl 통신을 하겠다 명시해주기 위해 공개키 파일을 설정해주고,

밑 줄에 개인키까지 설정하게 경로를 넣어준다.

 

 

 

 

 

 

 

2. 주피터에 ssl 적용

 

다시 주피터 노트북을 실행시키면 ssl 이 적용된 형태로 서버가 구동중인 것을 확인할 수 있다. !!!

 

 

 

https:// 를 치고 들어가면 사설 인증서를 이용해 ssl 통신을 적용한 것이기 때문에 크롬 브라우저가 우리 인증서를 신뢰하지 못하므로 경고가 뜨는데 무시하고 접속할 수 있게 하면 됨.

왜냐? 인증서 자체를 우리가 만들었으므로 신뢰할 수 있으니까!

 

이 과정까지 마치면

 

ssl 이 적용된 상태로 우리의 서버에 접속할 수 있게 된 것이다.

즉 안전하게 통신하기 때문에 ,중간에서 악의적인 사용자가 우리의 서버에 접속했다는 사실을 알고 해당 패킷을 가로채려 하더라도 우리가 서버에 어떤 명령을 넣었는지는 알 수 없다.

 

 

 

 

3. 시스템 서비스로 등록하기

지금 aws ec2 인스턴스, 즉 우리의 서버를 재부팅하는 등의 작업을 하면 노트북도 자동 종료가 되기 때문에 실행하는 명령어를 계속 넣어줘야 하므로 서버가 재부팅 되었을 때도 자동실행되게 처리하기 위해 주피터를 시스템 서비스로 등록시켜야 한다. 

 

3-1. 서비스 파일 작성하기 

주피터 노트북 실행 파일 위치를 알기위해 which 명령어를 사용해 경로를 찾아내 주고,

sudo vi etc/systemd/system/jupyter.service  를 이용해 서비스 파일을 만든다. 

이 시스템 파일은 정해진 양식이 있다.

윗칸에 설명을 넣어주고,

 

밑 칸에 어떤 서비스가 실행될건지 명시해준다.

user : aws ec2 ssh 로 접속하면 우분투 계정으로 접속을 하게된다. 그래서 유저가 우분투!

xecStart : 어떤 명령을 수행할건지를 나타냄. sudo~ 명령어로 root 권한 허락한다.

         주피터를 사용하겠다고 잡아주고 환경설정 명령 또한 명시해준다. (환경설정 파일 있는 위치로 설정) 

 

실행중인 주피터 서비스 구동중인 것 확인 가능! ( ssl 로 8888포트로 열린 것 )

 

 

서비스 다시 시작하고자 할 땐 restart 명령어로 사용 가능.

 

 

728x90

aws 서버 가동법은 aws 카테고리의 다른 글에 나와있습니다. 이번 글은 그 서버를 활용해 주피터 노트북 설치까지 알아보는 글입니다. 

 

 

 

이 글 목표 : 주피터를 이용해 서버의 외부에서 해당 서버의 웹브라우저를 이용해 접속 할수 있게 설정 완료 후,

                 보안을 위해 주피터 접속을 위한 보안 비밀번호 설정

 

 

 

 

 

 

notebook.auth 라이브러리 이용

주피터에는 해시 알고리즘을 이용해 비밀번호를 기록할 수 있게 해줌.

그래서 파이썬을 이용해 notebook.auth 라이브러리 이용!

 

내가 설정한 비밀번호가 해시값으로 나오는 것 확인 가능. 복붙해서 메모장에 올려놓고 사용하기. 

(외부에서 서버에 접속 했을 때 비밀번호 입력해야 우리 서버에 입장할 수 있도록 하기 위해 비밀번호 사용)

 

 

1. 주피터 환경설정하기 

환경설정 파일을 만들기 위해 

jupyter notebook --generate-config 입력해주기! ==> 환경설정 파일 만들어줌. (완료 시 환경설정 경로 반환)

 

그 후 파일에 들어가 vi 편집기로 

1-1)  환경설정 객체 get_Config() 넣어주고

       위에서 메모장에 넣어놨던 비밀번호 해시값을 그대로 넣어주기.

       마지막으로 ip 설정 위해 서버의 내부아이피 넣어주기.

       notebook_dir 설정해주기

 

 

 

 

 

<주피터 실행부터 항상 웹브라우저에서 실행할 수 있게 하기>

 

2. 주피터 실행해보기

밑의 sudo~ 문으로 들어가기 root 권한으로 들어갔다. 

 

8888포트로 주피터노트북 서버가 열린 것 확인 가능!

 

 

AWS 로 돌아가서 -> 보안그룹 -> 인바운드 규칙 편집 ->  8888 포트를 추가해 방화벽처리로 누구나 접속할 수 있게 한다.

 

그 후 대시보드 -> 인스턴스 확인 후 -> 해당 ip (IPv4퍼블릭) 복사

해당아이피 : 8888 포트 추가해 접속한 것 확인 가능.

 

 

로그인해서 들어온 후 터미널을 띄우면 콘솔창과 완전히 똑같게 화면이 나오는 것 확인 가능!

 

 

 

 

 

3. 웹브라우저에서 항상 실행되게 만들기 

다만, 더 이상 SSH 비밀번호가 필요하지 않고 바로 웹브라우저에서 해당 서버에 접속할 수 있어 굉장히 편하다.

하지만 주피터노트북이 항상 실행되게 하기 위해 

콘솔 창에서 ctrl + z 눌러 잠시 중지시켜주고,

 

bg (백그라운드에서 돌아갈 수 있게 하고)

 

소유권을 포기하게 하는 명령어를 입력하면 항상 주피터가 실행중이게 됨!

 

 

 

 

728x90

* 이용하는 PUTTY 설정은 mozi.tistory.com/191  

 

[AWS] EC2 인스턴스 Putty 로 접속하기

리눅스 환경이라면, ssh -i <파일> <서버IP> 옵션을 줘서 간단하게 접속할 수 있습니다. 윈도우 환경에서는 그럴수 없으므로 Putty 를 사용하여 EC2 인스턴스에 접속합니다. 접속하는 방법을 알아보겠

mozi.tistory.com

이것을 참고했습니다.

 

 

저번시간 코딩한 엔드포인트를 모두 깃허브에 잘 올렸으므로 이제

EC2 instance 에 배포를 할 것이다!

 

먼저 위의 블로그를 참고해 SSH 접속을 하고 deploy key 를 생성해야 한다. 

 

deploy key : 서버에서 깃허브 코드를 받아 오기 위해서 사용. 깃허브용 read-only SSH key 라고 이해하면 쉽다.

 

 

 

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 

이렇게 생성! 후 

deploy를 복사해서 깃허브의 원하는 저장소에 등록해줘야 한다. 

 

 

cat ~/.ssh/id_rsa.pub 

명령어를 실행하면 deploy key의 public key 가 화면에 출력된다. 그 값을 복사한 후 깃헙의 원하는 저장소에 가서 복사한 값을 넣도록 한다.

 

 

 

설정 완료!

 

키 추가한 후 EC2 에 SSH 접속 하고,

git clone 해 깃허브에서 api 코드를 받아온다.

그 후 ec2에도 콘다를 설치하고 .~/.bashrc 로 bash 설정을 다시 읽어 들임으로써 콘다가 PATH 에 추가되도록 한다.

 

그 후 파이썬 가상환경을 활성화해주고 

 

nohup python setup.py runserver --host=0.0.0.0 &

 

nohup : 현재 SSH 세션이 종료되어도 해당 명령어는 계속해서 실행해 주는 명령어. 즉 서버에서 EXIT 해도 API는 계속 실행된다는 의미

& : 해당 명령어를 background mode로 실행시켜준다.

--host = 0.0.0.0 : host를 0.0.0.0 으로 지정해주어야 외부에서도 HTTP를 통해 접속할 수 있다.

 

 

CURL localhost:5000/ping

 

실행했을 때 pong 응답이 리턴되면 api 가 제대로 배포 된 것을 확인 가능~

728x90

EC2 : AWS 에서 사용하는 서버이다. 그리므로 ec2 instance (각각의 서버) 에 설계한 api 를 배포하면 된다.

 

EC2 는 다양한 사양 옵션을 제공하므로 필요한 사양의 인스턴스를 선택해 사용하면 된다. (사양이 좋을수록 비싸다.)

운영체제 또한 우분투, 센토스, 윈도우 서버까지 다양하게 제공하므로 필요한 사항/운영체제 선택해 사용하면 된다.

 

 

 

 

먼저 aws 상단의 헤더 메뉴에서 service 링크 클릭한 후 검색창에서 EC2 를 입력해 서비스 링크를 찾은 후 넘어가도록 한다. 

그 후 화면 중간의 Launch Instance 를 클릭한 후 사용할 운영체제 시스템을 선택해야 한다. 

 

설정 확인 후 review and luanch 를 누르면

 

 

pem key 를 설정하라는 메세지가 나오면, 적당한 이름을 입력한 후 다운로드받자.

pem 키를 이용해 ec2 서버에 ssh 접속을 할 수 있게 된다.  잘 보관하도록 하자!

 

 

 

 

준비가 다 됐으니 접속해보자.!!

 

연결 성공한 것 확인 가능하다.

728x90

1. RDS (relational Database Service : aws 에서 제공하는 데이터베이스 서비스. 

 

개발자가 직접 db 서버를 설치하고 운용할 필요 없이 데이터베이스를 설정하고 사용할 수 있다. 원하는 데이터베이스 시스템과 버전, 설정을 정하고 난 후 곧바로 사용하면 된다. 

 

먼저 지역을 서울로 설정해줘야한다!

 

(1) mysql 설정 파일 만들기

한국말을 처리해야 하므로 인코딩 UTF-8 로 변경해야 한다.

 

파라미터 그룹 생성 누른 후 ,

(생성하는 데이터베이스와 버전에 맞게 지정해야 한다. 나의 경우는 mysql8.0 데이터베이스 생성 예정이라 8.0 으로 골랐다.)

 

 

생성 후 방금 생성한 parameter를 선택한 후 => 파라미터 그룹 작업 => 편집 을 누른 후,

 

parameter 들의 설정 값을 바꿔야 한다. 검색 창에서 수정하고자 하는 parameter를 검색하여 찾은 후 value 값을 원하는 값으로 수정하면 된다.

 

 

 

 

맞으면 저장!

 

 

 

 

 

 

 

 

(2) MySQL 데이터베이스 생성하기

 

데이터 베이스 생성하기를 누른 후 

 

어떤 시스템을 사용할 건지 선택한 후,

 

세부사항을 설정한다.

 

 

필자는 Public accessibility 옵션을 yes로 설정했다. 그래야 인터넷을 통해 데이터베이스에 접속이 가능하기 때문이다.

(실제 서비스하는 시스템이라면 'NO' 로 해주는 것이 좋다.)

 

 

그리고 database 생성하기를 누르면 끝!

 

 

이제 AWS RDS 를 사용해 데이터베이스를 생성했고 설정도 완료했다. 

AWS 클라우드에서 우리의 데이터베이스가 운영되고 있는 것이다 ! 

 

내가 쓴 글 중 데이터베이스와 table 를 만든 글을 참고해 만들면 된다!

+ Recent posts