금방 끝날 줄 알았는데 생각보다 쫌쫌따리 에러가 많아서 조금 시간이 걸렸다. 이 긴 여정과 각종 명령어를 잘 남겨두기 위해 포스팅 ..
ElasticSearch 설치
1. docker-compose.yml 파일 설정
기존의 docker-compose.yml 파일에 엘라스틱 서치 관련 코드를 넣어줬다.
es_lecture:
image: docker.elastic.co/elasticsearch/elasticsearch:8.6.0
container_name: es_lecture
ports:
- "9200:9200"
environment:
- discovery.type=single-node
networks:
- neulpoom_network
2. 보안 인증 파일을 로컬에 복제
이 파일은 로컬에서 curl로 Elasticsearch 사용 시 필요하다.
docker cp es_lecture:/usr/share/elasticsearch/config/certs/http_ca.crt .
3. 유저 (아이디: elastic) 접속에 대해 인증
curl --cacert http_ca.crt -u elastic https://localhost:9200
4. elastic이 잘 떴는지 확인
curl --cacert http_ca.crt -u elastic -X GET "https://localhost:9200/_cluster/health?pretty"
이런 로그가 뜨면 엘라스틱서치가 잘 떴다는 거다.
docker-compose 파일을 통해 띄우지 않고, 엘라스틱서치 이미지부터 pull 받고 도커를 run 하면 로그로 elastic 비밀번호와 키바나 토큰 값이 함께 뜨는 것 같은데 나는 docker-compose.yml로 띄워서 그런지 그 값들이 뜨지 않았다. 그래서 비밀번호 값과 키바나 토큰 값이 필요할 때 초기화 명령어로 초기화 시켜서 썼다 😢
📌 비밀번호 및 키바나 토큰 값 뜨면 메모 필수!!
Kibana 설치
그 다음 엘라스틱서치의 데이터를 시각화해서 보여줄 수 있는 키바나를 설치해야한다.
docker-compose.yml 파일을 대폭 수정했다 .. kibana는 elasticsearch에 의존해야 하기 때문에 elasticsearch가 먼저 뜬 다음 👉 kibana가 떠야한다.
1. 위에서 작성한 docker-compose.yml 파일 수정
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.6.0
container_name: es_lecture
ports:
- "9200:9200"
environment:
- node.name=es_lecture
- discovery.type=single-node
- xpack.security.enabled=false
networks:
- neulpoom_network
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es_data:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:8.6.0
container_name: kibana_lecture
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
networks:
- neulpoom_network
depends_on:
- elasticsearch
volumes:
...
es_data:
driver: local
networks:
neulpoom_network:
2. kibana 접속
docker-compose를 통해 키바나를 띄웠으면 이제 접속 확인을 해보자. url로 주소를 입력해서 접속하면 된다.
http://localhost:5601
그럼 토큰 값 입력 화면이 뜬다. 키바나 토큰 값을 몰라서 토큰 값을 다시 재발급 받는 방법을 택했다.
2-1. 해당 elastic search 컨테이너로 진입
docker exec -it [컨테이너 이름] /bin/bash
2-2. 토큰 초기화 및 재발급
elasticsearch-create-enrollment-token --scope=kibana
📌이 때 주는 kibana 토큰 값을 꼭 메모해두자!!!
토큰값을 넣고 Configure Elastic을 누르면 6자리 코드를 넣으라고 한다. 이것도 처음 본 코드이기 때문에 조회했다.
2-3. 코드값 조회
docker logs [kibana 컨테이너 이름]
두근두근
Welcome to Elastic 뜨면 성공 🥹 Explore on my own 클릭하면 kibana의 메인페이지로 이동할 수 있다.
이제 그 다음 스텝 가볼까나 ..^-^
docker-compose.yml 파일 전체 코드
version: '3.8'
services:
db_neulpoom_user:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: neulpoom_user
ports:
- "3307:3306"
volumes:
- db_user:/var/lib/mysql
- ./mysql-init/user:/docker-entrypoint-initdb.d
restart: always
networks:
- neulpoom_network
db_neulpoom_lecture:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: neulpoom_lecture
ports:
- "3308:3306"
volumes:
- db_lecture:/var/lib/mysql
- ./mysql-init/lecture:/docker-entrypoint-initdb.d
restart: always
networks:
- neulpoom_network
db_neulpoom_coupon:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: neulpoom_coupon
ports:
- "3309:3306"
volumes:
- db_coupon:/var/lib/mysql
- ./mysql-init/coupon:/docker-entrypoint-initdb.d
restart: always
networks:
- neulpoom_network
db_neulpoom_payment:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: neulpoom_payment
ports:
- "3310:3306"
volumes:
- db_payment:/var/lib/mysql
- ./mysql-init/payment:/docker-entrypoint-initdb.d
restart: always
networks:
- neulpoom_network
db_neulpoom_lecture_resource:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: neulpoom_lecture_resource
ports:
- "3311:3306"
volumes:
- db_lecture_resource:/var/lib/mysql
- ./mysql-init/lecture_resource:/docker-entrypoint-initdb.d
restart: always
networks:
- neulpoom_network
redis_user:
hostname: redis_user
container_name: redis_user
image: redis:6
ports:
- "6381:6379"
networks:
- neulpoom_network
redis_coupon:
hostname: redis_coupon
container_name: redis_coupon
image: redis:6
ports:
- "6380:6379"
networks:
- neulpoom_network
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.6.0
container_name: es_lecture
ports:
- "9200:9200"
environment:
- node.name=es_lecture
- discovery.type=single-node
- xpack.security.enabled=false
networks:
- neulpoom_network
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es_data:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:8.6.0
container_name: kibana_lecture
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
networks:
- neulpoom_network
depends_on:
- elasticsearch
volumes:
db_user:
db_lecture:
db_coupon:
db_payment:
db_lecture_resource:
es_data:
driver: local
networks:
neulpoom_network:
'Project > MSA 프로젝트' 카테고리의 다른 글
[리팩토링] MSA 구조에서의 인증/인가 처리 (0) | 2024.07.21 |
---|---|
[트러블슈팅] '선착순 쿠폰 발급' 로직 - Redis를 통한 동시성 문제 해결 (2/2) (0) | 2024.06.30 |
[트러블슈팅] '선착순 쿠폰 발급' 로직 - 동시성 문제 발생 (w/ Race Condition) (1/2) (2) | 2024.06.30 |
[프로젝트] 선착순/일반 쿠폰 발급 로직 분리에 대한 고민 (0) | 2024.06.29 |
[프로젝트][MSA] API Gateway 작성으로 모듈 별 연결하기 (0) | 2024.06.25 |