Docker搭建es集群(超简单)

编写docker-compose.yml

version: '2.2'
services:
  es01:
    image: elasticsearch:7.7.0
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms300m -Xmx300m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /volumn/es-cluster/data01:/usr/share/elasticsearch/data
    ports:
      - 39201:9200
    networks:
      - elastic
  es02:
    image: elasticsearch:7.7.0
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms300m -Xmx300m"
    ulimits:
      memlock:
        # 告诉操作系统每一es进程可以无限制分配内存
        soft: -1
        hard: -1
    volumes:
      - /volumn/es-cluster/data02:/usr/share/elasticsearch/data
    networks:
      - elastic
  es03:
    image: elasticsearch:7.7.0
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms300m -Xmx300m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /volumn/es-cluster/data03:/usr/share/elasticsearch/data
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

更改挂载目录的权限

es不能通过root用户启动,而其他用户没有挂载文件的写入权限,所以要切换到root用户赋予挂载目录权限

chmod 777 data01
chmod 777 data02
chmod 777 data03

更改启动参数

# 更改一个进程可以拥有的VMA(虚拟内存区域)的数量。
sudo sysctl -w vm.max_map_count=262144
# 查看修改结果
sysctl -a|grep vm.max_map_count

启动测试

docker-compose up -d
# -X指定请求的http方法
 curl -X GET "localhost:39201/_cat/nodes?v=true&pretty"

返回节点信息
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django DRF和Docker是两个不同的技术,它们分别用于Web开发框架和容器化部署。Elasticsearch是一个分布式搜索引擎,可以用于存储、搜索和分析大量数据。 如果您想在Django DRF应用程序中使用Elasticsearch进行搜索和分析,您可以使用Elasticsearch的Python客户端库elasticsearch-py,并将其安装到您的Django应用程序中。然后,您可以编写一些视图来与Elasticsearch进行交互,并使用Docker将Elasticsearch部署为集群。 以下是一些步骤来搭建Elasticsearch集群: 1. 安装DockerDocker Compose。 2. 编写一个Docker Compose文件来定义您的Elasticsearch集群。例如,以下是一个使用3个节点的集群的示例: ``` version: '3' services: es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0 container_name: es01 environment: - node.name=es01 - discovery.seed_hosts=es02,es03 - cluster.initial_master_nodes=es01,es02,es03 - cluster.name=es-docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata01:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - esnet es02: image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0 container_name: es02 environment: - node.name=es02 - discovery.seed_hosts=es01,es03 - cluster.initial_master_nodes=es01,es02,es03 - cluster.name=es-docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata02:/usr/share/elasticsearch/data networks: - esnet es03: image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0 container_name: es03 environment: - node.name=es03 - discovery.seed_hosts=es01,es02 - cluster.initial_master_nodes=es01,es02,es03 - cluster.name=es-docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - esdata03:/usr/share/elasticsearch/data networks: - esnet volumes: esdata01: esdata02: esdata03: networks: esnet: ``` 3. 运行Docker Compose命令来启动您的Elasticsearch集群。例如,以下命令将在后台启动集群: ``` $ docker-compose up -d ``` 4. 确认您的集群已经启动。您可以使用以下命令来检查所有节点是否已经加入集群: ``` $ curl -X GET "localhost:9200/_cat/nodes?v&pretty" ``` 5. 在您的Django应用程序中安装elasticsearch-py库。例如,以下命令将安装最新版本的elasticsearch-py: ``` $ pip install elasticsearch ``` 6. 编写一些视图来与Elasticsearch集群进行交互。例如,以下视图将获取所有Elasticsearch集群中的文档: ``` from elasticsearch import Elasticsearch from rest_framework.views import APIView from rest_framework.response import Response class ElasticsearchView(APIView): def get(self, request): es = Elasticsearch(['es01', 'es02', 'es03']) res = es.search(index='my_index', body={'query': {'match_all': {}}}) return Response(res['hits']['hits']) ``` 7. 在您的Django应用程序中定义Elasticsearch集群的连接参数。例如,以下设置将定义3个节点的Elasticsearch集群: ``` ELASTICSEARCH_DSL = { 'default': { 'hosts': [ 'es01:9200', 'es02:9200', 'es03:9200' ] }, } ``` 8. 运行您的Django应用程序并测试您的Elasticsearch视图。例如,以下命令将启动Django开发服务器: ``` $ python manage.py runserver ``` 9. 测试您的Elasticsearch视图。例如,以下命令将获取所有Elasticsearch集群中的文档: ``` $ curl -X GET "http://localhost:8000/elasticsearch/" ``` 以上是一些步骤来搭建Elasticsearch集群并在Django DRF应用程序中使用它。请注意,这只是一个示例,您可能需要根据您自己的需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值