【docker专题_01】docker搭建elasticsearch集群 -

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 【docker专题_01】docker搭建elasticsearch集群 -

1.拉取镜像

docker pull elasticsearch:7.7.0

2.创建挂载卷

#创建目录
mkdir -p /docker/ES
mkdir /docker/ES/data1
mkdir /docker/ES/data2
mkdir /docker/ES/data3
mkdir /docker/ES/data4
mkdir /docker/ES/data5
mkdir /docker/ES/config
cd /docker/ES
chmod 777 data1 data2 data3 data4 data5
cd /docker/ES/config
#创建文件
touch es1.yml es2.yml es3.yml es4.yml es5.yml

3.编写es的yml配置文件

注意:云服务器需要设置安全策略放行9200,9300,9301,9302,9303,9304端口,否则访问失败;

注意:discovery.seed_hosts配置的是集群服务器,部署几台就写几台,集群最低3台,否则需要修改discovery.zen.minimum_master_nodes为1;

注意:124.71.65.69地址需要换成自己的服务器ip

编辑es1.yml
cluster.name: hzmt-es-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 124.71.65.6
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["124.71.65.6.9:9300","124.71.65.69:9301","124.71.65.69:9302","124.71.65.69:9303","124.71.65.69:9304"]
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3","es-node4","es-node5"]
#编辑es2.yml
cluster.name: hzmt-es-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 124.71.65.69
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true 
node.attr.box_type: "hot"  # 标识为热数据节点
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["124.71.65.69:9300","124.71.65.69:9301","124.71.65.69:9302","124.71.65.69:9303","124.71.65.69:9304"]
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3","es-node4","es-node5"]
#编辑es3.yml文件
cluster.name: hzmt-es-cluster
node.name: es-node3
network.bind_host: 0.0.0.0
network.publish_host: 124.71.65.69
http.port: 9202
transport.tcp.port: 9302
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true 
node.attr.box_type: "warm"  # 标识为热数据节点
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["124.71.65.69:9300","124.71.65.69:9301","124.71.65.69:9302","124.71.65.69:9303","124.71.65.69:9304"]
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3","es-node4","es-node5"]
#编辑es4.yml文件
cluster.name: hzmt-es-cluster
node.name: es-node4
network.bind_host: 0.0.0.0
network.publish_host: 124.71.65.69
http.port: 9203
transport.tcp.port: 9303
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true 
node.attr.box_type: "cold"  # 标识为热数据节点
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["124.71.65.69:9300","124.71.65.69:9301","124.71.65.69:9302","124.71.65.69:9303","124.71.65.69:9304"]
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3","es-node4","es-node5"]
#编辑es5.yml文件
cluster.name: hzmt-es-cluster
node.name: es-node5
network.bind_host: 0.0.0.0
network.publish_host: 124.71.65.69
http.port: 9204
transport.tcp.port: 9304
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true 
node.attr.box_type: "cold"  # 标识为热数据节点
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["124.71.65.69:9300","124.71.65.69:9301","124.71.65.69:9302","124.71.65.69:9303","124.71.65.69:9304"]
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3","es-node4","es-node5"]

4.设置防火墙

firewall-cmd --add-port=9300/tcp
firewall-cmd --add-port=9301/tcp
firewall-cmd --add-port=9302/tcp
firewall-cmd --add-port=9303/tcp
firewall-cmd --add-port=9304/tcp

5.docker运行es服务

#docker启动es 
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /docker/ES/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /docker/ES/data1:/usr/share/elasticsearch/data --name ES01 elasticsearch:7.7.0
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9201:9201 -p 9301:9301 -v /docker/ES/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /docker/ES/data2:/usr/share/elasticsearch/data --name ES02 elasticsearch:7.7.0
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9202:9202 -p 9302:9302 -v /docker/ES/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /docker/ES/data3:/usr/share/elasticsearch/data --name ES03 elasticsearch:7.7.0
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9203:9203 -p 9303:9303 -v /docker/ES/config/es4.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /docker/ES/data4:/usr/share/elasticsearch/data --name ES04 elasticsearch:7.7.0
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9204:9204 -p 9304:9304 -v /docker/ES/config/es5.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /docker/ES/data5:/usr/share/elasticsearch/data --name ES05 elasticsearch:7.7.0

6.检查es集群是否正常启动

#检查服务进程
docker ps |grep ES
#检查es集群是否健康,必须是green才是健康
curl -X GET "localhost:9200/_cluster/health?pretty"

6.其他命令

