文档章节

elasticsearch2.3.1 集群安装

尚浩宇
 尚浩宇
发布于 2016/04/06 17:06
字数 2075
阅读 1632
收藏 11

    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

我们建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:搜索工作是很难的。我们希望我们的搜索解决方案要快,我们希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。Elasticsearch旨在解决所有这些问题和更多的问题。【摘自百度百科】

    具体的介绍,这里就不赘述了,网上能搜到,另外建议看一遍《Elasticsearch 权威指南》能够加深理解。

    环境:

            节点A

                    IP:192.168.0.100

             节点B

                    IP:192.168.0.101

              JDK:1.8

              linux:centos7

              连接工具:CRT

    准备:

            两个节点各安装Elasticsearch 

wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.1/elasticsearch-2.3.1.tar.gz
tar xvzf elasticsearch-2.3.1.tar.gz
cd elasticsearch-2.3.1

    配置:

            先贴一段配置说明:

elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了。下面主要讲解下elasticsearch.yml这个文件中可配置的东西。

cluster.name:elasticsearch
配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。

node.name:"FranzKafka"
节点名,默认随机指定一个name列表中名字,该列表在es的jar包中config文件夹里name.txt文件中,其中有很多作者添加的有趣名字。

node.master:true
指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。

node.data:true
指定该节点是否存储索引数据,默认为true。

index.number_of_shards:5
设置默认索引分片个数,默认为5片。

index.number_of_replicas:1
设置默认索引副本个数,默认为1个副本。

path.conf:/path/to/conf
设置配置文件的存储路径,默认是es根目录下的config文件夹。

path.data:/path/to/data
设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开,例:
path.data:/path/to/data1,/path/to/data2

path.work:/path/to/work
设置临时文件的存储路径,默认是es根目录下的work文件夹。

path.logs:/path/to/logs
设置日志文件的存储路径,默认是es根目录下的logs文件夹

path.plugins:/path/to/plugins
设置插件的存放路径,默认是es根目录下的plugins文件夹

bootstrap.mlockall:true
设置为true来锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过`ulimit-l unlimited`命令。

network.bind_host:192.168.0.1
设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。


network.publish_host:192.168.0.1
设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。

network.host:192.168.0.1
这个参数是用来同时设置bind_host和publish_host上面两个参数。

transport.tcp.port:9300
设置节点间交互的tcp端口,默认是9300。

transport.tcp.compress:true
设置是否压缩tcp传输时的数据,默认为false,不压缩。

http.port:9200
设置对外服务的http端口,默认为9200。

http.max_content_length:100mb
设置内容的最大容量,默认100mb

http.enabled:false
是否使用http协议对外提供服务,默认为true,开启。

gateway.type:local
gateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,hadoop的HDFS,和amazon的s3服务器,其它文件系统的设置方法下次再详细说。

gateway.recover_after_nodes:1
设置集群中N个节点启动时进行数据恢复,默认为1。

gateway.recover_after_time:5m
设置初始化数据恢复进程的超时时间,默认是5分钟。

gateway.expected_nodes:2
设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。

cluster.routing.allocation.node_initial_primaries_recoveries:4
初始化数据恢复时,并发恢复线程的个数,默认为4。

cluster.routing.allocation.node_concurrent_recoveries:2
添加删除节点或负载均衡时并发恢复线程的个数,默认为4。

indices.recovery.max_size_per_sec:0
设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。

indices.recovery.concurrent_streams:5
设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。

discovery.zen.minimum_master_nodes:1
设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)

discovery.zen.ping.timeout:3s
设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。

discovery.zen.ping.multicast.enabled:false
设置是否打开多播发现节点,默认是true。

discovery.zen.ping.unicast.hosts:["host1", "host2:port","host3[portX-portY]"]
设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点

    实际中并不需要那么多的配置,因为大多直接采用默认值即可,以下是实际配置(注意配置文件:后要有一个空格,否则报错)

    节点A:

cluster.name: sccES
node.name: "es02"
bootstrap.mlockall: true
network.host: 192.168.0.101
network.publish_host: 192.168.0.101
discovery.zen.ping.unicast.hosts: ["192.168.0.100"]

    节点B:

cluster.name: sccES
node.name: "es02"
bootstrap.mlockall: true
network.host: 192.168.0.100
network.publish_host: 192.168.0.100
discovery.zen.ping.unicast.hosts: ["192.168.0.101"]

    另外一般在学习的时候,总会强调elasticsearch只要在同一个网段无需特殊配置即可自动发现并添加节点,而这里的配置却指定了其他节点的IP,原因是es1.0 版本的集群的discovery默认采用的是组播(multicast)模式,但是在es2.2版本中已去除该模式,虽然提供了multicast的插件,但是官方说不建议采用multicast的模式,故我们只能采用单播(unicast)模式。同时我们还必须显示指明“network.publish_host”节点的内容,否则该节点会动态绑定ip,导致你设置的unicast地址不正确。(?可能此段话不准确,正在探索中)

    启动:            

