Docker Desktop下搭建 ElasticSearch 8.2.3 集群教程

上周在CentOS8上面已经安装了Elastic ELK并测试通过了,但是ElasticSearch状态是yellow,因为索引没有保存在副本上。这周想试一下ElasticSearch集群,担心在测试服上启动太多东西影响性能,就决定在我的电脑上来尝试。Docker只能运行在linux系统上,要在Windows上装的话,必须先装Linux虚拟机。我的电脑是Windows 11家庭版,可以装Windows Subsystem for Linux,即WSL。如果你本身就是在Linux环境装,可以跳过第一步。

一、Windows 11上安装Docker Desktop

这里我就不多说了,参考这篇文章:https://www.cnblogs.com/marchxd/p/16398409.html
我装上WSL之后,去微软的应用商店下载安装了ubuntu18(也可以用wsl命令行安装,但是很慢)。点击电脑左下角“窗口”图标,在“搜索程序和文件”框中输入“store”,就会在菜单上面出现“Microsoft store”菜单项,点击即可以进入。

ubuntu

然后在商店顶部输入ubuntu,就可以进看到unbuntu18等不同的版本,进入产品介绍页,点“获取”按钮就可以下载了。下载完成后,点击电脑左下角“窗口”图标,在“搜索程序和文件”框中输入“ubuntu”,就可以看到你安装的Linux子系统了。
装完ubuntu之后,再安装Docker Desktop,第一次启动会很慢,进入后,要改一下配置,下次就启动就很快了:
配置阿里镜像加速

  "registry-mirrors": [
    "https://6ua7riiy.mirror.aliyuncs.com",
    "https://mirror.ccs.tencentyun.com",
    "https://reg-mirror.qiniu.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://dockerhub.azk8s.cn",
    "https://hub-mirror.c.163.com",
    "https://registry.docker-cn.com"
  ]

在Docker Desktop的设置中,Docker Engine项下,加入阿里镜像加速地址配置,这样用docker pull去dockerhub下载镜像的时候就会很快速了。上面给了一些网上找的地址,需要自己试下能不能用,阿里云加速地址的获取,可以去这里看下:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors (ps: 要先登录)


然后参照上图再配置与Ubuntu集成就可以了。

二、拉取Docker 镜像

开始菜单点运行,输入cmd并回车,进入Windows的控制台:

docker pull elasticsearch:8.2.3
docker pull kibana:8.2.3

用上面的命令就能下载到elasticsearch和kibana的docker 镜像了

三、准备配置文件

因为要运行3个节点,就要准备三个映射目录,将elasticsearch数据保存在容器之外,方便备份,就算容器被删除了数据也不会丢失。
我在D盘建了三个目录D:/ProgramData/es1,D:/ProgramData/es2,D:/ProgramData/es3,然后又在这三个目录下分别建立了es1.yml,es2.yml,es3.yml三个文件,以及三个data子目录。当然如果你在Linux环境,你想建在/opt/es1,/opt/es2,/opt/es3目录下也可以。
然后修改es1.yml文件内容为:

cluster.name: hkyc
node.name: tu1
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: ["tu1","tu2","tu3"]
discovery.seed_hosts: ["192.168.50.26:9301", "192.168.50.26:9302", "192.168.50.26:9300"]
ingest.geoip.downloader.enabled: false
xpack.security.enabled: false

node.name为节点名称,每个节点要不同,我后面两个配置的是tu2,tu3;

四、 启动docker容器

开始菜单点运行,输入cmd并回车,进入Windows的控制台,执行下面的命令启动三个容器:

 docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e TZ=Asia/Shanghai --privileged -d -p 9200:9200 -p 9300:9300 -v  D:/ProgramData/es1/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v D:/ProgramData/es1/data:/usr/share/elasticsearch/data --name es1 elasticsearch:8.2.3
 
 docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e TZ=Asia/Shanghai  --privileged -d -p 9201:9200 -p 9301:9300 -v  D:/ProgramData/es2/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v D:/ProgramData/es2/data:/usr/share/elasticsearch/data --name es2 elasticsearch:8.2.3
 
 docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e TZ=Asia/Shanghai --privileged -d -p 9202:9200 -p 9302:9300 -v  D:/ProgramData/es3/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v D:/ProgramData/es3/data:/usr/share/elasticsearch/data --name es3 elasticsearch:8.2.3

如果是linux系统中直接使用docker,要在防火墙中打开相应的端口号。

安装中文分词插件

以第一个容器为例,先执行命令进入容器内,然后执行之前文章中(https://www.jianshu.com/p/2ab284351eda)
有介绍的安装命令即可:

docker exec -it es1 /bin/sh
cd bin
 ./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.2.3/elasticsearch-analysis-ik-8.2.3.zip

每个容器都执行完成后,可以在Docker Desktop界面中直接点按钮重启容器。


五、运行kibana

在windows目录下建立一个kibana.yml文件,内容如下:

server.host: 0.0.0.0
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://192.168.50.26:9200" ]
i18n.locale: "zh-CN"

开始菜单点运行,输入cmd并回车,进入Windows的控制台,然后执行在下面的命令启动kibana容器:

 docker run -e TZ=Asia/Shanghai  -e xpack.security.enabled=false -d -p 5601:5601  -v  D:/ProgramData/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml --name kibana kibana:8.2.3

在浏览器中输入kibana的端口,在开发工具中执行GET /_cluster/stats请求,就可以看到有3个节点,状态是绿色的。如下图:


六、发现问题

6.1 Elasticsearch时区环境变量不生效

用docker logs -f es1命令查看elasticsearch的日志时,发现时间还是少了8个小时;同样是用-e TZ=Asia/Shanghai 参数,但kibana的日志时间是正常的。觉得可能是官方发布的镜像有问题,测试8.2.3,8.4.1都有问题,想尽各种办法,都解决不了,准备放弃了。今天(2022年9月15日)试了下elasticsearch7.17.4版本是可以,看来还是不能用最新的版本,而且spring boot 最高也是支持7.17.4版本。

再后来又发现在dockerpodman容器内运行elasticsearch的话,默认外网总是能访问到ElasticSearch的映射端口,firewalld防火墙配置也不起作用。我想到的运行容器时不映射端口,且用固定IP来运行集群,详细参考我的另一篇文章:https://www.jianshu.com/p/23e5e99da716

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容