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