./elasticsearch -d    #(后台启动)

然后访问http://192.168.0.100:9200/_cluster/health查看集群状态

{"cluster_name":"sccES","status":"green","timed_out":false,"number_of_nodes":2,"number_of_data_nodes":2,"active_primary_shards":5,"active_shards":10,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":0,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":100.0}

    扩展:

        扩展只需要修改discovery.zen.ping.unicast.hosts属性,其内的值不需要是全部运行节点的ip,只需要任意一台运行中的IP即可

cluster.name: sccES
node.name: "es03"
bootstrap.mlockall: true
network.host: 192.168.0.102
network.publish_host: 192.168.0.102
discovery.zen.ping.unicast.hosts: ["192.168.0.101"]

然后访问http://192.168.0.100:9200/_cluster/health查看集群状态

{"cluster_name":"sccES","status":"green","timed_out":false,"number_of_nodes":3,"number_of_data_nodes":3,"active_primary_shards":5,"active_shards":10,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":0,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":100.0}

查看所有索引

http://
ip:9200/_cat/indices?v

 

© 著作权归作者所有

尚浩宇

尚浩宇

粉丝 70
博文 151
码字总数 126696
作品 4
朝阳
程序员
私信 提问
ElasticSearch2.3.1使用delete-by-query插件

在ElasticSearch2.3.1这个版本中没有默认的delete-by-query(其实在ES2.0就没有了),因此我们需要额外安装这个插件。 按照官方的提示,你可以在ES的根目录下运行该命令进行插件安装。 但有时...

u011575671
2017/08/03
0
0
elasticsearch安装jcseg,开启自动更新词库配置不起作用

@狮子的魂 你好,想跟你请教个问题: 我的环境elasticsearch2.3.1、jcseg1.9.7,已经按照文档将autoload设置为了1,polltime设置为了20,并在lex-autoload.lex中加了要修改的词库文件名,但是启...

低调的npc
2016/09/30
550
11
Linux系统Oracle12.2 RAC集群实施维护_Oracle数据库12cR2(项目实战之五)

课程目标 风哥Oracle数据库教程12cR2(项目实战系列)之五:Linux系统上Oracle 12.2 RAC实施与基本维护,包括系统安装与环境配置、ASM存储配置、Oracle 12cR2 RAC集群软件安装、RAC数据库软件...

风哥Oracle
2018/06/28
0
0
Spark2.0.0集群部署教程

1.引言 在前面的博客中介绍了Spark的伪分布安装,在本篇博客中将介绍一下Spark的集群部署,在本博客中Spark的调度采用Hadoop的Yarn平台,因此在安装Spark之前,需要先部署Hadoop的集群,因为...

Liri
2017/12/16
0
0
Ambari 2.4 安装教程,另附配置 haodoop lzo

准备工作 1. 安装JDK,集群内各成员主机安装JDK的路径和版本必须统一。 2. 在集群内主机安装一台MySQL Server (MySQL为选装,Ambari默认的数据库为 PostgreSQL) 1. MySQL 配置 创建 ambari...

yangji008
2017/03/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

可能是国内第一篇全面解读 Java 现状及趋势的文章

作者 | 张晓楠 Dragonwell JDK 最新版本 8.1.1-GA 发布,包括全新特性和更新! 导读:InfoQ 发布《2019 中国 Java 发展趋势报告》,反映 Java 在中国发展的独特性,同时也希望大家对 Java 有...

阿里云官方博客
3分钟前
0
0
Spring Boot 2.x基础教程:Swagger静态文档的生成

前言 通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后,我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了。如果您还不熟悉这块,可以先阅读: Spring Boot 2.x基础教程...

程序猿DD
7分钟前
0
0
《毅力》读书笔记

1.确信你全身心地投入 2.准备好为目标进行艰难的跋涉 3.通过减少需要使用毅力的情形,为将来的挑战做好准备 4.尽可能具体细致地确定你的目标和实现目标的过程 5.把挑战分解为小而易于管理的小...

lingch
8分钟前
1
0
zk中快速选举FastLeaderElection实现

选举涉及概念 服务器状态 投票 如何选择投票? 协议 选举 如何进行选举? epoch 发送者 接收者 发送队列 接收队列 服务器状态 public enum ServerState { LOOKING,寻找Leader状态,当服务处于...

writeademo
11分钟前
0
0
教你玩转Linux—磁盘管理

Linux磁盘管理好坏直接关系到整个系统的性能问题,Linux磁盘管理常用三个命令为df、du和fdisk。 df df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少...

Linux就该这么学
13分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部