Elasticsearch7安装与集群

♀尐吖头ヾ 提交于 2020-02-28 14:27:11

下载安装

Elasticsearch下载

Elasticsearch的安装比较简单,下载下来直接解压到指定的目录就可以了。关键在于配置,这里我们下载的是7.1.1版本的Elasticsearch。

es-dir

es-config

elasticsearch.yml配置文件

elasticsearch配置中最重要的是前面几项:

  1. cluster.name 表示集群的名字,默认是elasticsearch,最好设置一下,因为客户端连接会用到

  2. node.name 表示节点的名字,是为了方便区分不同的节点

  3. node.master 为true表示这个节点有做为主节点的资格

  4. node.data 为true表示这个节点可以存储数据

  5. path.data 数据目录

  6. path.logs 日志目录

不同的场景可以使用不同的组合,node.master: true,node.data:true表示又要协调客户端请求,又要存储数据。node.master:false,node.data:true表示只存储数据。node.master:true,node.data: false只协调客户端请求,不存储数据。node.master:false,node.data:false只处理客户端请求。

# https://www.elastic.co/guide/en/elasticsearch/reference/index.html

cluster.name: my-es
node.name: node-1
node.master: true
node.data: true

# 数据存放目录,多个目录使用逗号分割
path.data: F:\component\esdata\data1

# 绑定HTTP端口
http.port: 9200

# 日志目录
path.logs: F:\component\esdata\logs1

# 绑定地址,以便于外网访问
#network.host: 0.0.0.0

#表示开启跨域访问支持,默认为false
http.cors.enabled: true

#表示跨域访问允许的域名地址,,可支持正则表达式,这里“*”表示允许所有域名访问
http.cors.allow-origin: "*"

#允许跨域访问头部信息
#http.cors.allow-headers: "X-Requested-With,Content-Type, Content-Length, Authorization" 

# 配置host以便于节点启动的时候更快发现其他节点,默认["127.0.0.1", "[::1]"]
#discovery.seed_hosts: ["host1", "host2"]

# Bootstrap the cluster using an initial set of master-eligible nodes:
#cluster.initial_master_nodes: ["node-1", "node-2","node-3"]

#设置true用来锁住物理内存
#bootstrap.memory_lock: true

#索引字段缓存大小
#indices.fielddata.cache.size: 50mb 

#设置集群中master节点初始列表,可通过这些
#discovery.zen.ping.unicast.hosts: ["192.168.37.134:9300","192.168.37.135:9300","192.168.37.136:9300"] 

#配置当前集群最少的master节点数,默认为1
#discovery.zen.minimum_master_nodes: 1

jvm.options配置

jvm配置主要是配置启动Elasticsearch需要的JVM参数,一般情况不用配置,最常用的配置-Xms和-Xmx就是Elasticsearch使用的内存初始值和最大值。本地测试可以调小一点,线上可以调大一点。

-Xms512M
-Xmx512M
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+DisableExplicitGC
-XX:+AlwaysPreTouch
-server
-Xss1m
-Djava.awt.headless=true
-Dfile.encoding=UTF-8
-Djna.nosys=true
-Djdk.io.permissionsUseCanonicalPath=true
-Dio.netty.noUnsafe=true
-Dio.netty.noKeySetOptimization=true
-Dio.netty.recycler.maxCapacityPerThread=0
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.disable.jmx=true
-Dlog4j.skipJansi=true
-XX:+HeapDumpOnOutOfMemoryError

启动:

es-bin

elasticsearch

配置完成就可以在浏览器中访问: http://localhost:9200/

es-http

集群的方式

集群(cluster)是一组具有相同cluster.name的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当然一个节点也可以组成一个集群。

启动Elasticsearch集群只需要多复制几个Elasticsearch,修改一下基本配置就可以了,主要是修改节点名称、日志目录和数据目录。 注意,集群方式只需要有一个节点配置http.port: 9200就可以了,否则会提示端口已经绑定而起不起来,一般情况主节点配置一下就可以了。

elasticsearch-head工具

Elasticsearch提供了HTTP方式的交互方式,我们可以通过curl、postman等工具直接发送http请求来获取相关信息,但是很多时候比较麻烦,我们可以通过elasticsearch-head来查看相关的信息。 es-head下载,可以使用git的方式,或者直接下载zip然后解压。

elasticsearch-head是运行需要node.js需要先安装一下node.js,顺便就吧npm也安装了。进入elasticsearch-head的根目录,执行下面的命令:

npm install
npm run start

然后就可以访问: http://localhost:9100/

es-head-cluster

端口可以在Gruntfile.js文件中修改:

connect: {
        server: {
            options: {
                port: 9100,
                base: '.',
                keepalive: true
            }
        }
    }

es-head-grunt

注意因为elasticsearch-head使用的端口是9100,Elasticsearch使用的是9200,JavaScript代码访问的时候有跨越问题,所以使用elasticsearch-head,在Elasticsearch的elasticsearch.yml配置文件中一定要配置下面2项。

http.cors.enabled: true
http.cors.allow-origin: "*"

我们使用elasticsearch-head创建2个索引,分片是3,副本是1。

如上图所示,我们可以看到每一个6个分片被均匀的分布到了3个节点上,主分片和副本分片不在同一个节点,这样就算一个节点失效,也保证了可用。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!