AWS DB PIPELINE

Kafka install in EC2

with_AI 2022. 6. 30. 02:33

kafka

메세지 큐

분산환경 특화

분산 메세징 처리 시스템

데이터 영속성 보장

대용량 실시간 로그 처리에 특화

링크드인에서 개발

 

 producer와 Consumer

 

실습 구성도

EC2 두 개를 띄워서, 실습

 


AWS 로그인은 2가지 방식

루트사용자, IAM 사용자 2가지 옵션 존재

 

리전 -> 한국어, 언어 -> 한국어 설정

 

AWS 는 약 180여가지의 서비스가 존재

 

스타트업에서는 row 레벨의 코딩을 통한 서비스 배포를 하겠지만

대기업이나 엔터프라이즈에서는 서비스를 구매하여 사용하는 옵션도 존재

 

스타트업도 규모가 커질수록 서비스를 사용해야 할 수 있음

 


리전 -> 서울 

좌측 언어 -> 한국어

 

EC2 검색 -> EC2 인스턴스 생성하기

 

인스턴스 시작 -> AMI 아마존 머신 이미지 선택 -> 유형 선택  -> 인스턴스 세부 정보 구성 -> 스토리지 추가 -> 태그 추가 -> 보안 그룹 구성

 

CentOS는 가벼운 장점이 있음 (서버용)

t 타입을 주로 사용함 (마이크로 프리티어)

VPC, 네트워크

태그는 default로 꼭 넣어준다 (Name class-master) -> 협업할때 필요함

인바운드, 아웃바운드

 

보통 인바운드로 해킹 방지

 

새 보안 그룹 생성

class-bigdata-sg

규칙 추가 HTTP -> 80포트 자동으로 

소스: 위치 무관

 

 

키 페어 생성

-> RSA 키를 이용하여 보안

- 키 페어 이름에 리전 이름 넣는게 좋음

- pam 파일을 다운 받게됨

 

인스턴스

 

인스턴스 ID

프라이빗 IP, 퍼블릭 IP

VPC ID, 서브넷 ID

키페어

연결 버튼 -> 인스턴스 연결 (브라우저 바로 연결)

SSH 클라이언트 연결

- 터미널 열고

- pam파일을 chmod명령어로 400 권한을 준다

- ssh 명령어로 SSH 접속

git 설치 전

 

sudo yum update를 통해서 라이브러리 업데이트를 진행한다.

sudo yum install git 

 

리소스 다운로드

git clone -b master --single-branch https://github.com/njkwon/fc-bigdata/ 

 

GitHub - njkwon/fc-bigdata

Contribute to njkwon/fc-bigdata development by creating an account on GitHub.

github.com

 

엑세스 키 말고 IAM 권한을 이용하여 보안을 해주는것이 좋음

 

 

역할만들기

- EC2

- Admin

- 실제로는 어드민 권한을 주면 안된다.

- EC2Admin

 

다시 EC2에 들어가서 권한을 다시 부여해야함

- 작업

- 보안

- IAM 역할 수정

- 저장하기

 

aws s3 ls -> 실행이 되면 IAM 부여가 잘 된 것임

 

버켓 생성

- 유일한 이름으로 만들어야 한다.

- aws s3 mb s3://$bucketname 

 

S3 검색

- 버켓 검색 가능

- 리전에 대해서 항상 주의해아함

- 멀리 있는 리전에서 데이터를 가져오면 비용이 든다.

- 서울 리전에 생성하는 것을 추천

- aws s3 mb s3://$bucketname  --region ap-northeast-2

- 버켓 이름을 바꿔야 돌아갈 수 있음(반영이 늦어서)

- export bucketname=fc-class

- export 명령어로 변수 저장

 

 

git 다운로드 한걸 S3로 옮겨야 함

.git 파일 제외하고 보내는 명령어

 

aws s3 sync . s3://$bucketname --exlcude '.git/*'

 

버킷에 올렸을 때 나오는 화면

 

logstash 설치 -> 트위터 데이터를 받아서 넣어줌

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.0.tar.gz 

 

tar xvf logstash-7.4.0.tar.gz

 

ln -s logstash-7.4.0 logstash

 

vi bash_profile

logstash Path를 설정해준다

 

source ~/.bash_profile

 

설치 됐는지 확인

logstash --version

 

mkdir producer

cd producer

 

vi producer_test.conf

 

트위터 키를 넣어주기

 

output

stdout -> print 해준다라는 뜻

 

실행 방법

logstash -f producer_test.conf

 

트위터 정보를 가져와서 화면에 뿌려줌

 

제한이 있어서 바로 중지해야함

output 부분을 kafka 서버로 보내면 됨

 

cp producer_test.conf producer.conf

 

vi producer.conf

 

 

output 부분에 kafka IP 변경해주면 실행했을때 큐로 보내짐

 

여기까지가 producer와 server를 구성 한 것임

 

이제는 consumer를 만들어야 함

 


EC2 consumer 하나 또 만들기

 

t2.medium으로 만들기

 

고급 세부 정보에 자바 설치하는 커멘드 넣기

보안 그룹 class-bigdata-sg

 

 

결국 3개의 EC2를 모두 만듬

 

터미널 하나를 더 키고 SSH 접속을 한다

 

sudo yum update -y

 

자바는 미리 설치 됨

 

logstash 설치

 

logstash 설치 -> 트위터 데이터를 받아서 넣어줌

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.0.tar.gz 

 

tar xvf logstash-7.4.0.tar.gz

 

ln -s logstash-7.4.0 logstash

 

PATH 설정하기

vi bash_profile

source ~/.bash_profile

logstash --version

 

mkdir consumer

cd consumer

 

vi consumer.conf

logstash -f consumer.conf

 

producer에서

logstash -f producer.conf

 

왼쪽이 producer인데, 데이터를 받아서 consumer에서 받는 것을 성공 시킨 그림이다.