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
安装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地址,如下所示:
如果无法启动或者无法运行请检查防火墙或者虚拟机的内存
本文由:xiaoshu168.com 作者:xiaoshu发表,转载请注明来源!