AWS EC2 (Amazon Elastic Compute Cloud)
안전하고 크기 조정이 가능한 컴퓨팅 용량을 클라우드에서 제공하는 웹 서비스
AWS AMI (Amazon Machine Images)
EC2 인스턴스를 시작하는 데 필요한 정보가 들어있는 이미지 즉 EC2의 복사본
사용 할 수 있는 대표적인 OS
- Amazon Linux2
- CentOS
- Red Hat Enterprise Linux
- Windows Server
- Ubuntu
AWS 탄력적 IP
EC2 인스턴스를 중지하고 다시 시작해도 IP 주소는 유지 시켜줌.
AWS ELB (Elastic Load Balancing)
AWS에서 ELB라는 이름으로 제공하는 로드 벨런서
AWS ROUTE53
AWS에서 ROUTE53이라는 이름으로 제공하는 DNS
구성
1. EC2 3개 구성
2. EC2 탄력적 IP 할당
3. EC2 인스턴스에 Docker 설치 후 Elasticsearch, Kibana 컨테이너 생성
- 인바운드 규칙 추가 (9200,9300-9305,5601)
- EC2 (1) = Docker + Elasticsearch(es1, node = master + data) + Kibana
- EC2 (1) = Docker + Elasticsearch(es2, node = master + data)
- EC2 (1) = Docker + Elasticsearch(es3, node = data) + Elasticsearch(es4, node = data)
4. 각 EC2에 있는 Elasticsearch Cluster 구성
5. ELB (로드 벨런싱) 적용
6. Route53으로 로드 벨런싱 DNS 변경
7. ELB 정상 실행 확인
1. EC2 3개 구성
AMI는 Amazone Linux로 선택
2. EC2 탄력적 IP 할당
3. EC2 인스턴스에 Docker 설치 후 Elasticsearch, Kibana 컨테이너 생성
4. 각 EC2에 있는 Elasticsearch Cluster 구성
EC2 (1)
docker-compose.yml
- EC2 (1) = Docker + Elasticsearch(es1) + Kibana
version: "3.3"
services:
es1:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.1
container_name: es1
network_mode: host
environment:
- node.name=es1
- cluster.name=es-docker-cluster
- discovery.seed_hosts=172.25.11.112,172.25.11.113
- cluster.initial_master_nodes=es1,es2
- node.roles=master,data,transform
- network.publish_host=172.25.11.111
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /home/ec2-user/data01:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:7.9.1
links:
- es1:es1
container_name: kibana
ports:
- 5601:5601
environment:
- server.name=kibana
- server.host=0
- ELASTICSEARCH_HOSTS=http://172.25.11.111:9200
- EC2 (1) = Docker + Elasticsearch(es2)
version: "3"
services:
es2:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.1
container_name: es2
network_mode: host
environment:
- node.name=es2
- cluster.name=es-docker-cluster
- discovery.seed_hosts=172.25.11.111,172.25.11.113
- cluster.initial_master_nodes=es1,es2
- node.roles=master,data,transform
- network.publish_host=172.25.11.112
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /home/ec2-user/data01:/usr/share/elasticsearch/data
- EC2 (1) = Docker + Elasticsearch(es3) + Elasticsearch(es4)
version: "3"
services:
es3:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.1
container_name: es3
network_mode: host
environment:
- node.name=es3
- http.port=9200
- transport.port=9300
- cluster.name=es-docker-cluster
- discovery.seed_hosts=172.25.11.111,172.25.11.112
- cluster.initial_master_nodes=es1,es2
- node.roles=data,transform
- network.publish_host=172.25.11.113
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /home/ec2-user/data01:/usr/share/elasticsearch/data
es4:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.1
container_name: es4
network_mode: host
environment:
- node.name=es4
- http.port=9201
- transport.port=9301
- cluster.name=es-docker-cluster
- discovery.seed_hosts=172.25.11.111:9300,172.25.11.112:9300
- cluster.initial_master_nodes=es1,es2
- node.roles=data,transform
- network.publish_host=172.25.11.113
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /home/ec2-user/data02:/usr/share/elasticsearch/data
인바운드 규칙 생성
http://탄력적IP/_cat/nodes
172.25.11.111 44 51 0 0.00 0.06 0.07 dmt * es1
172.25.11.112 50 84 2 0.01 0.47 0.47 dtt - es2
172.25.11.113 50 73 1 0.00 0.16 0.26 dm - es3
172.25.11.113 47 84 2 0.01 0.47 0.47 dt - es4
5. ELB (로드 벨런싱) 적용
이름 + 네트워크 + 보안 + 리스너(9200) 작성
대상 그룹으로 ES2 3개 적용
6. Route53으로 로드 벨런싱 DNS 변경
ROUTE53 이동
7. ELB 정상 실행 확인
Route53으로 등록한 도메인 접속 후 새로고침하여 es name 바뀌는지 확인
"name" : "es1"
"name" : "es2"
"name" : "es3"
"name" : "es4"
'n년차 개발자' 카테고리의 다른 글
Prometheus, Grafana 사용해보기 (0) | 2022.08.23 |
---|---|
트랜잭션 격리 수준 (Isolation level) (0) | 2022.08.20 |
AWS Lambda, S3, EventBridge, Cloude Watch를 사용하여 EC2 AUTO STOP 적용하기 (JAVA) (0) | 2022.07.14 |
AWS EC2 생성 후 SSH 22 포트 접근 Connection timed out (0) | 2022.07.12 |
로드밸런싱, L2, L3, L4, L7 스위치, HAProxy 란? (0) | 2021.06.06 |