ElasticSearch集群安装和配置
ElasticSearch是一个基于Apache Lucene的分布式搜索引擎,具备REST API风格、高可用、面向文档等风格,集群高度可扩展。著名的Github就是使用ES来实现代码搜索功能。
2017.05.27
1. ElasticSearch介绍
集群 : 一个集群对应唯一的集群名,ES服务启动时,各个机器根据各自的集群名选择加入的集群。集群中的Master的选举和管理由ES自行完成,用户只需定义集群名即可。如上图,四台机器组成一个集群,其中175表示主节点。
节点: 集群中的每一台机器都是一个节点,每个节点都有单独的IP和节点名,便于后续管理。
索引: ES的索引可以看成是数据库的表结构,它是一类文档的集合。如上图,mainPost2017表示一个索引。
文档: 集群中的每一条数据都称为一个文档,文档格式为json。
分片: ES的每一个分片代表一个磁盘存储单位,用来完成存储过程。如上图,共有五个分片,每个分片都有一主一从。ES集群默认是五个分片,每个分片都有一主一从两个副本,当然这种配置是可以修改的。通过分片可以将数据均匀的分摊到各个节点上,降低对IO的压力。同时多个分片可以使得查询的速度增加,提高搜索效率。通过主备的模式,提高系统稳定性,降低数据丢失的风险。需要注意的是,分片的数量只能在创建的时候指定,不可以在后期修改。
2. ElasticSearch安装和配置
ES的安装过程很简单,下载地址为:
https://www.elastic.co/downloads/elasticsearch,这里把整个安装步骤写的很清楚,如下图
我用的版本是2.3.4, 安装和配置的基本步骤是:
wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-2.3.4.tar.gz sudo tar -zxf elasticsearch-2.3.4.tar.gz -C /usr/local cd /usr/local sudo chown -R user:user elasticsearch-2.3.4 cd elasticsearch-2.3-4 cd config sudo vi elasticsearch.yml
这几条语句实现了ES的下载和解压。值得注意的是,ES不支持root用户运行,所以要把归属的用户分组改一下,把 user:user换成自己机器上的用户,当然,如果没有的话请增加用户,不详述。然后开始修改ES的配置文件,也就是elasticsearch.yml文件,如下。
\# ---------------------------------- Cluster ----------------------------------- cluster.name: ES_Cluster_Name #集群名称 \# ------------------------------------ Node ------------------------------------ node.name: node-10.20.30.177 #当前节点名称,一般设为IP \# ----------------------------------- Paths ------------------------------------ path.data: /vdb/data/elasticsearch #数据存储路径,切记放在数据盘,不要放在系统盘 path.logs: /vdb/data/elasticsearchLog #日志存储路径,同理,放数据盘 \# ---------------------------------- Network ----------------------------------- network.host: 10.20.30.177 #网络IP地址 network.publish_host: 10.205.103.177 http.port: 9200 #http端口号,用于外部访问 transport.tcp.port: 9300 #TCP端口号,用于集群间数据互通 \# --------------------------------- Discovery 配置集群 ---------------------------------- discovery.zen.ping.multicast.enabled: true discovery.zen.ping.unicast.hosts: ["10.20.30.175:9300","10.20.30.176:9300", "10.20.30.177:9300","10.20.30.178:9300"] discovery.zen.minimum_master_nodes: 1 \# --------------------------------- Script 配置此项才能保证查询语言支持Scipt----------------------------------- script.inline: on script.indexed: on
配置完成之后,保存即可,然后就是启动啦。启动之前要注意一下,由于这里的数据存储路径和日志存储路径是自定义的,要在对应位置mkdir新建文件夹,新建之后修改文件夹归属分组,保证其和ES的分组一致。
启动的方法比较简单,直接在ES目录下执行以下语句即可:
bin/elasticsearch
当然,如果要保持程序运行状态,请执行
nohup bin/elasticsearch
执行运行程序之后,使用浏览器访问对应机器的9200端口,查看是否启动成功,若成功,有下面的状态信息:
当然,若想要得到如上图1的展示效果,可以在ES中安装插件,在ES安装目录下,执行以下语句用来安装插件:
bin/plugin install mobz/elasticsearch-head
当装完毕之后访问对应IP下的域名 http://ip:9200/_plugin/head/ 即可。
当然,ES还有其他插件,有需求的请自行寻找,安装。