Elastic Search的容器化安装

文章介绍了如何在Docker环境下安装和配置Elasticsearch(ES)7.14.0以及Kibana7.14.0。首先分别拉取ES和Kibana的镜像,然后通过Docker运行容器并设置端口映射。接着,通过修改Kibana配置文件使其连接到ES。此外,还提供了使用docker-compose进行编排安装的方式,包括配置文件的内容和启动、停止命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、ES的Docker安装

1.获取镜像

docker pull elasticsearch:7.14.0

2.运行es

docker run -d -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” elasticsearch:7.14.0

3.访问ES

http://个人ip地址:9200/

在这里插入图片描述

2、Kibana的Docker方式安装

1.获取镜像

docker pull kibana:7.14.0

2.运行kibana

docker run -d --name kibana -p 5601:5601 kibana:7.14.0

2.1 进入kibana修改配置文件

docker exec -it 7727bd704de7 bash
cd config/
vi kibana.yml
elasticsearch.hosts: [ “http://本地ip:9200” ]

3.重启kibana容器,访问

http://个人IP地址:5601

3、compose安装

安装docker的会默认安装docker-compose,如果是linux环境需要自行安装docker-compose,自己新建一个文件夹,我这边新建的是
es-kibana,然后添加以下两个配置文件
在这里插入图片描述

  • docker-compose.yml
version: "3.3"
volumes:
  data:
  config:
  plugin:
networks:
  es:
services:
  elasticsearch:
    image: elasticsearch:7.14.0
    ports:
      - "9200:9200"
      - "9300:9300"
    networks:
      - "es"
    environment:
      - "discovery.type=single-node"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - data:/usr/share/elasticsearch/data
      - config:/usr/share/elasticsearch/config
      - plugin:/usr/share/elasticsearch/plugins
  kibana:
    image: kibana:7.14.0
    ports:
      - "5601:5601"
    networks:
      - "es"
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
  • kibana.yml
# kibana配置文件 连接到ES
server.host: "0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true

配置文件配置完就可以使用docker-compose命令启动了

  • 启动命令

docker-compose up -d

  • 停止命令

docker-compose down

### Elasticsearch 集群容器化部署 #### 使用 Docker 运行单节点 Elasticsearch 实例 可以通过 `docker run` 命令启动一个单独的 Elasticsearch 容器实例。以下是运行命令的一个示例: ```bash docker run -d \ --name elasticsearch \ -e "discovery.type=single-node" \ -p 9200:9200 \ -p 9300:9300 \ elasticsearch:7.10.2 ``` 此命令设置了环境变量 `discovery.type=single-node` 来指定这是一个单一节点模式下的 Elasticsearch 实例[^4]。 #### 多节点 Elasticsearch 集群的 Docker Compose 文件配置 为了实现多节点集群,可以使用 Docker Compose 工具来简化多个容器间的协调工作。下面是一个简单的 `docker-compose.yml` 文件的例子: ```yaml version: '3' services: es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2 container_name: es01 environment: - node.name=es01 - cluster.initial_master_nodes=es01,es02,es03 - discovery.seed_hosts=es02,es03 - cluster.name=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: - elastic es02: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2 container_name: es02 environment: - node.name=es02 - cluster.initial_master_nodes=es01,es02,es03 - discovery.seed_hosts=es01,es03 - cluster.name=docker-cluster - bootstrap.memory_lock=true - ES_JAVA_OPTS=-Xms512m -Xmx512m ulimits: memlock: soft: -1 hard: -1 volumes: - esdata02:/usr/share/elasticsearch/data networks: - elastic es03: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2 container_name: es03 environment: - node.name=es03 - cluster.initial_master_nodes=es01,es02,es03 - discovery.seed_hosts=es01,es02 - cluster.name=docker-cluster - bootstrap.memory_lock=true - ES_JAVA_OPTS=-Xms512m -Xmx512m ulimits: memlock: soft: -1 hard: -1 volumes: - esdata03:/usr/share/elasticsearch/data networks: - elastic volumes: esdata01: driver: local esdata02: driver: local esdata03: driver: local networks: elastic: driver: bridge ``` 上述配置定义了一个三节点的 Elasticsearch 集群,并通过设置 `cluster.initial_master_nodes` 参数指定了初始主节点列表[^1]。 #### 将 Elasticsearch 部署至 Kubernetes 集群 对于更复杂的生产环境中,推荐使用 Kubernetes 来管理 Elasticsearch 集群。以下是一个基本的 StatefulSet YAML 文件模板用于在 Kubernetes 中部署 Elasticsearch 节点: ```yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: elasticsearch spec: serviceName: "elasticsearch" replicas: 3 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: containers: - name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2 env: - name: NODE_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: CLUSTER_NAME value: "k8s-cluster" - name: DISCOVERY_ZEN_PING_UNICAST_HOSTS value: "elasticsearch-0.elasticsearch.default.svc.cluster.local,elasticsearch-1.elasticsearch.default.svc.cluster.local,elasticsearch-2.elasticsearch.default.svc.cluster.local" - name: ES_JAVA_OPTS value: "-Xms512m -Xmx512m" resources: limits: cpu: "1" memory: 2Gi requests: cpu: "0.5" memory: 1Gi volumeMounts: - mountPath: "/usr/share/elasticsearch/data" name: elasticsearch-storage volumes: - name: elasticsearch-storage persistentVolumeClaim: claimName: elasticsearch-pvc --- apiVersion: v1 kind: Service metadata: name: elasticsearch spec: type: ClusterIP ports: - port: 9200 targetPort: 9200 protocol: TCP name: http - port: 9300 targetPort: 9300 protocol: TCP name: transport selector: app: elasticsearch ``` 该配置文件中的 `StatefulSet` 确保每个 Pod 拥有唯一的名称并持久存储数据;而 `Service` 则提供了访问这些 Pods 的入口[^5]。 #### 数据持久化与性能优化 无论是采用 Docker 或 Kubernetes 方式,在实际操作过程中都需要考虑数据持久化的策略以及针对 CPU 和内存资源的有效分配方案。例如,可借助 Persistent Volumes (PV) 及 Persistent Volume Claims (PVC)[^3] 提供稳定的数据保存机制,同时合理调整 JVM Heap Size (`ES_JAVA_OPTS`) 设置以匹配硬件条件和负载需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值