ES(一) -- ES 6.5.4部署

一:摘要概述

  • 是什么:ElasticSearch为目前比较流行的全文搜索引擎,底层技术封装Apache Lucene实现
  • 扩展点:相对于Apache Luence而言ES还实现分布式文件存储、实时数据分析、通过服务器扩展可以达到PB级别结构化/非结构化数据处理
  • 进步性:Apache Luence操作及其复杂,不信自己去试试。但是ES封装以后对外提供RESTFull Web接口,入门堪称精简
  • Head:ES的一款Web插件,通过Head可以与ES服务进行Web交互。当然也可以监控ES服务状态

二:ES单点

本人喜欢官网下载tar包以后解压缩安装,而且ES也不需要复杂化配置,基本开箱即用。所以下载具体版本请前往官网下载本文采用6.5.4版本,其余最新版本等请自行下载、解压、安装

// 解压缩tar文件
tar -xvf elasticsearch-6.5.4.tar.gz
2.1 文件配置

ES在conf目录下总共有三个配置文件,分别代表ES应用配置的elasticsearch.yml、JVM设置参数设置的jvm.options、日志记录配置的log4j2.properties。这里就简单对应用配置文件做一些修改启动

// 进入解压后的文件夹修改配置文件
vim /conf/elasticsearch.yml
// 代表集群名称,搭建ES集群十分关键,节点会按照该名称加入对应集群
cluster.name: es_test_zsl
// 节点名称,后续该设置可以在Head、Kibana中看到
node.name: node1
// 默认本地可访问,0.0.0.0表示任意IP地址可访问,线上可修改为应用IP地址
network.host: 0.0.0.0
// 默认应用端口9200如果被占用修改端口号
http.port: 9200
// 后面Head等前端插件访问需要解决跨域问题,增加如下两个配置
http.cors.enabled: true
http.cors.allow-origin: "*"
2.2 验证启动

修改完毕后直接使用elasticsearch脚本启动,通过浏览器访问9200端口看到如下图所示效果表示成功

// 启动ES服务
./bin/elasticsearch

// 后台启动服务
./bin/elasticsearch -d

在这里插入图片描述

2.3 常见异常
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:140) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.5.4.jar:6.5.4]
        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.5.4.jar:6.5.4]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[elasticsearch-6.5.4.jar:6.5.4]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-6.5.4.jar:6.5.4]
        ... 6 more
// 更改权限命令
 chown -R 用户名:用户所属组 文件夹
  • ES安全策略不允许root用户启动,所以需要ES文件夹修改为新建某用户所有。如果在更改所有后还不小心使用Root用户操作这时会产生root用户所有的日志文件,记得再更改一遍后使用新建用户启动
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
// 修改可创建文件描述大小
vim /etc/security/limits.conf
 
// 修改文件最后的几项配置内容
root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536
// 修改虚拟内存太小
vim /etc/sysctl.conf

// 新增配置内容
vm.max_map_count=262144

// 生效查看
sysctl -p
  • 第一个错误含义为ES可以创建的文件描述太少,第二个错误信息的含义为虚拟内存太小。这时使用root用户进行对应服务器参数设置即可

三:ES单机集群

因为机器有限,演示集群部署的时候采用单机多实例,通过端口的修改完成集群的部署。如果单节点通过Head亦或是Kibana工具查看节点状态都会是黄色,因为创建索引默认是一个副本五个分片,当所有内容都在单节点上时就会显示黄色

3.1 相关参数

依然是修改elasticsearch.yml配置文件

// 所有节点集群名称必须一致
cluster.name: es_test_zsl

// 集群节点名称不能一致
node.name: node_1_217

// 集群通信端口,默认9300
transport.tcp.port: 9301

// 发现集群节点IP:端口,当发现一个其余节点就能加入集群
discovery.zen.ping.unicast.hosts: ["节点IP:集群通信端口", "节点IP:集群通信端口"]

// 避免脑裂,算法一般是节点数量M / 2 + 1
discovery.zen.minimum_master_nodes: 1

// 单机部署避免自身发现加上这个配置
xpack.security.enabled: false

所有ES节点实例配置文件参照上述参数修改即可,ES集群的部署还是比较简单的。至于更深入的学习后续进行

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章