Elasticsearch如何利用集群?
Elasticsearch how to take advantage of cluster?
将单节点集群更改为多节点集群后,是否需要采取任何措施来利用集群?
例如,我们的应用服务器使用单个ip/port
(我们的单节点ip/port)来搜索文档。
另外,logstash、kibana、spark,它们都指向单ip/port。
我应该放一个 load balancer
来利用多节点吗?还是我可以免费得到一些东西?
我遵循了以下 docker 文件(只是 将网络模式更改为主机并部署在多个主机上)
es-log-00:
build:
context: .
dockerfile: ./compose/elasticsearch/Dockerfile
args:
- VERSION=${VERSION}
- ELASTICSEARCH_NETWORK_HOST=${ELASTICSEARCH_NETWORK_HOST}
- ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT}
- MEM=${MEM}
- ENV=${ENV}
container_name: es-log-00
network_mode: host
environment:
- node.name=node-master
- discovery.seed_hosts=node1,node2
- cluster.initial_master_nodes=node-master,node1,node2
- bootstrap.memory_lock=true
- cluster.name=littlehome-log
- network.publish_host=192.168.1.105
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/lib/elasticsearch:/usr/share/elasticsearch/data
- /var/lib/elasticsearch-backup:/var/lib/elasticsearch-backup
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
es-log-01:
restart: always
build:
context: .
dockerfile: ./compose/elasticsearch/Dockerfile
args:
- VERSION=${VERSION}
- ELASTICSEARCH_NETWORK_HOST=${ELASTICSEARCH_NETWORK_HOST}
- ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT_SEARCH}
- MEM=${MEM1}
- ENV=${ENV}
container_name: es-log-01
network_mode: host
environment:
- node.name=node1
- discovery.seed_hosts=node-master,node2
- cluster.initial_master_nodes=node-master,node1,node2
- bootstrap.memory_lock=true
- cluster.name=littlehome-log
- network.publish_host=192.168.1.123
volumes:
- /etc/localtime:/etc/localtime:ro
- data-log1:/usr/share/elasticsearch/data
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
您无需执行任何特殊操作即可利用 Elasticsearch 中的并行化。当您在集群中有一个包含多个分片的索引时,Elasticsearch 将尝试平衡集群中每个索引的主分片,并且当您进行查询时,它会将查询发送到持有每个分片的主副本的节点。然后每个节点将针对该分片执行查询,并将 return 结果发送给协调节点,协调节点执行任何排序或聚合,并将结果集 return 返回给客户端。
如果单个节点出现故障,使用负载均衡器是个好主意,但通常您不需要做任何事情,除了每个索引有多个分片。
将单节点集群更改为多节点集群后,是否需要采取任何措施来利用集群?
例如,我们的应用服务器使用单个ip/port
(我们的单节点ip/port)来搜索文档。
另外,logstash、kibana、spark,它们都指向单ip/port。
我应该放一个 load balancer
来利用多节点吗?还是我可以免费得到一些东西?
我遵循了以下 docker 文件(只是 将网络模式更改为主机并部署在多个主机上)
es-log-00:
build:
context: .
dockerfile: ./compose/elasticsearch/Dockerfile
args:
- VERSION=${VERSION}
- ELASTICSEARCH_NETWORK_HOST=${ELASTICSEARCH_NETWORK_HOST}
- ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT}
- MEM=${MEM}
- ENV=${ENV}
container_name: es-log-00
network_mode: host
environment:
- node.name=node-master
- discovery.seed_hosts=node1,node2
- cluster.initial_master_nodes=node-master,node1,node2
- bootstrap.memory_lock=true
- cluster.name=littlehome-log
- network.publish_host=192.168.1.105
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/lib/elasticsearch:/usr/share/elasticsearch/data
- /var/lib/elasticsearch-backup:/var/lib/elasticsearch-backup
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
es-log-01:
restart: always
build:
context: .
dockerfile: ./compose/elasticsearch/Dockerfile
args:
- VERSION=${VERSION}
- ELASTICSEARCH_NETWORK_HOST=${ELASTICSEARCH_NETWORK_HOST}
- ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT_SEARCH}
- MEM=${MEM1}
- ENV=${ENV}
container_name: es-log-01
network_mode: host
environment:
- node.name=node1
- discovery.seed_hosts=node-master,node2
- cluster.initial_master_nodes=node-master,node1,node2
- bootstrap.memory_lock=true
- cluster.name=littlehome-log
- network.publish_host=192.168.1.123
volumes:
- /etc/localtime:/etc/localtime:ro
- data-log1:/usr/share/elasticsearch/data
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
您无需执行任何特殊操作即可利用 Elasticsearch 中的并行化。当您在集群中有一个包含多个分片的索引时,Elasticsearch 将尝试平衡集群中每个索引的主分片,并且当您进行查询时,它会将查询发送到持有每个分片的主副本的节点。然后每个节点将针对该分片执行查询,并将 return 结果发送给协调节点,协调节点执行任何排序或聚合,并将结果集 return 返回给客户端。
如果单个节点出现故障,使用负载均衡器是个好主意,但通常您不需要做任何事情,除了每个索引有多个分片。