本文基于Docker镜像搭建Elasticsearch集群,集群搭建完成后设置集群用户密码,主要包含以下内容:

  • 修改系统参数
  • 安装docker和docker-compose
  • 编写yml配置文件
  • 获取集群证书
  • 修改yml配置文件
  • 启动ES集群并修改密码
  • 配置kibana

(一)修改系统参数

(1)    virtual memory

默认情况下,Elasticsearch使用mmapfs目录存储其索引,mmap计数的默认操作系统限制可能太低,这可能会导致内存不足,需要将其调至262144。在 /etc/sysctl.conf 添加一行 :

vm.max_map_count=262144

运行 sysctl -p 使其生效。

(2)disable swap file

通常,Elasticsearch的内存使用由JVM选项控制。不需要启用交换。Linux系统可执行 swapoff -a 不启用。为了避免每次开机都需要手动执行,可将其写入开机执行文件 /etc/rc.local,开机自动执行。

(3)ulimit -n

系统默认设置1024。Elasticsearch使用了很多文件描述符,文件描述符用完可能是灾难性的,并且很可能导致数据丢失。因此运行Elasticsearch之前需要将文件描述符的数量限制增加到65536或更高。在 /etc/security/limits.conf 末尾追加以下内容:

root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536
* soft memlock  unlimited
* hard memlock  unlimited

如果是Ubuntu系统,追加上述内容后,ulimit -n可能并没有从1024变为65536,还需要在 /etc/systemd/user.conf和 /etc/systemd/system.conf 中追加

DefaultLimitNOFILE=65535

注意:修改后重启机器

(二)安装docker和docker-compose

(1)安装docker

Ubuntu和Debian可新建docker.sh,添加以下内容:

#!/bin/bash
OS_NAME=`cat /etc/os-release | grep NAME`sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common iptables
sudo apt-get remove docker docker-engine docker.io containerd runcif [[ $OS_NAME =~ "Ubuntu" ]];thensudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
elsecurl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
fisudo apt-get update
sudo apt-get install -y docker-ce
sudo systemctl start docker

CentOS系统添加以下内容到docker.sh中,赋予可执行权限,运行即可。

#!/bin/bash
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-enginesudo yum install -y yum-utils device-mapper-persistent-data lvm2 iptablessudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
sudo systemctl start docker

(2)安装docker-compose

新建docker-compose.sh,添加以下内容并赋予执行权限后执行。

#!/bin/bashif [ -f "/usr/local/bin/docker-compose" ]; thensudo rm /usr/local/bin/docker-compose #清除旧版本docker-compose
ficurl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose

安装完成后获取elasticsearch:6.8.6镜像,为创建集群做准备。

docker pull elasticsearch:6.8.6

(三)编写yml文件

新建/opt/es目录,在es目录下新建config目录和docker-compose.yml文件。

docker-compose.yml

version: '2.2'
services:es01:image: elasticsearch:6.8.6container_name: es01environment:- node.name=es01- cluster.name=bastion-es-cluster- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms128m -Xmx128m"ulimits:memlock:soft: -1hard: -1volumes:- /opt/es-cluster/config/es01.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /opt/es-cluster/data:/usr/share/elasticsearch/data- /opt/es-cluster/logs:/usr/share/elasticsearch/logsports:- 9200:9200network_mode: hostes02:image: elasticsearch:6.8.6container_name: es02environment:- node.name=es02- cluster.name=bastion-es-cluster- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms128m -Xmx128m"ulimits:memlock:soft: -1hard: -1volumes:- /opt/es-cluster/config/es02.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /opt/es-cluster/data:/usr/share/elasticsearch/data- /opt/es-cluster/logs:/usr/share/elasticsearch/logsnetwork_mode: hostes03:image: elasticsearch:6.8.6container_name: es03environment:- node.name=es03- cluster.name=bastion-es-cluster- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms128m -Xmx128m"ulimits:memlock:soft: -1hard: -1volumes:- /opt/es-cluster/config/es03.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /opt/es-cluster/data:/usr/share/elasticsearch/data- /opt/es-cluster/logs:/usr/share/elasticsearch/logsnetwork_mode: host

