IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> docker-compose部署es集群并设置密码 -> 正文阅读

[系统运维]docker-compose部署es集群并设置密码

docker-compose部署es集群

部署环境为centos7

一、docker安装

参考地址:https://docs.docker.com/engine/install/centos/
# 1.卸载旧版本
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 

# 2.设置仓库
sudo yum install -y yum-utils device-mapper-persistent-data lvm2  
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 

# 3.安装 Docker Engine-Community
sudo yum install docker-ce docker-ce-cli containerd.io 
#查看可用于安装的版本,并根据版本安装。我是默认安装最新的
yum list docker-ce --showduplicates | sort –r 
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

# 4.启动docker
sudo systemctl start docker  

# 5.测试
docker run hello-world

# 使用docker ps命令查看,如果没有,说明没启动成功。可能的原因是需要创建daemon.json以设置镜像加速器

二、docker-compose安装

参考地址:https://docs.docker.com/compose/install/
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 

# 1.将可执行权限应用于二进制文件
sudo chmod +x /usr/local/bin/docker-compose  

# 2.创建软链
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose  

# 3.测试
docker-compose --version  

三、ES集群配置

在同一台服务器上模拟ES集群,这里由于一些原因,我选择的是6.8版本的。

1、创建目录

# 数据目录(由于模拟,所以需要创建三个)
mkdir -p /home/es/data/data1
mkdir -p /home/es/data/data2
mkdir -p /home/es/data/data3

# 配置文件目录(由于模拟,所以需要创建三个)
mkdir -p /home/es/config/config1
mkdir -p /home/es/config/config2
mkdir -p /home/es/config/config3

# 其他目录可根据条件自行创建
# ...

2、设置目录权限

chmod 777 /home/es/data/data1
# 其他类似

3、docker-compose配置文件

为了便利,我将所有配置放在一个文件中。(如果只是想简单搭建一个es集群可以参考官网https://www.elastic.co/guide/en/elasticsearch/reference/6.8/docker.html)

# 我在这里仅贴出来一个节点的配置,其他节点的配置和这配置差不多,只是需要修改端口和目录映射
version: '2.2' #官网配置文件的版本
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.17
    container_name: elasticsearch
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      # 设置jvm堆内存参数。配置足够容量的堆大小以确保Elasticsearch功能和性能是必要的(Elasticsearch JVM使用堆内存最小和最大大小为2 GB(5.X版本以上))
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"   
      - #node  (这些配置可定义es节点的类型(功能))
      # 是否有资格成为主节点(默认为true)  
	  - node.master=true  
      # 是否是数据节点(默认为true)  
      - node.data=true  
	  # 节点摄入(默认为true)  
      - node.ingest=true   
	  # 角色(默认为true)  
	  - node.ml=true   
      # 支持远程集群访问(默认为true)  
	  - cluster.remote.connect=true 
	  
      #network  
	  # 该节点将绑定到此主机名或 IP 地址并将此主机发布(通告)到集群中的其他节点。(0.0.0.0是可接受的 IP 地址,将绑定到所有网络接口)  
	  - network.host=0.0.0.0  
	  # 指定节点应绑定到哪个网络接口以侦听传入请求。一个节点可以绑定到多个接口  
	  #- network.bind_host=127.0.0.1  
	  # 发布主机是节点向集群中的其他节点通告的单一接口,以便这些节点可以连接到它(发布只有一个)  	           
	  #- network.publish_host=127.0.0.1
      # 传入的 HTTP 请求绑定到的端口(默认为9200-9300)  
	  - http.port=9200  
      # 绑定节点之间通信的端口(默认为9300-9400)  
      - transport.port=9300  
  
      #discovery  
      # 此设置提供此节点将尝试联系的其他节点的初始列表  
	  - "discovery.zen.ping.unicast.hosts=elasticsearch,elasticsearch2"  
      # 形成集群的符合主节点条件的最小节点数。为避免脑裂,此设置应设置为符合 master 资格的节点数:(master_eligible_nodes / 2) + 1  
      - discovery.zen.minimum_master_nodes=2

    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /home/es/data/data1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - esnet
networks:
  esnet:
  

4、启动

docker-compose up -d

# 如果配置文件名不是docker-compose.yml,可使用
docker-compose -f 文件名 up -d

启动后可查看日志

docker logs -f elasticsearch

四、开启安全模式

据了解,es6.8内置了xpack,xpack用于安全权限控制等。但是xpack只提供部分功能。
也可以使用其他方案,nginx或者search guade(开源)。
在这里我使用的是xpack

1.进入es容器,并创建证书

#查看启动的容器  
docker ps   
#进入其中一个容器  
docker exec -it 容器ID或名称 /bin/bash   
#创建证书颁发机构  
bin/elasticsearch-certutil ca  
#生成证书和私钥  
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12  
#退出容器  
exit  
#从容器中拷贝证书  
docker cp 容器ID/容器名:/usr/share/elasticsearch/elastic-certificates.p12    宿主机路径
docker cp 容器ID/容器名:/usr/share/elasticsearch/elastic-stack-ca.p12     宿主机路径
  • 注意:在创建证书颁发机构和生成证书和私钥的时候,需要输入密码,然后将密码添加进keystore里。但是在实际操作中,我设置密码并将密码添加至keystore后,启动es集群,从节点会报错。所以在创建和生成时,我一路enter。

2.添加配置

environment:

- http.cors.enabled=true  
- http.cors.allow-origin=*  
- http.cors.allow-headers=Authorization,X-Requested-With,Content-Length,Content-Type  
# 配置传输层tls/ssl加密传输  
- xpack.security.enabled=true  
- xpack.security.authc.accept_default_password=true  
- xpack.security.transport.ssl.enabled=true  
#证书方式  
- xpack.security.transport.ssl.verification_mode=certificate  
- xpack.security.transport.ssl.keystore.path=/usr/share/elasticsearch/config/certificates/elastic-certificates.p12  
- xpack.security.transport.ssl.truststore.path=/usr/share/elasticsearch/config/certificates/elastic-certificates.p12  
# 配置http层tls/ssl加密传输  
# 这个配置可以用,但是配置后使用浏览器访问es集群是不安全的,可能是证书问题,所以最后没开启
#- xpack.security.http.ssl.enabled=true  
#- xpack.security.http.ssl.keystore.path=/usr/share/elasticsearch/config/certificates/elastic-certificates.p12  
#- xpack.security.http.ssl.truststore.path=/usr/share/elasticsearch/config/certificates/elastic-certificates.p12  

volumes:

- 证书路径:/usr/share/elasticsearch/config/certificates 

3.设置密码

再次执行docker-compose up启动集群,再打开一个terminal,进入任意一个容器,执行

./bin/elasticsearch-setup-passwords interactive  

设置完成后,再访问Elasticsearch集群时,就需要提供用户名和密码才能访问。账号为elastic,密码为设置的密码。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 00:12:24  更:2021-07-24 00:13:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 20:26:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码