ES 是一个主从架构
一:环境准备
1 :各个版本需要java依赖(ES是用java写的)
Elasticsearch5需要则java8以上的版本
Elasticsearch从6.5开始支持java11
Elasticsearch7.0开始,内置了Java环境,就不需要我们本地的java版本依赖了。
2 :下载地址:
https://www.elastic.co/cn/downloads/past-releases/#elasticsearch
3 :windows版本ES配置文件解析
我将下载到本地的ES压缩包解压,在根目录下的bin目录下找到elasticsearch-env.bat文件,使用编辑器打开,找到下面这部分代码:
通过阅读上方的代码,就可以发现,ES7.0以上是如何使用java依赖的了。
4 :目录结构
5 :elasticsearch.yml
配置文件存放在根目录下的config目录下的elasticsearch.yml文件,在不同的系统(windows/linux)中安装需要不同的配置。这个在不同系统中安装我们再说。
二:windows安装 elasticsearch
这个就很简单了,直接将下载的压缩包解压就可以。
启动文件是在根目录下的bin目录下的elasticsearch.bat文件,双击运行即可。
那我们如何知道es是否运行成功呢?很简单,在浏览器中访问:http://localhost:9200/
如下图所示,则运行成功:
三:linux安装 elasticsearch
我的linux服务器的操作系统是centos7.8
也是一样,从官网下载压缩包传到linux服务器的对应目录(放到案例取决于你的心情)中。解压即可。
因为linux服务器中每个用户权限不同(理论上直接用root用户就可以)直接使用root用户不太好,因此,我们下边还需要对他做一些设置。
1 :修改elasticsearch.yml
(1):修改监听ip
# 监听所有的网卡
network.host: 0.0.0.0
#添加配置
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]
# 关闭集群 小内存服务器使用
cluster.routing.allocation.disk.threshold_enabled: false
2 :修改JVM配置
修改config/jvm.option配置文件,调整jvm堆内存大小,这个参数要根据你服务器的内存去调整,不能大于你的服务器运行内存
-Xms1g
-Xmx1g
上方的两个参数去掉注释即可。
3 :创建ES用户
Es是不可以使用root用户来执行的,因此我们需要创建一个新用户,新用户叫啥都可以,看你心情。
adduser es
passwd es
chown -R es:es 你的es目录
4 :启动elasticsearch
切换至es用户:
su es
进入es根目录下的bin目录下,执行启动es命令:
./elasticsearch
然后,报错了:
上边是两个报错,我们一个一个解决
(1):Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
解决方案:修改config/jvm.options
这个问题是GC回收的问题,需要修改一个GC回收的配置
## GC configuration
## 8-13:-XX:+UseConcMarkSweepGC
8-13:-XX:+UseG1GC
8-13:-XX:CMSInitiatingOccupancyFraction=75
8-13:-XX:+UseCMSInitiatingOccupancyOnly
(2):Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000ca660000, 899284992, 0) failed; error='Not enough space' (errno=12)
解决方案:修改config/jvm.options
这个问题是内存不足,我的服务器内存是2G,上边参数设置的是1G,很显然,我需要把内存调试小一点:
-Xms256m
-Xmx256m
(3):ERROR: [2] bootstrap checks failed. You must address the points described in the following [2] lines before starting Elasticsearch.
主要是文件权限与内存大小问题:elasticsearch用户拥有的可创建文件描述的权限太低,至少需要65536
#切换到root用户修改
vi /etc/security/limits.conf
在文件最后,增加如下配置:
es soft nofile 65536
es hard nofile 65536
此文件修改后需要重新登录用户,才会生效
在/etc/sysctl.conf文件最后添加一行
vm.max_map_count=655360
添加完毕之后,
执行命令:
sysctl -p
(4):bootstrap check failure [1] of [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
看提示可知:缺少默认配置,至少需要配置discovery.seed_hosts/discovery.seed_providers/cluster.initial_master_nodes中的一个参数
discovery.seed_hosts: 集群主机列表
discovery.seed_providers: 基于配置文件配置集群主机列表
cluster.initial_master_nodes: 启动时初始化的参与选主的node,生产环境必填
解决方案:
修改配置文件,添加参数即可
vim config/elasticsearch.yml
#添加配置
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]
再次使用./elasticsearch启动es
启动成功,linux服务器使用curl访问:
curl http://127.0.0.1:9200
结果如下图所示:
Linux服务器安装成功。
如果启动一半程序自动被killed,那可能是服务器内存不足,再把内存调小点应该就可以了。
四:其他配置
1 :conf/elasticsearch.yml
# 数据目录位置
# 集群名称,各节点配成相同的集群名称。
cluster.name: zmsz
path.data: /home/es/data
# 日志目录位置
path.logs: /home/es/logs
#绑定的ip:默认只允许本机访问,修改为0.0.0.0后则可以远程访问
network.host: 0.0.0.0
#设置对外服务的http端口,默认为9200。
http.port: 9200
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
五:启动和关闭ES命令
1 :启动命令
切换至es用户:su es
前台启动:
./bin/elasticsearch
后台启动:
./bin/elasticsearch -d
nohup ./elasticsearch &
2 :关闭命令:
(1):如果是shell工具链接,使用ctrl+c组合键关闭即可,这个只针对于前台启动程序
(2):如果是后台启动,我们需要找到对应的进程id,使用kill命令,结束进程。
ps -aux | grep elasticsearch
kill -9 端口号
以上大概是elasticsearch的基本安装流程。
有好的建议,请在下方输入你的评论。