Elasticsearch集群搭建(Docker)

Elasticsearch集群搭建(Docker)


Es简介

ElasticSearch(https://www.elastic.co/cn/elasticsearch/) 是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

Es版本

Es6.x版本前后,变化较大,本文只针对6.x以上版本介绍

使用场景
  • 全文搜索
  • 联想查询
优势 (以下引用来自elastic官方)
  • 查询速度很快:

    快速获得结果:
    如果您能够立即获得答案,您与数据的关系就会发生变化。这样您就有条件进行迭代并涵盖更大的范围。

    强大的设计:
    但是要达到这样的速度并非易事。我们通过有限状态转换器实现了用于全文检索的倒排索引,实现了用于存储数值数据和地理位置数据的 BKD 树,以及用于分析的列存储。

    无所不包:
    而且由于每个数据都被编入了索引,因此您再也不用因为某些数据没有索引而烦心。您可以用快到令人惊叹的速度使用和访问您的所有数据。

  • 友好的查询和分析功能:

    定义自己的搜索方式:
    通过 Elasticsearch,您能够执行及合并多种类型的搜索(结构化数据、非结构化数据、地理位置、指标),搜索方式随心而变。

    分析大规模数据:
    找到与查询最匹配的 10 个文档并不困难。但如果面对的是十亿行日志,又该如何解读呢?Elasticsearch 聚合让您能够从大处着眼,探索数据的趋势和规律。

  • 可扩展性,开发环境和生产环境可以无缝切换:

    分片功能:
    能够水平扩展,每秒钟可处理海量事件,同时能够自动管理索引和查询在集群中的分布方式,以实现极其流畅的操作

  • 相关度:

    搜索所有内容,找到所需的具体信息:
    基于各项元素(从词频或新近度到热门度等)对搜索结果进行排序。将这些内容与功能进行混搭,以优化向用户显示结果的方式。Elasticsearch 具备齐全功能,可以处理包括各种复杂情况(例如拼写错误)在内的人为错误。

  • 弹性:

    弹性收缩特点:
    硬件故障。网络分割。Elasticsearch 为您检测这些故障并确保您的集群(和数据)的安全性和可用性。通过跨集群复制功能,辅助集群可以作为热备份随时投入使用。

集群搭建

使用版本:Elasticsearch6.3.2,Centos:7
环境中需要包含Docker,Java

拉取镜像(其他版本: https://www.elastic.co/guide/en/elasticsearch/reference/6.3/docker.html)【三个服务器节点都需要安装镜像,如果镜像下载过慢可以使用镜像打包,上传至其他两个节点上】

docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2

挂载宿主机文件【所有服务器节点】

#es配置文件夹
mkdir /usr/local/elk/es/config
#es插件文件夹
mkdir /usr/local/elk/es/plugins
#es数据存放文件夹
mkdir /usr/local/elk/es/data

设置文件权限【所有服务器节点】

#修改文件权限
chmod -R 777 /usr/local/elk/es/

修改内存使用最大限制,如果服务器本身没有这么多内存,可以修改es启动变量来减少使用的内存大小【所有服务器节点】

#内存修改
vi /etc/sysctl.conf
#添加以下配置:
vm.max_map_count=262144 #具体大小可以查看es最小内存配置
#执行以下命令生效
sysctl -p

设置配置文件elasticsearch.yml,这里我只用了部分配置,具体配置详解:https://www.elastic.co/guide/en/elasticsearch/reference/6.3/modules.html

#【服务器节点_1】
vi /usr/local/elk/es/config/elasticsearch.yml
#配置内容
#集群模式下 cluster.name 必须一致
cluster.name: es
node.name: node-1
node.master: true
node.data: true
#es绑定本地ip
network.bind_host: 0.0.0.0
#es对外发布的ip
network.publish_host: node-1_外网ip
http.port: 9200
#主节点最少配置两个
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.unicast.hosts: ["node-1_外网ip",  "node-2_外网ip","node-3_外网ip"]
transport.tcp.port: 9300
transport.tcp.compress: true
#【服务器节点_2】
vi /usr/local/elk/es/config/elasticsearch.yml
#配置内容
cluster.name: es
node.name: node-2
node.master: true
node.data: true
network.bind_host: 0.0.0.0
network.publish_host: node-2_外网ip
http.port: 9200
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.unicast.hosts: ["node-1_外网ip",  "node-2_外网ip","node-3_外网ip"]
transport.tcp.port: 9300
transport.tcp.compress: true
#【服务器节点_3】
vi /usr/local/elk/es/config/elasticsearch.yml
#配置内容
cluster.name: es
node.name: node-3
node.master: true
node.data: true
network.bind_host: 0.0.0.0
network.publish_host: node-3_外网ip
http.port: 9200
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.unicast.hosts: ["node-1_外网ip",  "node-2_外网ip","node-3_外网ip"]
transport.tcp.port: 9300
transport.tcp.compress: true

启动docker-es ,不变更es使用最大最小内存数

docker run -d \
  --restart=always \
  --name elasticsearch \
  -p 9200:9200 \
  -p 9300:9300 \
  -v /usr/local/elk/es/plugins:/usr/share/elasticsearch/plugins \
  -v /usr/local/elk/es/data:/usr/share/elasticsearch/data \
  -v /usr/local/elk/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  docker.elastic.co/elasticsearch/elasticsearch

启动docker-es ,变更es使用最大最小内存数

docker run -d \
  --restart=always \
  --name elasticsearch \
  -p 9200:9200 \
  -p 9300:9300 \
  -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
  -v /usr/local/elk/es/plugins:/usr/share/elasticsearch/plugins \
  -v /usr/local/elk/es/data:/usr/share/elasticsearch/data \
  -v /usr/local/elk/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  docker.elastic.co/elasticsearch/elasticsearch

查看集群健康状态

http://服务器节点ip:9200/_cat/health?v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值