docker compose搭建elasticsearch7集群

这篇具有很好参考价值的文章主要介绍了docker compose搭建elasticsearch7集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、集群介绍

系统环境:Centos7.5

服务器节点:

主机名 IP
hadoop03 192.168.1.153
hadoop04 192.168.1.154
hadoop05 192.168.1.155

二、环境准备

1、安装docker:略过

2、安装docker compose

1)使用官方推荐方式(此方式需服务器翻外网)

curl -L "https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

docker-compose --version

2)自行下载

        由于服务器连不上Github,因此手动下载:https://github.com/docker/compose/releases/

选择docker-compose-linux-x86_64并下载,然后上传到fuwuq 并下载,然后上传到服务器,

mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

docker-compose --version

3)修改系统参数

vim /etc/sysctl.conf
vm.max_map_count = 262144

# 使配置生效
sysctl -p
# 临时修改,系统重启后就失效
sysctl -w vm.max_map_count=262144

三、安装elasticsearch

1、新建目录

        在三台服务器上新建elasticsearch用户:

mkdir -p /soft/elasticsearch/es/
cd /soft/elasticsearch/es/
mkdir conf
mkdir logs
mkdir data

2、创建docker-compose.yml文件

三个节点分别执行

cd /soft/elasticsearch/es
touch  docker-compose.yml

1)hadoop03节点

vim docker-compose.yml

version: '1.0'
services:
  es:                    # 服务名称
    image: elasticsearch:7.3.0      # 使用的镜像
    container_name: es01   # 容器名称
    restart: always                 # 失败自动重启策略
    environment:
      - node.name=es01                 # 节点名称,集群模式下每个节点名称唯一
      - network.host=0.0.0.0                # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,即本机
      - network.publish_host=192.168.1.153      # 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
      - discovery.seed_hosts=192.168.1.153,192.168.1.154,192.168.1.155          # es7.0之后新增的写法,写入候选主节点的设备地址,在开启服务后,如果master挂了,哪些可以被投票选为主节点
      - cluster.initial_master_nodes=es01  # es7.0之后新增的配置,初始化一个新的集群时需要此配置来选举master
      - cluster.name=es-cluster-prod     # 集群名称,相同名称为一个集群, 三个es节点须一致
#      - http.cors.enabled=true    # 是否支持跨域,是:true // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
#      - http.cors.allow-origin="*" # 表示支持所有域名      // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
      - bootstrap.memory_lock=true  # 内存交换的选项,官网建议为true
      - node.master=true
      - node.data=true
      - http.port=9200
      - transport.tcp.port=9300
      - "ES_JAVA_OPTS=-Xms2g -Xmx2g" # 设置内存,如内存不足,可以尝试调低点
    ulimits:        # 栈内存的上限
      memlock:
        soft: -1    # 不限制
        hard: -1    # 不限制
    volumes:
      - ./conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
      - ./data:/usr/share/elasticsearch/data  # 存放数据的文件
      - ./logs:/usr/share/elasticsearch/logs  #存放日志文件
      - ./plugins:/usr/share/elasticsearch/plugins #存放插件
      - ./conf/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 #存放证书
    ports:
      - 9200:9200    # http端口,可以直接浏览器访问
      - 9300:9300    # es集群之间相互访问的端口,jar之间就是通过此端口进行tcp协议通信,遵循tcp协议。
    networks:
      - elk
  es-head:
    image: tobias74/elasticsearch-head:6
    container_name: es-head
    restart: always
    ports:
      - 9100:9100
    networks:
      - elk
networks:
  elk:
    driver: bridge

2)hadoop04节点

docker-compose.yml

version: '1.0'
services:
  es:                    # 服务名称
    image: elasticsearch:7.3.0      # 使用的镜像
    container_name: es02   # 容器名称
    restart: always                 # 失败自动重启策略
    environment:
      - node.name=es02                 # 节点名称,集群模式下每个节点名称唯一
      - network.host=0.0.0.0                # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,即本机
      - network.publish_host=192.168.1.154      # 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
      - discovery.seed_hosts=192.168.1.153,192.168.1.154,192.168.1.155          # es7.0之后新增的写法,写入候选主节点的设备地址,在开启服务后,如果master挂了,哪些可以被投票选为主节点
      - cluster.initial_master_nodes=192.168.1.153  # es7.0之后新增的配置,初始化一个新的集群时需要此配置来选举master
      - cluster.name=es-cluster-prod     # 集群名称,相同名称为一个集群, 三个es节点须一致