在config目录下新建es01.yml,es02.yml,es03.yml,内容如下:

es01.yml

cluster.name: es-cluster
node.name: es01bootstrap.memory_lock: true
bootstrap.system_call_filter: falsenetwork.host: 0.0.0.0transport.tcp.port: 9300discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.unicast.hosts:- 127.0.0.1:9300- 127.0.0.1:9301- 127.0.0.1:9302node.data: true
node.master: truenode.max_local_storage_nodes: 7

es02.yml

cluster.name: es-cluster
node.name: es02bootstrap.memory_lock: true
bootstrap.system_call_filter: falsenetwork.host: 0.0.0.0transport.tcp.port: 9301discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.unicast.hosts:- 127.0.0.1:9300- 127.0.0.1:9301- 127.0.0.1:9302node.data: true
node.master: truenode.max_local_storage_nodes: 7

es03.yml

cluster.name: es-cluster
node.name: es03bootstrap.memory_lock: true
bootstrap.system_call_filter: falsenetwork.host: 0.0.0.0transport.tcp.port: 9302discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.unicast.hosts:- 127.0.0.1:9300- 127.0.0.1:9301- 127.0.0.1:9302node.data: true
node.master: truenode.max_local_storage_nodes: 7

在docker-compose.yml所在目录,执行docker-compose up即可创建一个Elasticsearch集群。此集群包含3个节点,每个节点既是master节点,又是data节点。在浏览器输入 Your_IP:9200,看到类似下面的内容说明创建成功。

至此,一个包含3个节点的Elasticsearch集群已经搭建完成。但是存在一个问题:只要知道ip,任何人都可以访问这个进群,进行添加、删除索引等操作,这显然不是我们想要的结果。所以需要设置用户和密码,只有用户名和密码正确才有权限访问。

(四)获取集群证书

依次执行以下步骤

#查看启动的容器
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 .

生成的 elastic-certificates.p12 就是我们需要的证书,容器之间通过证书认证通信。

(五)修改yml配置文件

新建目录certificates,将 elastic-certificates.p12 放在certificate中,在es01.yml、es02.yml、es03.yml中添加下列内容

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

修改docker-compose.yml,在每个volume下添加

- /opt/es/certificates:/usr/share/elasticsearch/config/certificates

(六)启动ES集群并修改密码

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

./bin/elasticsearch-setup-passwords interactive

如果出现下面的内容,说明不能在这个容器中设置密码。

回到执行docker-compose up的terminal,可看到类似下面的日志,进入到这个容器中,执行上面的命令即可设置密码。

执行设置密码的命令,如果出现下面的内容,输入y即可设置elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user这几个内置用户的密码。

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

(七)配置kibana

#获取kibana镜像
docker pull kibana:6.8.6 #启动一个kibana容器
docker run -dit -p 5601:5601 --name es_kibana kibana:6.8.6#进入kibana容器
docker exec -dit es_kibana /bin/bash#修改kibana配置文件
vi config/kibana.yml1、将 elasticsearch.hosts 修改为你的ip
2、添加下面两行
elasticsearch.username: kibana
elasticsearch.password: 你设置的kibana密码

保存退出容器后,执行下面的命令重启es_kibana容器

docker restart es_kibana

在浏览器中输入Your_IP:5601,输入用户名和密码即可登录kibana。

