Elasticsearch笔记(一)—— Linux下安装Elasticsearch

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u012211603/article/details/84121113

Linux下安装Elasticsearch

1、版本

虽然眼下已经出了v6.5.0,但为了和ik分词器版本一致,这里选择6.4.3的版本。
官网:https://www.elastic.co/
选择适用于linux的安装包进行下载
在这里插入图片描述

2、安装与配置

2.1.新建用户

由于Elasticsearch默认不允许以root账号运行,首先我们需要
创建用户:useradd orcas
设置密码(可选): passwd orcas
切换用户: su - orcas

2.2 .上传并解压安装包
  1. 这里通过Xshell的文件传输将安装包上传至指定目录下:/home/learn
  2. cd到该目录进行解压: tar -zxvf elasticsearch-6.4.3.tar.gz
  3. 删除安装包(可选):rm -rf elasticsearch-6.4.3.tar.gz
  4. 重命名目录以便于之后配置路径(可选):mv elasticsearch-6.4.3/ elasticsearch

进入elasticsearch可看到其目录结构:
在这里插入图片描述

2.3 .修改配置

进入config目录修改其下两个配置文件:
在这里插入图片描述

  1. jvm.options
    将默认的内存占用1g设置小一些。
    -Xms512m
    -Xmx512m
  2. elasticsearch.yml
    修改数据和日志目录:
    path.data: /home/learn/elasticsearch/data # 数据目录位置
    path.logs: /home/learn/elasticsearch/logs # 日志目录位置
  3. 回退到elasticsearch的根目录,会发现有logs目录,并没有data,因此需手动创建: mkdir data
  4. 修改绑定的ip:network.host: 0.0.0.0 # 绑定到0.0.0.0,允许任何ip来访问。
2.3 .elasticsearch.yml的其他配置
属性名 说明
cluster.name 配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。
node.name 节点名,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理
path.conf 设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认在/etc/ elasticsearch
path.data 设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开
path.logs 设置日志文件的存储路径,默认是es根目录下的logs文件夹
path.plugins 设置插件的存放路径,默认是es根目录下的plugins文件夹
bootstrap.memory_lock 设置为true可以锁住ES使用的内存,避免内存进行swap
network.host 设置bind_host和publish_host,设置为0.0.0.0允许外网访问
http.port 设置对外服务的http端口,默认为9200。
transport.tcp.port 集群结点之间通信端口
discovery.zen.ping.timeout 设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些
discovery.zen.minimum_master_nodes 主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2

3、运行

3.1 .运行报错

进入elasticsearch/bin目录,运行可执行文件: ./elasticsearch
然而现在运行其实会报错,我们需要修改一些配置。

  1. Centos6不支持SecComp,它需要至少3.5以上版本的Linux内核,而Centos6内核版本比较低,v2.x。
    使用cat /proc/version或者uname -a命令查看linux版本,我这里使用的centos7,所以可以。
    Linux version 3.10.0-514.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Nov 22 16:42:41 UTC 2016

    elasticsearch启动时默认bootstrap.system_call_filter: true,就会进行检测,为了避免该问题,可以在elasticsearch.yml中添加一条配置将其设置成false禁用: bootstrap.system_call_filter: false

  2. 文件权限不足
    报错:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
    这是因为我们使用的新建的用户权限不足。
    我们先切换成root的用户: su - root,然后再修改权限:
    vim /etc/security/limits.conf
    添加如下:

* soft nofile 65536

* hard nofile 131072

* soft nproc 4096

* hard nproc 4096 
  1. 用户最大进程数过低(centos7不用修改)
    报错:max number of threads [1024] for user [orcas] is too low, increase to at least [4096]
    修改配置:vim /etc/security/limits.d/90-nproc.conf
    将进程数设置为4096: * soft nproc 4096
    ps: centos7的limits.d下是20-nproc.conf,里面默认就设置了非root用户的最大进程数为4096。

  2. 进程虚拟内存过低
    报错:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
    同样根据提示将其设置大些:
    vim /etc/sysctl.conf
    添加一条: vm.max_map_count=655360
    重新加载系统参数: sysctl -p

3.2 .重启

注意不要是root用户)进入到elasticsearch的bin目录,再次执行./elasticsearch,如果以上几点坑都一个个躲过了,就能成功运行了。
启动过程还挺久的,可以看到默认绑定了两个端口:

  • 9300:集群节点间通讯接口
  • 9200:客户端访问接口

ps: 再报错,例如:

[WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:140) ~[elasticsearch-6.4.3.jar:6.4.3]
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[elasticsearch-6.4.3.jar:6.4.3]
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.4.3.jar:6.4.3]
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.4.3.jar:6.4.3]
	at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.4.3.jar:6.4.3]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.4.3.jar:6.4.3]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[elasticsearch-6.4.3.jar:6.4.3]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
	at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:104) ~[elasticsearch-6.4.3.jar:6.4.3]
	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:171) ~[elasticsearch-6.4.3.jar:6.4.3]
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326) ~[elasticsearch-6.4.3.jar:6.4.3]
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-6.4.3.jar:6.4.3]
	... 6 more

你看看是不是不小心使用root用户启动了。

最后,浏览器访问:http://192.168.58.128:9200/
会显示如下内容:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u012211603/article/details/84121113