#      - http.cors.enabled=true    # 是否支持跨域,是:true // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
#      - http.cors.allow-origin="*" # 表示支持所有域名      // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
      - bootstrap.memory_lock=true  # 内存交换的选项,官网建议为true
      - node.master=true
      - node.data=true
      - http.port=9200
      - transport.tcp.port=9300
      - "ES_JAVA_OPTS=-Xms2g -Xmx2g" # 设置内存,如内存不足,可以尝试调低点
    ulimits:        # 栈内存的上限
      memlock:
        soft: -1    # 不限制
        hard: -1    # 不限制
    volumes:
      - ./conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
      - ./data:/usr/share/elasticsearch/data  # 存放数据的文件
      - ./logs:/usr/share/elasticsearch/logs  #存放日志文件
      - ./plugins:/usr/share/elasticsearch/plugins #存放插件
      - ./conf/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 #存放证书
    ports:
      - 9200:9200    # http端口,可以直接浏览器访问
      - 9300:9300    # es集群之间相互访问的端口,jar之间就是通过此端口进行tcp协议通信,遵循tcp协议。

3)hadoop05节点

docker-compose.yml

version: '1.0'
services:
  es:                    # 服务名称
    image: elasticsearch:7.3.0      # 使用的镜像
    container_name: es03   # 容器名称
    restart: always                 # 失败自动重启策略
    environment:
      - node.name=es03                 # 节点名称,集群模式下每个节点名称唯一
      - network.host=0.0.0.0                # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,即本机
      - network.publish_host=192.168.1.155      # 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
      - discovery.seed_hosts=192.168.1.153,192.168.1.154,192.168.1.155          # es7.0之后新增的写法,写入候选主节点的设备地址,在开启服务后,如果master挂了,哪些可以被投票选为主节点
      - cluster.initial_master_nodes=192.168.1.153  # es7.0之后新增的配置,初始化一个新的集群时需要此配置来选举master
      - cluster.name=es-cluster-prod     # 集群名称,相同名称为一个集群, 三个es节点须一致
#      - http.cors.enabled=true    # 是否支持跨域,是:true // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
#      - http.cors.allow-origin="*" # 表示支持所有域名      // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
      - bootstrap.memory_lock=true  # 内存交换的选项,官网建议为true
      - node.master=true
      - node.data=true
      - http.port=9200
      - transport.tcp.port=9300
      - "ES_JAVA_OPTS=-Xms2g -Xmx2g" # 设置内存,如内存不足,可以尝试调低点
    ulimits:        # 栈内存的上限
      memlock:
        soft: -1    # 不限制
        hard: -1    # 不限制
    volumes:
      - ./conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
      - ./data:/usr/share/elasticsearch/data  # 存放数据的文件
      - ./logs:/usr/share/elasticsearch/logs  #存放日志文件
      - ./plugins:/usr/share/elasticsearch/plugins #存放插件
      - ./conf/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 #存放证书
    ports:
      - 9200:9200    # http端口,可以直接浏览器访问
      - 9300:9300    # es集群之间相互访问的端口,jar之间就是通过此端口进行tcp协议通信,遵循tcp协议。

        这里要注意的是,  network.publish_host这个属性必须指定为宿主机的IP;否则它默认使用的本机IP,也就是容器自己的IP,由于三个docker容器分别在不容的服务器,这样是互相发现不了的,会报这个错:master not discovered yet, this node has not previously joined a bootstrapped (v7+) cluster,以及这个错:javax.net.ssl.SSLHandshakeException: Insufficient buffer remaining for AEAD cipher fragment (2). Needs to be more than tag size (16)。由于第一个错只是warn,而第二个错误直接是异常比较明显,所以一直在去网上搜索第二个错误,碰巧的是第二个错误网上大部分说是openJDK的一个bug,以至于快把我整抑郁了;但其实第二个错误是第一个错误引起的。

3、配置elasticsearch.yml

vim es/conf/elasticsearch.yml

network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,Content-Type
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

4、获取授权证书

        由于开启了X-Pack安全认证,需要获取证书,这里的思路是临时创建一个es容器,在里面生成证书后,拷贝出来:

#生成es临时容器
docker run -dit --name=es elasticsearch:7.3.0 /bin/bash
#进入容器内
docker exec -it es /bin/bash
#生成证书的命令
./bin/elasticsearch-certutil ca
#一通回车后
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
#又一通回车后,退出容器
exit

# 复制出来
docker cp es:/usr/share/elasticsearch/elastic-certificates.p12 .
#移除临时容器
docker kill es
docker rm es
# 将证书移动到conf目录下
mv elastic-certificates.p12 /soft/elasticsearch/es/conf
# 将证书拷贝到另外两台机器
scp /soft/elasticsearch/es/conf/elastic-certificates.p12 hadoop04:/soft/elasticsearch/es/conf
scp /soft/elasticsearch/es/conf/elastic-certificates.p12 hadoop05:/soft/elasticsearch/es/conf

