일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 영어
- API
- 유니티
- Ai
- AWS
- logstash
- sample
- MSSQL
- Kibana
- Windows
- build
- elasticsearch
- Linux
- 엘라스틱서치
- nodejs
- error
- docker
- s3
- Python
- 설정
- unity
- Es
- JavaScript
- ChatGPT
- mariadb
- 구글
- ssh
- JS
- MySQL
- Today
- Total
가끔 보자, 하늘.
Elasticsearch Docker Desktop으로 실행해보기 본문
우선 Docker Desktop에서 Elasticsearch , Kibana 이미지를 찾아 실행합니다.
둘 모두 잘 실행되었다면 kibana로 접속합니다. http://localhost:5601로 접속하면 아래와 같은 화면이 뜹니다.
docker 로 둘을 실행하면 서로 다른 네트웍으로 인식하고 elasticsearch에서는 kibana의 원격접속 인증을 위해 elasticsearch에서 발급한 토큰을 입력하라고 요청합니다.
elasticsearch docker에 exec 탭에서 아래 커멘드를 입력해 토큰을 생성합니다.
bin/elasticsearch-create-enrollment-token --scope kibana
이렇게 발급된 코드값을 복사해 kibana 웹 페이지에서 입력합니다. 그럼 아래와 같은 코드값을 입력하라는 창이 다시 나옵니다.
이 코드는 kibana docker logs탭에서 확인할 수 있습니다.
(* 처음부터 여기 출력된 링크를 통해 kibana를 실행했다면 인증코드 확인 창은 안뜹니다.)
이제 정상적으로 시작되고 곧 id,pw를 문의하는 창이 뜹니다.
기본 Username은 elastic인데, 비번은 설정한 적이 없기에 초기화해서 사용하면 됩니다. elasticsearch docker의 exec 탭으로 다시 이동해 아래 내용을 입력합니다.
bin/elasticsearch-reset-password -u elastic -i
이제 패스워드를 초기화하여 로그인이 가능합니다.
이제 외부에서의 연결이 가능한지 테스트 해봅니다.
% curl http://localhost:9200
curl: (52) Empty reply from server
8.x부터는 http 연결을 지원하지 않고 https만 가능합니다. 이를 위해 docker 에 설치된 elasticsearch에 있는 인증서를 docker cp 명령을 이용해 로컬로 복사해 사용해야 합니다.
docker cp 16ae7e60abaf:/usr/share/elasticsearch/config/certs/http_ca.crt .
이제 curl에 인증서를 포함해 https로 연결하면 됩니다.
% curl --cacert http_ca.crt -u elastic:your_password https://localhost:9200
{
"name" : "16ae7e60abaf",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "evrPW-hDQmmQ9U3CcMdmJQ",
"version" : {
"number" : "8.15.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "1a77947f34deddb41af25e6f0ddb8e830159c179",
"build_date" : "2024-08-05T10:05:34.233336849Z",
"build_snapshot" : false,
"lucene_version" : "9.11.1",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
python에서는 다음과 같이 연결 테스트를 해볼 수 있습니다.
es_client = None
def initialize_elasticsearch_client():
global es_client
es_host = 'https://localhost:9200'
es_username = 'elastic'
es_password = 'your_password'
ca_certs_path = './http_ca.crt'
try:
es_client = Elasticsearch(
[es_host],
basic_auth=(es_username, es_password),
verify_certs=True,
ca_certs=ca_certs_path,
)
if es_client.ping():
print("Elasticsearch 클라이언트 초기화 성공")
else:
print("Elasticsearch 클라이언트 초기화 실패: Elasticsearch 서버가 응답하지 않습니다.")
except ConnectionError as e:
print("Elasticsearch 클라이언트 초기화 실패: 연결 오류 발생:", e)
except Exception as e:
print("Elasticsearch 클라이언트 초기화 실패:", e)
initialize_elasticsearch_client()
이렇게 로컬 개발환경 설정을 위한 docker elasticsearch 실행 방법을 간단히 정리해 보았습니다. 도움이 되셨기를... ^^
'개발 이야기 > 인프라 구축 및 운영' 카테고리의 다른 글
ElasticON AI (0) | 2024.02.05 |
---|---|
AWS re:Invent re:Cap (0) | 2024.02.01 |
Stunnel4 를 이용한 ssl 터널링 설정하기 (0) | 2024.01.19 |
Openssl 버전 업그레이드 중 사고 발생! 주의하세요!! (1) | 2023.12.22 |
screen 으로 세션 관리하기 (1) | 2023.11.27 |