使用Docker搭建Elasticsearch6.8.6集群及设置集群用户密码相关推荐

  1. 抖音群怎么设置进群权限

    1.点击三个点 打开抖音群聊,点击右上角的三个点. 2.点击群管理 在群聊设置,点击群管理. 3.点击进群门槛 进入群管理,点击进群门槛. 4.点击设置 在进群门槛,设置进群的权限即可.

  2. 米家接入HomeKit系列二:通过群辉NAS的Docker搭建HomeAssistant

    系列文章 米家接入HomeKit系列一:接入基本原理与开篇 米家接入HomeKit系列二:通过群辉NAS的Docker搭建HomeAssistant 米家接入HomeKit系列三:HomeAssist ...

  3. docker下,一行命令搭建elasticsearch6.5.0集群(带head插件和ik分词器)

    docker下,一行命令搭建elasticsearch6.5.0集群(带head插件和ik分词器) 2019年01月27日 21:06:12 博陵精骑 阅读数:794 标签: dockerelasti ...

  4. Docker 搭建elasticsearch 7.6.x集群

    Docker 搭建elasticsearch 7.6.x集群 文章目录 拉取镜像 设置Elasticsearch挂载目录 编写elasticsearch.yml配置文件 node-1 node-2 n ...

  5. 使用Docker搭建Elasticsearch集群环境

    本篇文章首发于头条号单机如何搭建Elasticsearch集群?使用容器技术快速构建集群环境,欢迎关注头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_te ...

  6. Mac 使用 docker 搭建 kafka 集群 + Zookeeper + kafka-manager

    Kafka 搭建: 建立Zookeeper容器: 这里我们用最简单的方式创建一个独立的Zookeeper节点,如果要考虑zookeeper的高可用,可以将其做成一个集群,最好是能有多台机器. $ do ...

  7. Docker搭建hadoop集群

    参考https://github.com/kiwenlau/hadoop-cluster-docker/blob/master/start-container.sh 因为之前在VMware上操作Had ...

  8. 用Docker搭建Elasticsearch集群

    用Docker搭建Elasticsearch集群 对于用Docker搭建分布式Elasticsearhc集群的一个介绍,以及一些实施中遇到问题的总结 搜索服务简述 结合业务的场景,在目前的商品体系需要 ...

  9. docker 添加端口映射_苟且偷生的程序猿没法摸鱼了,从docker搭建elasticsearch集群开始学习...

    最近刚换了公司,然后公司刚好使用的docker.而本人作为一个石锤的搬砖员,之前只知道搬砖们,对于这些东西确实没学过.今天在本地使用docker搭建elasticsearch集群,记录下过程,而且el ...

最新文章

  1. TCP滑动窗口(Sliding Window)原理
  2. php接口调用实例化,PHP抽象类和接口用法实例详解
  3. 【完结】16篇图像分类干货文章总结,从理论到实践全流程大盘点!
  4. SAP Spartacus LayoutConfig的配置为何运行时不生效
  5. Centos7 Minimal安装常用工具包
  6. 面试官:Spring创建好的单例对象存在线程安全问题吗?
  7. mysql锁表语句,Java核心知识点
  8. 使用/调用 函数的时候, 前面加不加 对象或 this?
  9. RocketMQ之消费者并发消费源码解析
  10. 三步教会你在solidworks中画铝型材
  11. endnote X7 超级初学者教程
  12. android youtube免谷歌,youtube免谷歌框架
  13. 【无标题】win7系统怎么配置adb环境变量
  14. 微pe工具箱 系统安装教程_微PE工具箱安装系统教程(Win7或Win10)
  15. 申论该怎么学?申论作文如何提高
  16. 质量免费--读书笔记(上篇)
  17. 比较出名的几种美国主机
  18. 浙工大c语言期中考试试题答案,浙工大c语言程序设计期末试卷2
  19. Jetpack MVVM 七宗罪之四: 使用 LiveData/StateFlow 发送 Events
  20. oracle的字符集(NLS_LANGUAGE)

热门文章

  1. 混合云存储开启企业上云新路径--阿里云混合云备份容灾方案发布 1
  2. velocity模板引擎 -- java.io.FileNotFoundException: velocity.log (Permission denied)
  3. python3.6 安装Scrapy
  4. 澳大利亚量子计算机获突破 首次实现简化逻辑门
  5. 第五章 运输层(UDP和TCP三次握手,四次挥手分析)
  6. INNODB的锁的类型
  7. CPU和GPU的区别
  8. [ACM_几何] Wall
  9. 一些经常在建站中用到的英文
  10. 行业研究报告基本分析思路