Elasticsearch 安装和配置

Elastic 需要 Java 8 环境。如果你的机器还没安装 Java,可以参考JDK安装

单机节点安装

  1. 下载安装包.zip
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.zip
$ unzip elasticsearch-5.5.1.zip
$ cd elasticsearch-5.5.1/ 
  1. 进入解压后的目录,运行下面的命令,启动 Elastic。
$ ./bin/elasticsearch

如果报错"max virtual memory areas vm.maxmapcount [65530] is too low",要运行下面的命令。

$ sudo sysctl -w vm.max_map_count=262144
  1. Elastic就会在默认的9200端口运行。
    请求9200端口,Elastic 返回一个 JSON 对象,包含当前节点、集群、版本等信息
{
  "name" : "MuuucZm",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "Fejq3vkgQN-tUGHt_8Mxvg",
  "version" : {
    "number" : "5.5.1",
    "build_hash" : "19c13d0",
    "build_date" : "2017-07-18T20:44:24.823Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}
  1. 创建数据存放路径(建议设置配置为在Elasticsearch主目录之外定位数据目录,以便在不删除数据的情况下删除主目录!)
    ./config/elasticsearch.yml配置path.data

  2. 创建日志存放路径
    ./config/elasticsearch.yml配置path.logs

集群安装

采用三台服务器部署Elasticsearch集群,部署ES集群就不得不提索引分片,以下是索引分片的简单介绍。

ES集群中索引可能由多个分片构成,并且每个分片可以拥有多个副本。通过将一个单独的索引分为多个分片,我们可以处理不能在一个单一的服务器上面运行的大型索引,简单的说就是索引的大小过大,导致效率问题。不能运行的原因可能是内存也可能是存储。由于每个分片可以有多个副本,通过将副本分配到多个服务器,可以提高查询的负载能力。

Node
es01.com
es02.com
es03.com
  1. 几个是最主要的配置文件路径
../elasticsearch-5.5.1/config/elasticsearch.yml     # els的配置文件
../elasticsearch-5.5.1/config/jvm.options           # JVM相关的配置,内存大小等等
../elasticsearch-5.5.1/config/log4j2.properties     # 日志系统定义
/var/lib/elasticsearch                              # 数据的默认存放位置

修改elasticsearch配置文件
./config/elasticsearch.yml

#集群的名称  
#日志文件会以集群名称命名
cluster.name: esCluster  
#节点名称,其余两个节点分别为node-2 和node-3  
node.name: node-1  
#指定该节点是否有资格被选举成为master节点,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master  
node.master: true  

#允许该节点存储数据(默认开启)  
node.data: true  
#索引数据的存储路径  
path.data: /usr/local/elasticsearch/data  
#日志文件的存储路径  
path.logs: /usr/local/elasticsearch/logs  

#设置为true来锁住内存。因为内存交换到磁盘对服务器性能来说是致命的,当jvm开始swapping时es的效率会降低,所以要保证它不swap  
bootstrap.memory_lock: true  

#绑定的ip地址  
network.host: 0.0.0.0  
#设置对外服务的http端口,默认为9200  
http.port: 9200  
# 设置节点间交互的tcp端口,默认是9300   
transport.tcp.port: 9300  

#Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。  
#这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host  
discovery.zen.ping.unicast.hosts: ["192.168.8.101:9300", "192.168.8.103:9300", "192.168.8.104:9300"]  
#这个参数控制的是,一个节点需要看到的具有master节点资格的最小数量,然后才能在集群中做操作。官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量
discovery.zen.minimum_master_nodes: 2  

调整jvm内存
./config/jvm.options

#建议对jvm进行一些修改,不然很容易出现OOM,参考官网改参数配置最好不要超过内存的50%   
-Xms2g  
-Xmx2g 
  1. 分别启动三台Elasticsearch
$ bin/elasticsearch -d    # -d 后台运行
  1. 测试启动
    ps -ef | grep elasticsearc 查看进程是否启动
curl -XGET 'http://es01:9200/_cat/nodes?pretty'
ip01 18 68 0 0.07 0.06 0.05 mdi - els2
ip02 25 67 0 0.01 0.02 0.05 mdi * els1             #  *号表示为当前节点为主节点的意思
ip03  7 95 0 0.02 0.04 0.05 mdi - els3

集群安装踩坑

  1. 启动失败
    查看日志,日志文件会以集群名称命名
[ERROR][o.e.b.Bootstrap          ] [node-1] node validation exception  
[3] bootstrap checks failed  
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]  
[2]: memory locking requested for elasticsearch process but memory is not locked  
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]  

解决方法:(root用户)

$ vim /etc/security/limits.conf

* soft nofile 65536  
* hard nofile 65536  
* soft nproc 2048  
* hard nproc 4096  
#选择锁住swapping因此需要在这个配置文件下再增加两行代码  
es soft memlock unlimited  
es hard memlock unlimited  

$ vim /etc/sysctl.conf

vm.max_map_count=655360  
fs.file-max=655360  

# 使系统配置生效(使用root用户)
$ sysctl -p    

参数参考 https://my.oschina.net/987openlab/blog/94634

  1. 节点启动成功,无法形成集群
[2018-02-15T21:15:06,352][INFO ][rest.suppressed          ] /_cat/health Params: {h=node.total}    
MasterNotDiscoveredException[waited for [30s]]    
        at org.elasticsearch.action.support.master.TransportMasterNodeAction$4.onTimeout(TransportMasterNodeAction.java:160)    
        at org.elasticsearch.cluster.ClusterStateObserver$ObserverClusterStateListener.onTimeout(ClusterStateObserver.java:239)    
        at org.elasticsearch.cluster.service.InternalClusterService$NotifyTimeout.run(InternalClusterService.java:630)    
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)    
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)    
        at java.lang.Thread.run(Thread.java:745)    

原因:将discovery.zen.minimum_master_nodes的值设置为了3,总共3个节点,都充当主节点是不行的,将discovery.zen.minimum_master_nodes将这个配置改为2。

  1. 只有主节点启动成功,其他节点没有连接集群
[2018-02-15T21:53:58,084][INFO ][o.e.d.z.ZenDiscovery     ] [node-3] failed to send join request to master [{node-1}{SVrW6URqRsi3SShc1PBJkQ}{y2eFQNQ_TRenpAPyv-EnVg}{192.168.8.101}{192.168.8.101:9300}], reason [RemoteTransportException[[node-1][192.168.8.101:9300][internal:discovery/zen/join]]; nested: IllegalArgumentException[can't add node {node-3}{SVrW6URqRsi3SShc1PBJkQ}{uqoktM6XTgOnhh5r27L5Xg}{192.168.8.104}{192.168.8.104:9300}, found existing node {node-1}{SVrW6URqRsi3SShc1PBJkQ}{y2eFQNQ_TRenpAPyv-EnVg}{192.168.8.101}{192.168.8.101:9300} with the same id but is a different node instance]; ]  

之前启动的时候报错,没有启动成功,但是data文件中生成了其他节点的数据。将三个节点的data目录清空即可。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,123评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,031评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,723评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,357评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,412评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,760评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,904评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,672评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,118评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,456评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,599评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,264评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,857评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,731评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,956评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,286评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,465评论 2 348

推荐阅读更多精彩内容