#备注
#查看集群状态
curl -X GET "localhost:9200/_cat/health?v"
#查看集群健康状态
curl -X GET "localhost:9200/_cluster/health?pretty"
#查看集群中的节点
curl -X GET "localhost:9200/_cat/nodes?v"
#查看索引
curl -XGET 'http://localhost:9200/_cat/indices?v'
#查看索引的setting信息
curl -XGET 'http://localhost:9200/forseti-20220101/_settings?pretty=true'
#设动态置冷热分离
curl -XPUT http://localhost:9200/forseti-20220101/_settings -H "Content-Type:application/json" -d '{
"index.routing.allocation.include.tag": "cold"
}'
#定义通用的索引模板保证新创建索引的分片不会分配到warm节点上
curl -XPUT http://localhost:9200/_template/hot_template
{
  "template": "*",
  "order": 0,
  "version": 0,
  "settings": {
    "index": {
      "routing": {
        "allocation": {
          "require": {
            "box_type": "hot"
          },
          "exclude":{
            "box_type": "warm"
          }
        }
      },
      "number_of_shards": 3,
      "number_of_replicas": 1,
      "refresh_interval": "50s"
    },
    "index.unassigned.node_left.delayed_timeout": "3d"
  }
}
#手动执行reroute命令
curl -XPUT http://localhost:9200/_cluster/reroute
{
  "commands": [
    {
      "move": {
        "index": "forseti-2021*",
        "shard": 10,
        "from_node": "node-248",
        "to_node": "node-12"
      }
    }
  ]
}
#创建索引
curl -X PUT "localhost:9200/forseti-20220101?pretty"
#删除索引
curl -X DELETE "localhost:9200/forseti-20220101?pretty"
#设置数据类型
curl -X PUT "localhost:9200/allcountry?pretty" -H "Content-Type:application/json" -d '
{
    "settings": {
        "index.number_of_replicas": 0
    },
    "mappings": {
        "country_info": {
            "properties": {
                "geonameid": {
                    "type": "long"
                },
                "name": {
                    "type": "text"
                },
                "latitude": {
                    "type": "double"
                },
                "longitude": {
                    "type": "double"
                },
                "population": {
                    "type": "long"
                }
            }
        }
    }
}'
#查看指定节点信息
curl -XGET 'http://localhost:9200/_nodes/nodeName?pretty=true'
#创建索引,指定分片和副本的数量
curl -H "Content-Type: application/json" -XPUT "http://localhost:9200/test_index?pretty" -d'
{undefined
"settings": {undefined
"number_of_shards": 2,
"number_of_replicas": 1
}
}'
#添加document
    curl -X PUT "localhost:9200/customer/customer_info/1?pretty" -H 'Content-Type: application/json' -d'
{
  "name": "John Doe"
}'
#查询document
curl -X GET "localhost:9200/customer/customer_info/1?pretty"
#替换Document
curl -X POST "localhost:9200/customer/customer_info/1/_update?pretty" -H 'Content-Type: application/json' -d'
{
  "doc": { "name": "Apple" }
}'
#更新Document---添加新字段
curl -X POST "localhost:9200/customer/customer_info/1/_update?pretty" -H 'Content-Type: application/json' -d'
{
  "doc": { "name": "Tom", "age": 20 }
}'
#删除document
curl -X DELETE "localhost:9200/customer/customer_info/2?pretty"
相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
333 5
|
6月前
|
Prometheus 监控 Cloud Native
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
535 79
|
9月前
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
1288 91
|
缓存 Prometheus 监控
Elasticsearch集群JVM调优设置合适的堆内存大小
Elasticsearch集群JVM调优设置合适的堆内存大小
2023 1
|
7月前
|
Java Linux
CentOS环境搭建Elasticsearch集群
至此,您已成功在CentOS环境下搭建了Elasticsearch集群。通过以上介绍和步骤,相信您对部署Elasticsearch集群有了充分的了解。最后祝您在使用Elasticsearch集群的过程中顺利开展工作!
446 22
|
11月前
|
Prometheus 监控 Cloud Native
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
628 161
|
11月前
|
Prometheus 监控 Cloud Native
如何监控Docker Swarm集群的性能?
如何监控Docker Swarm集群的性能?
595 64
|
11月前
|
监控 Docker 容器
Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项
本文深入探讨了Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项,旨在帮助用户高效管理集群资源,适应业务变化,确保服务稳定性和资源优化。
274 6
|
缓存 监控 Java
Elasticsearch集群JVM调优
Elasticsearch集群JVM调优
385 5
|
监控 安全 网络安全
Elasticsearch集群的网络设置
Elasticsearch集群的网络设置
389 3
下一篇
oss云网关配置