【Linux】Centos7基于docker容器下安装elasticsearch以及可能遇到的错误
因为ElasticSearch是java开发的 所以我们要先安装java环境
安装jdk环境https://www.cnblogs.com/donleo123/p/14131743.html
一、安装
1、搜索镜像,拉取下载
docker search elasticsearch
选择版本号
docker pull elasticsearch:7.10.1
2、启动容器
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name 容器名 容器id
参数说明:
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" //配置虚拟机内存参数 -d //后台运行 -p //端口映射 --name //设置名字
3、在浏览器输入地址http://ip:9200/ ,如果出现以下页面表示安装成功
二、安装过程中可能遇到的问题:
1、elasticsearch在服务器启动后过一段时间会自动关闭
查找文件jvm.options文件
find / -name jvm.options
编辑文件
vi 文件地址
修改参数,默认是-Xms1g和-Xmx1g,把内存分配小点
-Xms256m
-Xmx256m
2、再次启动报max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
查看启动日志:
docker logs -f 容器id
解决:
切换到root用户
执行命令:
sysctl -w vm.max_map_count=262144
查看结果:
sysctl -a|grep vm.max_map_count
显示:
vm.max_map_count = 262144
上述方法修改之后,如果重启虚拟机将失效,所以:
解决办法:
在 /etc/sysctl.conf文件最后添加一行
vm.max_map_count=262144
即可永久修改
3、启动报错:ERROR: [1] bootstrap checks failed
[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
解决方案:
在elasticsearch
的config
目录下,修改elasticsearch.yml
配置文件,将下面的配置加入到该配置文件中:
cluster.initial_master_nodes: ["node-1"]
ip替换host1等,多节点请添加多个ip地址,单节点可写按默认来
#配置以下三者,最少其一
#[discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes]
cluster.initial_master_nodes: ["node-1"] #这里的node-1为node-name配置的值
这是我的elasticsearch.yml配置:
cluster.name: myes node.name: node-1 network.host: 0.0.0.0 http.port: 9200 transport.tcp.port: 9300 http.cors.enabled: true http.cors.allow-origin: "*" node.master: true node.data: true cluster.initial_master_nodes: ["node-1"]
附:重新启动容器先rm容器后再次启动