docker配置elasticsearch(多个实例)

1、运行命令下载镜像

docker pull elasticsearch:7.17.0

2、新建文件夹,挂在配置文件

mkdir -p docker/es/config
mkdir -p docker/es/dev-data
mkdir -p docker/es/dev-logs

mkdir -p docker/es/test-data
mkdir -p docker/es/test-logs

mkdir -p docker/es/prod-logs
mkdir -p docker/es/prod-logs

3、在confg创建三个文件,分别用来启动三个容器

 prod.yml

#集群名称-生产环境
cluster.name: es-prod
#节点
node.name: node-3
#标记主节点
node.master: true
node.data: true
#外网访问
http.host: 0.0.0.0
network.host: 127.0.0.1
#端口号
http.port: 9203
transport.tcp.port: 9303
http.cors.enabled: true
http.cors.allow-origin: "*"
#绑定的端口
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301", "127.0.0.1:9302", "127.0.0.1:9303"]
#初始化主节点
cluster.initial_master_nodes: ["node-3"]
action.destructive_requires_name: true
#允许两个节点运行
node.max_local_storage_nodes: 3
cluster.routing.allocation.same_shard.host: true

test.yml

#集群名称-测试环境
cluster.name: es-test
#节点
node.name: node-2
#标记主节点
node.master: true
node.data: true
#外网访问
http.host: 0.0.0.0
network.host: 127.0.0.1
#端口号
http.port: 9202
transport.tcp.port: 9302
http.cors.enabled: true
http.cors.allow-origin: "*"
#绑定的端口
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301", "127.0.0.1:9302", "127.0.0.1:9303"]
#初始化主节点
cluster.initial_master_nodes: ["node-2"]
action.destructive_requires_name: true
#允许两个节点运行
node.max_local_storage_nodes: 3
cluster.routing.allocation.same_shard.host: true

dev.yml

#集群名称-开发环境
cluster.name: es-dev
#节点
node.name: node-1
#标记主节点
node.master: true
node.data: true
#外网访问
http.host: 0.0.0.0
network.host: 127.0.0.1
#端口号
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
#绑定的端口
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301", "127.0.0.1:9302", "127.0.0.1:9303"]
#初始化主节点
cluster.initial_master_nodes: ["node-1"]
action.destructive_requires_name: true
#允许两个节点运行
node.max_local_storage_nodes: 3
cluster.routing.allocation.same_shard.host: true

 

4、修改文件夹权限,把xxxx改成上面文件夹,或者使用xftp直接修改权限

chmod 777 xxxx

5、运行三个容器,--name 表示容器名字, 后面挂在文件请根据自己的需要自行修改,需要和上面的三个yml文件分别对应

docker run -d --name es-dev -p 9201:9201 -p 9301:9301 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -v /docker/es/config/dev.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /docker/es/dev-data:/usr/share/elasticsearch/data -v /docker/es/plugins:/usr/share/elasticsearch/plugins -v /docker/es/dev-logs:/usr/share/elasticsearch/logs -d elasticsearch:7.17.0

docker run -d --name es-test -p 9202:9202 -p 9302:9302 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -v /docker/es/config/test.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /docker/es/test-data:/usr/share/elasticsearch/data -v /docker/es/plugins:/usr/share/elasticsearch/plugins -v /docker/es/test-logs:/usr/share/elasticsearch/logs -d elasticsearch:7.17.0 

docker run
-d --name es-prod -p 9203:9203 -p 9303:9303 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -v /docker/es/config/prod.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /docker/es/prod-data:/usr/share/elasticsearch/data -v /docker/es/plugins:/usr/share/elasticsearch/plugins -v /docker/es/prod-logs:/usr/share/elasticsearch/logs -d elasticsearch:7.17.0

6、然后可以输入 docker ps -a 命令查看运行情况,另外可能启动的时间较长,请耐心等待

    另外,我的服务器配置比较低,启动三个es之后,就卡的不行了,所以建议使用 ES_JAVA_OPTS="-Xms256m -Xmx256m" 设置运行内存

7、运行成功之后可以输入ip地址加上端口号进行访问

    ip:9201      ip:9202     ip:9203

部署elasticsearch-head

1、运行命令下载

docker pull mobz/elasticsearch-head:5

2、运行命令启动容器,并明明为es-head

docker run -d --name es-head  -p 9100:9100 mobz/elasticsearch-head:5

3、输入 ip:9100 可访问,另外以上的端口都需要提前先开放才可以,比如打开防火墙

 

数据转移:

安装elasticdump(新建文件夹,拖到vscode里面)

npm install elasticdump -g

依次运行如下命令,input是源地址,output是目标地址

elasticdump --input=http://xxxx:9200/material --output=http://xxxx:9200/material  --type=settings

elasticdump --input=http://xxxx:9200/material --output=http://xxxx:9200/material  --type=mapping

elasticdump --input=http://xxxx:9200/material --output=http://xxxx:9200/material  --type=data

 

posted @ 2022-05-11 15:38  狂奔的老鳖  阅读(493)  评论(0编辑  收藏  举报