一,创建es挂载目录
cd /usr/local
mkdir -p es/config
二,创建es存放数据目录
cd es
mkdir data1
mkdir data2
mkdir data3
三,关联IP
firewall-cmd --add-port=9300/tcp
firewall-cmd --add-port=9301/tcp
这一步可能报错:
需要开启防火墙:
systemctl status firewalld # 查看防火墙状态
systemctl start firewalld # 开启防火墙
四,创建IK分词器目录
mkdir plugins1
mkdir plugins2
五,创建es集群配置文件
vi es1.yml
vi es2.yml
配置文件的内容分别为:
#es1.yml
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.10.180
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.10.180:9300","192.168.10.180:9301"]
discovery.zen.minimum_master_nodes: 1
#es2.yml
cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.10.180
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.10.180:9300","192.168.10.180:9301"]
discovery.zen.minimum_master_nodes: 1
六,创建es容器
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-d -p 9200:9200 -p 9300:9300 -p 5601:5601 \
-v /usr/local/es/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/es/plugins1:/usr/share/elasticsearch/plugins \
-v /usr/local/es/data1:/usr/share/elasticsearch/data \
--name ES01 bdaab402b220
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d \
-p 9201:9201 -p 9301:9301 \
-v /usr/local/es/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/es/plugins2:/usr/share/elasticsearch/plugins \
-v /usr/local/es/data2:/usr/share/elasticsearch/data --name ES02 bdaab402b220
这步可能出错:
解决方案:点我看解决方案
解决了上述错误之后,创建容器,成功,通过命令:
docker ps
发现容器的进程,即容器没启动。
查看日志:
docker logs ES01
原来是data目录没有权限,执行如下命令:
chmod 777 /usr/local/es/data*
之后发现es启动之后很快就死掉了,原因是内存分配太少:
ES内存分配