5、授权

如果绑定安装一个本地目录或文件,那么它必须是elasticsearch用户可读的(在容器内部默认使用elasticsearch用户运行)。此外,该用户必须对数据和日志目录具有写权限。

chmod -R 777 es

6、启动/停止

# -d表示后台启动
docker-compose up -d

# 命令将停止运行的容器,但不会删除它们
docker-compose stop

# 停止运行的容器,并且会删除已停止的容器以及已创建的所有网络;添加-v标记以删除所有卷。这对于通过运行在环境中进行完全重置非常有用
docker-compose down -v

7、设置密码

在hadoop03节点执行:

docker exec -it es01 /bin/bash

./bin/elasticsearch-setup-passwords interactive

Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
 
Enter password for [elastic]: 
Reenter password for [elastic]: 
Enter password for [apm_system]: 
Reenter password for [apm_system]: 
Enter password for [kibana]: 
Reenter password for [kibana]: 
Enter password for [logstash_system]: 
Reenter password for [logstash_system]: 
Enter password for [beats_system]: 
Reenter password for [beats_system]: 
Enter password for [remote_monitoring_user]: 
Reenter password for [remote_monitoring_user]: 
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

建议密码设置为一样的,方便记忆。

8、es-head连接不上es

  1)跨域问题

       在elasticsearch.yml配置文件中有如下设置:

# 如果不设置这个,只能在本机访问
network.host: 0.0.0.0
# 处理跨域问题
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,Content-Type

2)401(Unauthorized)问题

docker compose搭建elasticsearch7集群

   这是因为加了X-Pack认证,需要用户名密码才可以访问:

http://192.168.1.153:9100/?auth_user=elastic&auth_password=Zstax@123

按照如下方式访问即可:

docker compose搭建elasticsearch7集群

四、安装kibana

1、新建目录

mkdir /soft/elasticsearch/kibana
cd kibana
mkdir conf
mkdir data

 2、配置docker-compose

cd /soft/elasticsearch/kibana
vim docker-compose.yml

version: '1.0'
services:
  kibana:
    image: docker.elastic.co/kibana/kibana:7.3.0
    container_name: kibana
    environment:
      - SERVER_NAME=kibana
      - ELASTICSEARCH_HOSTS=http://192.168.1.153:9200  #这个地址如果是阿里云、华为云等云服务器,则需要是对外IP,也就是用户电脑能访问到的IP
      - XPACK_MONITORING_ENABLED=true
    ports:
      - 5601:5601
    volumes:
      - ./conf/kibana.yml:/usr/share/kibana/config/kibana.yml
      - ./data:/usr/share/kibana/data
    depends_on:
      - es
    networks:
      - elk
networks:
  elk:
    driver: bridge

3、配置kibana.yml

vim /soft/elasticsearch/kibana/conf/kibana.yml

elasticsearch.username: "elastic"
elasticsearch.password: "Zstax@123"
xpack.monitoring.enabled: true
xpack.monitoring.ui.container.elasticsearch.enabled: true
server.host: "0.0.0.0"
i18n.locale: zh-CN #中文
#去除警告:Generating a random key for xpack.reporting.encryptionKey. 
#To prevent pending reports from failing on restart, please set xpack.reporting.encryptionKey in kibana.ym
xpack.reporting.encryptionKey: "122333444455555666666777777788888888"
#去除警告:Generating a random key for xpack.security.encryptionKey. 
#To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.y
xpack.security.encryptionKey: "122333444455555666666777777788888888"

4、授权

如果绑定安装一个本地目录或文件,那么它必须是elasticsearch用户可读的(在容器内部默认使用elasticsearch用户运行)。此外,该用户必须对数据和日志目录具有写权限。

chmod -R 777 kibana

5、启动/停止文章来源地址https://www.toymoban.com/news/detail-438652.html

# -d表示后台启动
docker-compose up -d

# 命令将停止运行的容器,但不会删除它们
docker-compose stop

# 停止运行的容器,并且会删除已停止的容器以及已创建的所有网络;添加-v标记以删除所有卷。这对于通过运行在环境中进行完全重置非常有用
docker-compose down -v

