欢迎投稿

今日深度:

Docker安装elasticsearch5(爬坑心得),

Docker安装elasticsearch5(爬坑心得),


下载docker镜像

docker search elasticsearch

OFFICIAL是指官方镜像,我们当然是下载这个了。

docker pull docker.io/elasticsearch

等待下载完成后,输入命令

docker images

因为下载的时候没有指定版本号,所以下载的是最新的,默认tag为latest。

启动容器

镜像安装好了,紧接着我们该进坑了。

首先按照正常情况启动es

docker run --name esl2 docker.io/elasticsearch:latest

坑一 jvm内存不够

不出所料果然报错!

这意思就是说jvm内存不够,我这里使用的是虚拟机,内存只有1G,然而es从5.0开始默认指定jvm内存为2g,我们需要修改下参数。

查看docker-es我们来进行更改

docker run --name esl2 -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -p 9201:9200 -p 9301:9300 docker.io/elasticsearch:latest

可以看到启动成功了,我们通过ip:port访问也能出现启动完成的效果

这看起来是没问题,但是当我用java连接的时候,发现怎么也无法联通。java用来连接的端口号9301,我使用telnet工具测试发现9201的端口可以联通,但是9301端口就不行。上网搜索后发现是es配置文件需要指定network.publish_host为本地ip。

坑二 挂载外部配置文件

首先建立一个es挂载目录,我是建立在了opt下,并建立一个es.yml作为配置文件,data作为es的data文件夹

cd /opt

mkdir es

cd es

mkdir data

touch es.yml

然后使用vim修改es.yml

#集群名
 
cluster.name: escluster
 
#节点名
 
node.name: node-111
 
 
 
#设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,
 
#指绑定这台机器的任何一个ip
 
network.bind_host: 0.0.0.0
 
#设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,
 
#值必须是个真实的ip地址 
 
network.publish_host: X.X.X.X
 
 
 
#设置对外服务的http端口,默认为9200
 
http.port: 9200
 
#设置节点之间交互的tcp端口,默认是9300
 
transport.tcp.port: 9300
 
 
 
#是否允许跨域REST请求
 
http.cors.enabled: true
 
#允许 REST 请求来自何处
 
http.cors.allow-origin: "*"
 
 
 
#节点角色设置
 
node.master: true
 
node.data: true
 
 
 
#有成为主节点资格的节点列表
 
discovery.zen.ping.unicast.hosts: ["X.X.X.X:9300"]
 
#集群中一直正常运行的,有成为master节点资格的最少节点数(默认为1)
 
# (totalnumber of master-eligible nodes / 2 + 1)
 
discovery.zen.minimum_master_nodes: 1
 

保存退出。

然后执行命令

docker run --name esl2 -p 9200:9200 -p 9300:9300  -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -v /opt/es/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/es/data/:/usr/share/elasticsearch/data 37ad37f1c8a7

-v  本地目录/文件:容器目录/文件  :作用是将本地到文件或文件夹挂载到容器的指定文件或文件夹中

然后启动。。。

坑三 虚拟内存最大映射数太低

启动报错

ERROR:[1] bootstrap checks failed 
 
[1]: maxvirtual memory areas vm.max_map_count [65530] istoo low, increase to at least [262144] 

解决办法:

(1)切换到root用户修改配置sysctl.conf 
 
vi /etc/sysctl.conf 
 
(2)添加下面配置 
 
vm.max_map_count=655300 
 
(3)并执行命令 
 
 sysctl -p 
 
(4)重新启动elasticsearch,即可启动成功。 
 
查看vm.max_map_count是否设置成功:
 
cat /proc/sys/vm/max_map_count

然后再按照上面命令启动

Ok,看起来配置起效果了,我们在用telnet测试9300接口就可以了通了,当然java连接也没问题O(∩_∩)O哈哈~

 

www.htsjk.Com true http://www.htsjk.com/Elasticsearch/36089.html NewsArticle Docker安装elasticsearch5(爬坑心得), 下载docker镜像 docker search elasticsearch OFFICIAL是指官方镜像,我们当然是下载这个了。 docker pull docker.io/elasticsearch 等待下载完成后,输入命令 docker im...
相关文章
    暂无相关文章
评论暂时关闭