Elasticsearch集群与head插件

下载安装

Elasticsearch下载

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

目录

es目录

elasticsearch.yml配置文件

configuration

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

  1. cluster.name:表示集群的名字,默认是elasticsearch,最好设置一下,因为客户端连接会用到
  2. node.name:表示节点的名字,是为了方便区分不同的节点
  3. node.master:为true表示这个节点有做为主节点的资格
  4. node.data:为true表示这个节点可以存储数据
  5. path.data:数据目录
  6. path.logs:日志目录

不同的场景可以使用不同的组合:

node.master node.data 说明
true true 表示又要协调客户端请求,又要存储数据
false true 表示只存储数据,主要对文档进行增删改查操作,聚合操作等
true false 只协调客户端请求,不存储数据,创建或删除索引,跟踪哪些节点是群集的一部分,并决定哪些分片分配给相关的节点
false 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

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

集群的方式

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

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

9200

elasticsearch-head工具

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

es-head

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

npm install
npm run start

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

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

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

注意因为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。

9100

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

猜你喜欢

转载自blog.csdn.net/trayvontang/article/details/107998680
今日推荐