到了这里,关于docker compose搭建elasticsearch7集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elasticsearch7.x 集群的搭建和分片设置

    目录   一、es集群的基本核心概念 二、es集群搭建 三、es集群索引分片管理 3.1创建索引,指定分片  3.2索引分片的分配 3.2.1 手动移动分片:  3.2.1 修改副分片数量 Cluster 集群: 一个 Elasticsearch 集群由一个或多个节点(Node)组成,每个集群都有一个共同的集群名称作为 标识。

    2023年04月25日
    浏览(34)
  • ElasticSearch7.3.0 集群搭建及配置安全认证

    注: 由于是测试,搭建的环境就在一台机器上(操作系统是 CentOS 7) 配置 Elasticsearch Elasticsearch 的配置文件是 elasticsearch/elasticsearch.yml 集群的名称 配置集群的名称,所有的node节点集群名称要一致 节点的名称 配置每个节点的名称,节点的名称要在集群中唯一 索引文件的存储位置 默认

    2023年04月13日
    浏览(52)
  • docker部署Elasticsearch7.17集群和kibana

    环境准备: 3台centos7.9的服务器 vim /etc/sysctl.conf添加:vm.max_map_count=262144 sysctl -w vm.max_map_count=262144 即时生效 cat /proc/sys/vm/max_map_count 查看 #创建es配置目录 mkdir /home/es/config -p #创建es数据目录 mkdir /home/es/data #创建es插件目录 mkdir /home/es/plugins #授权目录 chmod -R 777 /home/es 在/home/e

    2024年02月10日
    浏览(38)
  • CentOS7下安装ElasticSearch7.6.1详细教程(单机、集群搭建)

    CentOS 7下安装ElasticSearch7.6.1详细教程 ElasticSearch客户端Kibana7.6.1安装教程 ElasticSearch分词器IK安装教程 Elasticsearch-head插件安装教程 想要学习ElasticSearch技术,需要在服务器搭建ElasticSearch环境。 CenOS:7; JDK:1.8; Elasticsearch:7.6.1; ES不能使用root用户来启动,必须使用普通用户来

    2023年04月09日
    浏览(40)
  • 使用Docker-Compose搭建Redis集群

    3主+3从 由于仅用于测试,故我这里只用1台服务器进行模拟 redis列表 在server上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster 在/opt/docker/redis-cluster目录下创建redis-1,redis-2,redis-3,redis-4,redis-5,redis-6文件夹 注意:port值不能都为6379,根据上面redis列表设

    2024年02月15日
    浏览(29)
  • 利用docker compose 搭建 elasticsearch 和kibana

    本文介绍了从docker compose 搭建 elasticsearch 并安装IK 分词插件,然后再用kibana测试的详细步骤。 1.1 下载镜像 1.2 下载IK分词插件 从官方网站 Releases · medcl/elasticsearch-analysis-ik · GitHub 下载对应版本的分词插件,因为我们的 elasticsearch 为 7.17.1 所以下载 elasticsearch-analysis-ik-7.17.1.z

    2024年02月11日
    浏览(31)
  • 实战:大数据Spark简介与docker-compose搭建独立集群

    很多同学都使用过经典的大数据分布式计算框架hadoop,其分布式文件系统HDFS对数据管理很友好,但是计算能力较Spark还是不足。俗话说工欲善其事必先利其器,今天就介绍docker容器化部署Spark集群。 Spark简介 Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在

    2024年02月11日
    浏览(41)
  • Elasticsearch7.8.1集群安装手册

    elasticsearch集群规划为三个节点,elasticsearch版本为7.8.1 1)下载 Elasticsearch7.8.1安装包 3.1 解压 3.2 修改配置 1)jvm.options调整内存大小 2)修改elasticsearch.yml 集群规划为三个节点,三个节点的配置,只有node.name: es-node1 不同,请分别配置 具体配置如下 3.3 创建用户 3.4.1 排错 3.4.2 后

    2024年02月08日
    浏览(42)
  • docker compose 搭建ES集群的详细步骤,并去掉验证,使用http访问

    要使用 Docker Compose 搭建一个 Elasticsearch 集群,并配置为不使用验证,同时使用 HTTP 访问,你可以遵循以下步骤: 步骤 1: 安装 Docker 和 Docker Compose 确保你的系统上已安装 Docker 和 Docker Compose。如果尚未安装,请访问 Docker 的官方网站进行安装。 步骤 2: 创建 Docker Compose 配置文件

    2024年02月02日
    浏览(30)
  • elasticsearch7.7集群部署以及密码认证

    1.1 elasticsearch 部署 1.1.1 安装jdk 略 1.1.2 安装准备 1、安装用户用elastic用户 2、创建相关目录及授权 [root@es-node1 ~]# chown -R elastic: elastic/data [root@es-node1 ~]# chmod -R 775 /data 3、root用户编辑 /etc/security/limits.conf,追加以下内容; soft nofile 65536 hard nofile 65536 soft nproc 2048 hard nproc 4096 4、

    2024年02月03日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包