Docker

首页 -  Docker  -  es集群搭建,docker搭建es集群

es集群搭建,docker搭建es集群

es集群搭建,docker搭建es集群

1.拉取官方镜像:elasticsearch:7.6.1

docker pull elasticsearch:7.6.1

2.拉取官方镜像:kibana:7.6.1

docker pull kibana:7.6.1

3.创建配置文件目录:

mkdir dir /docker/es/conf
cd /docker/es/conf

4.创建配置文件

先在宿主机准备好3个配置文件 es1.yml, es2.yml, es3.yml,这个是之后要用来挂载到3台es的docker中的

vim /docker/es/conf/es1.yml

cluster.name: elasticsearch-cluster
node.name: es-node1
network.host: 0.0.0.0
network.publish_host: 173.199.8.2
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["173.199.8.2:9300","173.199.8.3:9300","173.199.8.4:9300"]
discovery.zen.minimum_master_nodes: 1
cluster.initial_master_nodes: es-node1

vim /docker/es/conf/es2.yml

cluster.name: elasticsearch-cluster
node.name: es-node2
network.host: 0.0.0.0
network.publish_host: 173.199.8.3
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["173.199.8.2:9300","173.199.8.3:9300","173.199.8.4:9300"]
discovery.zen.minimum_master_nodes: 1
vim /docker/es/conf/es3.yml

cluster.name: elasticsearch-cluster
node.name: es-node3
network.host: 0.0.0.0
network.publish_host: 173.199.8.4
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["173.199.8.2:9300","173.199.8.3:9300","173.199.8.4:9300"]
discovery.zen.minimum_master_nodes: 1

5.创建docker-compose.yml文件, 接下来我们将基于这个文件进行docker-compose编排,生成docker容器

vim /docker/es/conf/docker-compose.yml
这个是有注释的复制下面的到配置文件中
version: '3.3'
services:
  es_1:
    # 镜像名称
    image: elasticsearch:7.6.1
    # 容器名称
    container_name: es1
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    # 文件映射到主机
    volumes:
      - /home/winner/docker/es/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    # 赋予权限
    privileged: true
    #端口映射
    ports:
      - 9200:9200
      - 9300:9300
    # 指定网段
    networks:
      es:
        ipv4_address: 173.199.8.2   #设置ip地址
  es_2:
    # 镜像名称
    image: elasticsearch:7.6.1
    # 容器名称
    container_name: es2
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    # 文件映射到主机
    volumes:
      - /home/winner/docker/es/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    # 赋予权限
    privileged: true
    #端口映射
    ports:
      - 9201:9200
      - 9301:9300
    # 指定网段
    networks:
      es:
        ipv4_address: 173.199.8.3   #设置ip地址
  es_3:
    # 镜像名称
    image: elasticsearch:7.6.1
    # 容器名称
    container_name: es3
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    # 文件映射到主机
    volumes:
      - /home/winner/docker/es/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    # 赋予权限
    privileged: true
    #端口映射
    ports:
      - 9202:9200
      - 9302:9300
    # 指定网段
    networks:
      es:
        ipv4_address: 173.199.8.4   #设置ip地址
networks:
  es:
    driver: bridge
    ipam:
      config:
        - subnet: "173.199.8.0/24"
这个是没有注释说明的

version: '3.3'
services:
  es_1:
    image: elasticsearch:7.6.1
    container_name: es1
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - /docker/es/conf/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    privileged: true
    ports:
      - 9200:9200
      - 9300:9300
    networks:
      es:
        ipv4_address: 173.199.8.2   #设置ip地址
  es_2:
    image: elasticsearch:7.6.1
    container_name: es2
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - /docker/es/conf/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    privileged: true
    ports:
      - 9201:9200
      - 9301:9300
    networks:
      es:
        ipv4_address: 173.199.8.3
  es_3:
    image: elasticsearch:7.6.1
    container_name: es3
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - /docker/es/conf/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    privileged: true
    ports:
      - 9202:9200
      - 9302:9300
    networks:
      es:
        ipv4_address: 173.199.8.4
networks:
  es:
    driver: bridge
    ipam:
      config:
        - subnet: "173.199.8.0/24"

6.生成容器

docker-compose up -d

7.查看

docker ps | grep es

8.查看节点信息

http://你虚拟机的IP:9200/_cat/nodes

9.在看看集群的健康状态:

http://你虚拟机的IP:9200/_cluster/health

我们看到status:"green" 字样,可见集群健康,es集群搭建成功!

10.分词安装

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.1/elasticsearch-analysis-ik-7.6.1.zip
docker cp elasticsearch-analysis-ik-7.6.1.zip es1:/usr/share/elasticsearch/plugins
docker exec -it es1 bash
mkdir -p /usr/share/elasticsearch/plugins/ik
mv /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-7.6.1.zip /usr/share/elasticsearch/plugins/ik
cd /usr/share/elasticsearch/plugins/ik
unzip elasticsearch-analysis-ik-7.6.1.zip

退出容器重新启动es1主节点

docker restart es1

11.kibana是es的一个可视化工具,提供了友好的可视化查看和操作页面,同学们可以简单的理解为类似于mysql的phpadmin。

docker run --name mykibana -e ELASTICSEARCH_HOSTS=http://你虚拟机的ip:9200 -e SERVER_PORT=5601  -e SERVER_HOST=0.0.0.0 -p 5601:5601 --privileged=true -d kibana:7.6.1

ELASTICSEARCH_HOSTS:es集群中任选一台es的http地址

汉化

kibana 7 中官方加入了中文的选项,中文包在容器中的 /usr/share/kibana/x-pack/plugins/translations/translations/zh-CN.jso

在配置文件 /usr/share/kibana/config/kibana.yml 中加入

i18n.locale: "zh-CN"

接下来,我们就可以用浏览器进入kibana界面了。

http://虚拟机ip地址:5601/app/kibana#/home

注意如果kibana无法启动就查看下是否为防火墙影响了,在介绍另一种kibana创建容器的方法http://www.xiaoshu168.com/docker/355.html

11.es-head

安装es-head之前,要搭建nodeJs环境,这里略过。

下载es-head:

[root@104 config]# git clone git://github.com/mobz/elasticsearch-head.git

进入elasticsearch-head根目录,执行:

[root@104 config]# npm install -g grunt-cli[root@104 config]# npm install[root@104 config]# npm run start[root@104 config]# grunt server &

我们验证下,

到浏览器中输入:

http://你虚拟机的ip地址:9111/

会发现页面已经出来了,此时我们还需要到第一个输入框中输入es的http地址,如下所示:

如果无法启动或者无法运行请检查防火墙或者虚拟机的内存

防火墙的基本操作:http://www.xiaoshu168.com/linux/394.html

(0)
分享:

本文由:xiaoshu168.com 作者:xiaoshu发表,转载请注明来源!

标签:

相关阅读