docker 설치 ElasticSearch: 7.8.0 클러스터
ElasticSearch 클러스터는 동적 요청을 지원하는 방식으로 클러스터 및 정적 구성 파일을 구축하여 클러스터를 구축합니다.
클러스터의 동적 연결 방식에 대한 공식 설명서:https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html
사전 준비 작업
매개변수에 대한 홈 페이지 설명:https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery-settings.html
elsticsearch 7.8.0 다운로드
docker pull elasticsearch:7.8.0
네트워크 생성 es_net은elasticsearch 집단을 놓는데 사용
docker network create --subnet=172.18.0.0/24 es_net
홈페이지의 dockerFile 파일에 있는 정보에 따르면 WORKDIR/usr/share/elasticsearch는
/usr/share/elasticsearch
디렉터리에 설치되어 있음을 알 수 있습니다. 다음 작업을 편리하게 하기 위해 데이터 볼륨을 만들어서 elasticsearch에서 발생하는 데이터를 호스트에 비추어 es 다운된 데이터가 복구되지 않도록 합니다.데이터 볼륨 생성
docker volume create es_data01
docker volume create es_data02
docker volume create es_data03
# ,
docker volume create es_conf
docker volume create es_plugins
데이터, 설정, 플러그인 각각 3개의yml 프로필 만들기
동적으로 ElasticSearch 클러스터 구축 (권장)
ElasticSearch를 시작하고 ES가 자체적으로 가지고 있는 RestFul 스타일의 조작을 통해 집단의 구축을 완성할 수 있다는 것을 의미합니다. Dockerhub에서 공식적인 시작 방식은 단일 노드의 시작입니다. 먼저 3개
ElasticSearch
를 단독으로 시작합니다.시작 es01
docker run -it -d --restart always -p 9201:9200 -p 9301:9300 \
--name es01 --network=es_net --ip=172.18.0.101 \
-v es_data01:/usr/share/elasticsearch/data \
-v es_conf:/usr/share/elasticsearch/conf \
-v es_plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
부팅es02
docker run -it -d --restart always -p 9202:9200 -p 9302:9300 \
--name es02 --network=es_net --ip=172.18.0.102 \
-v es_data02:/usr/share/elasticsearch/data \
-v es_conf:/usr/share/elasticsearch/conf \
-v es_plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
부팅es03
docker run -it -d --restart always -p 9203:9200 -p 9303:9300 \
--name es03 --network=es_net --ip=172.18.0.103 \
-v es_data03:/usr/share/elasticsearch/data \
-v es_conf:/usr/share/elasticsearch/conf \
-v es_plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
PUT 방식으로 linux의curl 명령을 통해 es02와es03에서
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{
"persistent" : {
"cluster" : {
"remote" : {
"leader" : {
"seeds" : [
"127.0.0.1:9300"
]
}
}
}
}
}
'
업데이트
persistent
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{
"persistent" : {
"indices.recovery.max_bytes_per_sec" : "50mb"
}
}
'
업데이트
transient
curl -X PUT "localhost:9200/_cluster/settings?flat_settings=true&pretty" -H 'Content-Type: application/json' -d'
{
"transient" : {
"indices.recovery.max_bytes_per_sec" : "20mb"
}
}
'
구성 내용 삭제
transient
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{
"transient" : {
"indices.recovery.max_bytes_per_sec" : null
}
}
'
모든 설정 삭제
transient
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{
"transient" : {
"indices.recovery.*" : null
}
}
'
ElasticSearch는 정적 구성 파일로 클러스터를 시작합니다.
실패한 원인은 용기를 시작할 때 파라미터가 없어졌기 때문일 것이다.홈페이지 문서에서 장래 버전을 사용하지 않겠다고 하였다
discovery.zen.ping.unicast.hosts
.discovery.seed_hosts
vim /var/lib/docker/volumes/es_conf/_data/es01.yml
주석 하숙집 호스트 ip와 es 집단 통신의 포트 주소를 수정하십시오.
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.117.231 # docker ip
http.port: 9200 # ,
transport.tcp.port: 9300 # ,
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.seed_hosts: ["192.168.117.231:9300","192.168.117.231:9301","192.168.117.232:9302"]
discovery.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
# , docker -p
상기 프로필을 통해 알 수 있듯이 매핑 포트는 각각
es-node1
, 이 포트들은 집단 통신을 위한 것이다. 즉, 세 개의 노드 귀속 포트는 각각 9300、9301、9302
, -p 9300:9300
, -p 9301:9300
, 동시에 우리는 사용할 수 있다. -p 9302:9300
, -p 9200:9200
, -p 9201:9200
양식을 만들려면 다음과 같이 하십시오.
노드
호스트 포트 바인딩 1
호스트 포트 바인딩 2
es-node1
9200
9300
es-node2
9201
9301
es-node3
9202
9301
작용
대외 서비스 포트
es1-es3 집단 간 통신 포트
즉, 숙주 호스트(
-p 9202:9200
의 192.168.117.231
, 9200-9202
포트는 모두 es집단에 의해 사용된다9300-9302
vim /var/lib/docker/volumes/es_conf/_data/es02.yml
에스노드 1과 다른 점은 노드 이름을 바꾸는 거예요.
cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.117.231 # docker ip
http.port: 9200 # ,
transport.tcp.port: 9300 # ,
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.seed_hosts: ["192.168.117.231:9300","192.168.117.231:9301","192.168.117.232:9302"]
discovery.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
# , docker -p
es-node2 노드의 프로필 정보
vim /var/lib/docker/volumes/es_conf/_data/es02.yml
에스노드 1과 다른 점은 노드 이름을 바꾸는 거예요.
cluster.name: elasticsearch-cluster
node.name: es-node3
network.bind_host: 0.0.0.0
network.publish_host: 192.168.117.231 # docker ip
http.port: 9200 # ,
transport.tcp.port: 9300 # ,
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.seed_hosts: ["192.168.117.231:9300","192.168.117.231:9301","192.168.117.232:9302"]
discovery.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
# , docker -p
순차적으로 클러스터 시작
es-node1 시작 명령,docker 프로세스 별명es01
사용된 네트워크는 위에서 만든 네트워크 카드
es-node3
, 지정된 노드의 내부 네트워크 IPes_net
는 172.18.0.100
와 같은 네트워크 세그먼트를 필요로 한다docker run -it -d --restart always -p 9200:9200 -p 9300:9300 \
--name es01 --network=es_net --ip=172.18.0.100 \
-v es_data01:/usr/share/elasticsearch/data \
-v /var/lib/docker/volumes/es_conf/_data/es01.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v es_plugins:/usr/share/elasticsearch/plugins \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
es_net
사용한 es의 메모리를 지정하여 es를 시작하는 데 너무 많은 메모리 공간을 차지하는 것을 방지합니다. ES_JAVA_OPTS
오프라인으로 데이터 볼륨 맵을 시작하는 것을 방지합니다. 유일하게 주의해야 할 것은 프로필 es01입니다.yml는 내부의es가 시작될 때 사용되는 프로필에 비칩니다.es-node2 시작 명령
docker run -it -d --restart always -p 9201:9200 -p 9301:9300 \
--name es02 --network=es_net --ip=172.18.0.101 \
-v es_data02:/usr/share/elasticsearch/data \
-v /var/lib/docker/volumes/es_conf/_data/es02.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v es_plugins:/usr/share/elasticsearch/plugins \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
es-node3 시작 명령
docker run -it -d --restart always -p 9202:9200 -p 9302:9300 \
--name es03 --network=es_net --ip=172.18.0.102 \
-v es_data03:/usr/share/elasticsearch/data \
-v /var/lib/docker/volumes/es_conf/_data/es03.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v es_plugins:/usr/share/elasticsearch/plugins \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.