在工作中难免会使用 elasticsearch 来集成到系统中,所以需要安装 elasticsearch 服务。本人也是在工作中需要使用 elasticearch 根据网上的教程进行安装的,在安装过程中也遇到了各种问题,查阅网上的资料时发现解决不了出现的问题。elasticsearch6 和 elasticsearch7 有些问题解决的方法是不同的。我们在决定使用 elasticsearch 时 elasticsearch8 已经出来的,但是我们觉得新出来的版本可能不太稳定或者新版本出现问题,网上的教程不是很多,6版本有点低了,所以我们使用了7版本。
本文讲解使用的版本是 elasticsearch7.17.4. 使用 centos7 虚拟机进行安装。
下载 elasticsearch 安装包
访问 elasticsearch 官网进行下载
- 下载最新版本直接下载即可
- 下载其他版本,点击进入页面选择产品和版本号即可进行下载
- 选择对应系统的安装包,进行下载
安装 elasticseatch
- 把的安装包,上传到虚拟机中
- 解压安装包
tar -zxvf elasticsearch-7.17.4-linux-x86_64.tar.gz
- 创建存在日志和数据的文件夹
- 修改配置文件 进入到解压出来的文件夹中的 config 目录, elasticsearch.yml 文件则为elasticsearch 的配置文件
# 集群名称,名字随便写,如果是集群模式需要所有的服务集群名称需要一致
cluster.name: test_cluster
# 节点名称
node.name: node-1
# 是否竞争主节点
node.master: true
# 是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 1
# 数据的默认存放路径
path.data: /usr/local/elasticsearch/data
# 日志的默认存放路径
path.logs: /usr/local/elasticsearch/logs
# 当前节点的IP地址,如果所有的服务器可以通过内网访问,则写内网即可,否则使用外网
network.host: 172.16.0.36
# 对外提供服务的端口,9300为集群服务的端口
http.port: 9200
transport.tcp.port: 9300
# 写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["172.16.0.36:9300"]
# 初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1"]
# 避免出现跨域问题
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "Authorization"
http.cors.allow-credentials: true
#注意:配置文件上方需要更改两个参数,在Memory下更改:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
注:在配置文件最后添加即可
- 更改 jvm.options 配置文件中的内存参数,根据自己服务器内存大小进行配置,默认两个都是4G,并且是注释的, 在段落的最后增加此参数
-Xms512m
-Xmx512m
- 修改系统文件,不修改多数情况下会启动失败
- 修改/etc/security/limits.conf 文件,增加下面内容
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
- 修改 /etc/sysctl.conf 增加
vm.max_map_count=262145 - 修改完后
sysctl -p刷新一下
- 因为 elasticsearch 不能使用 root 用户启动,所以需要创建其他用户
# 创建 elastic 账号
useradd elastic
# 使用 root 账号给 elastic 账号进行目录权限
chown -R elastic:elastic /usr/local/elasticsearch
# 切换 elastic 账号进行启动 elasticsearch
su elastic
- 启动 elasticserch,进入 bin 目录(/usr/local/elasticsearch/elasticsearch-7.17.4/bin)启动命令
./elasticsearch
./elasticsearch &
- 在浏览器访问ip+端口号(9200),确保服务器的防火墙已经关闭或对应的端口号可以访问,出现以下图则说明安装成功了。
设置密码
在测试环境我们可以不设置密码,但是在生产环境必须设置密码,不设置密码存在安全隐患。
- 生成 CA 证书, 执行命令
./elasticsearch-certutil cert -out config/cert/elastic-certificates.p12 -pass "" - 在 elasticsearch.yml 配置文件中增加,重启 ES
#是否启用es的安全设置,启用安全设置后es各节点、客户端的传输都会加密,并需要账号密码 设置证书
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /usr/local/elasticsearch/elasticsearch-7.17.4/config/cert/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /usr/local/elasticsearch/elasticsearch-7.17.4/config/cert/elastic-certificates.p12
- 启动完成后, 执行
./elasticsearch-setup-passwords interactive命令,会让你输入密码,每组需要输入两次,也可以所有的密码都输入一个。所有的密码都输入完成之后,重新ES。 - 启动 elasticsearch
- 再次访问ip+9200 弹出让输入账号密码,说明密码设置成功。账号为 elastic 密码为刚才设置的密码,输入账号密码可以进入说明密码设置成功
安装 kibana
kibana 版本需要和 elasticsearch 的版本一致。
- 访问 elasticsearch 官网进行下载
选择对应的系统的安装包
- 把包上传到服务器进行解压,
tar -zxvf kibana-7.17.4-linux-x86_64.tar.gz - 修改配置文件 config/kibana.yml
# 页面语言,默认为英文,下面配置为中文
# i18n.locale: "zh-CN"
# 服务器IP
server.host: "172.16.0.36"
elasticsearch.hosts: ["http://172.16.0.36:9200"]
# 设置 elasticseatch 的账号密码,如果 elastticseatch 没有设置密码,此选项可以忽略
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
- kibana 也不能使用 root 账号启动,可以使用 elastic 账号进行启动,设置账号和账号权限
# 使用 root 账号给 elastic 账号进行目录权限
chown -R elastic:elastic /usr/local/kibana-7.17.4
# 切换 elastic 账号进行启动 elasticsearch
su elastic
- 启动 kibana, 进入 bin 目录执行命令
./kibana进行启动 - 访问:浏览器输入 ip + 端口号(5601)进行访问,需要输入账号密码,登录成功说明配置没有问题
至此 elasticsearch 和 kibana 就安装完成了。 后续会有集群配置的教程。