mac下,使用 docker 搭建,单机机器集群

news2024/11/15 13:41:31

背景:
在 Mac本下,通过 docker 完成一个 es 集群(3台-或许可多台)搭建。(后续如果有真实的机器,只需要又该对应的 ip 地址即可,需要关注的是,机器间是可以互相 ping通的,并且 iptable是放开的端口)
详细步骤:
首先创建一个新的 docker 网络
docker network create -d bridge estestnet
查看创建当前的网络是否创建成功,可以看到下图是创建成功的,
docker network list
在这里插入图片描述

设置三个 es.yml, 通过文件资源共享,es 执行的时候会自动调用。
Node1 节点 es1.yml
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0

切记 docker 容器中不能通过127.0.0.1 进行通信,需要改成自己电脑本机的 ip

本机自己的 ip 下方的 discovery.zen.ping.unicast.hosts保持一致

network.publish_host: 172.25.168.63
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: [“172.25.168.63:9300”,“172.25.168.63:9301”,“172.25.168.63:9302”]
discovery.zen.minimum_master_nodes: 2

初始化执行时,默认执行的节点

cluster.initial_master_nodes: es-node1
Node2 节点 es2.yml
cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0

本机自己的 ip 下方的 discovery.zen.ping.unicast.hosts保持一致

network.publish_host: 172.25.168.63
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: “*”
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: [“172.25.168.63:9300”,“172.25.168.63:9301”,“172.25.168.63:9302”]
discovery.zen.minimum_master_nodes: 2
cluster.initial_master_nodes: es-node1
Node3 节点 es3.yml
cluster.name: elasticsearch-cluster
node.name: es-node3
network.bind_host: 0.0.0.0

本机自己的 ip 下方的 discovery.zen.ping.unicast.hosts保持一致

network.publish_host: 172.25.168.63
http.port: 9202
transport.tcp.port: 9302
http.cors.enabled: true
http.cors.allow-origin: “*”
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: [“172.25.168.63:9300”, “172.25.168.63:9301”, “172.25.168.63:9302”]
discovery.zen.minimum_master_nodes: 2
cluster.initial_master_nodes: es-node1
docker 命令执行

  1. docker run -e ES_JAVA_OPTS=“-Xms340m -Xmx340m” --network estestnet -d -p 9200:9200 -p 9300:9300 -v /Users/v_liuxiaojian/Desktop/project/esCluster/es1/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /Users/v_liuxiaojian/Desktop/project/esCluster/es1/data1:/usr/share/elasticsearch/data --name es1 b0e9f9f047e6

  2. docker run -e ES_JAVA_OPTS=“-Xms340m -Xmx340m” --network estestnet -d -p 9201:9201 -p 9301:9301 -v /Users/v_liuxiaojian/Desktop/project/esCluster/es2/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /Users/v_liuxiaojian/Desktop/project/esCluster/es2/data1:/usr/share/elasticsearch/data --name es2 b0e9f9f047e6

  3. docker run -e ES_JAVA_OPTS=“-Xms340m -Xmx340m” --network estestnet -d -p 9202:9202 -p 9302:9302 -v /Users/v_liuxiaojian/Desktop/project/esCluster/es3/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /Users/v_liuxiaojian/Desktop/project/esCluster/es3/data1:/usr/share/elasticsearch/data --name es3 b0e9f9f047e6

Docker 命令重点介绍
-e ES_JAVA_OPTS=“-Xms340m -Xmx340m” 单台容器下的内存
–network estestnet 指定的同一个网络,不然容器内可能无法正常通信导致集群搭建失败
-p 9202:9202 -p 9302:9302 对外提供的多个端口 前面那个9203是对外提供的端口 后面这个9202是容器内的端口
-v /Users/v_liuxiaojian/Desktop/project/esCluster/es3/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml
/Users/v_liuxiaojian/Desktop/project/esCluster/es3/es3.yml 自己本机的 yml配置文件
/usr/share/elasticsearch/config/elasticsearch.yml 对应容器的配置文件
-v /Users/v_liuxiaojian/Desktop/project/esCluster/es3/data1:/usr/share/elasticsearch/data
/Users/v_liuxiaojian/Desktop/project/esCluster/es3/data1 存储的数据卷文件
/usr/share/elasticsearch/data 容器内保存的文件
–name es3 当前容器的名字
b0e9f9f047e6 镜像文件的别名 docker images
依次执行完毕后,docker restart es1 es2 es3 重启三台 es 集群文件, 重启之后别着急访问,es 相对来说还是比较大的,所以给他一点时间5分钟左右。
访问http://127.0.0.1:9200/_cat/nodes?v 如下图表名集群搭建成功

访问单台机器:http://127.0.0.1:9200/

Todo:如果出现问题了,可以通过 docker logs -f 容器名称查看日志 在我这里是 docker logs -f es2
背景:
在 Mac本下,通过 docker 完成一个 es 集群(3台-或许可多台)搭建。(后续如果有真实的机器,只需要又该对应的 ip 地址即可,需要关注的是,机器间是可以互相 ping通的,并且 iptable是放开的端口)
详细步骤:
首先创建一个新的 docker 网络
docker network create -d bridge estestnet
查看创建当前的网络是否创建成功,可以看到下图是创建成功的,
docker network list

设置三个 es.yml, 通过文件资源共享,es 执行的时候会自动调用。
Node1 节点 es1.yml
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0

切记 docker 容器中不能通过127.0.0.1 进行通信,需要改成自己电脑本机的 ip

本机自己的 ip 下方的 discovery.zen.ping.unicast.hosts保持一致

network.publish_host: 172.25.168.63
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: [“172.25.168.63:9300”,“172.25.168.63:9301”,“172.25.168.63:9302”]
discovery.zen.minimum_master_nodes: 2

初始化执行时,默认执行的节点

cluster.initial_master_nodes: es-node1
Node2 节点 es2.yml
cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0

本机自己的 ip 下方的 discovery.zen.ping.unicast.hosts保持一致

network.publish_host: 172.25.168.63
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: “*”
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: [“172.25.168.63:9300”,“172.25.168.63:9301”,“172.25.168.63:9302”]
discovery.zen.minimum_master_nodes: 2
cluster.initial_master_nodes: es-node1
Node3 节点 es3.yml
cluster.name: elasticsearch-cluster
node.name: es-node3
network.bind_host: 0.0.0.0

本机自己的 ip 下方的 discovery.zen.ping.unicast.hosts保持一致

network.publish_host: 172.25.168.63
http.port: 9202
transport.tcp.port: 9302
http.cors.enabled: true
http.cors.allow-origin: “*”
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: [“172.25.168.63:9300”, “172.25.168.63:9301”, “172.25.168.63:9302”]
discovery.zen.minimum_master_nodes: 2
cluster.initial_master_nodes: es-node1
docker 命令执行

  1. docker run -e ES_JAVA_OPTS=“-Xms340m -Xmx340m” --network estestnet -d -p 9200:9200 -p 9300:9300 -v /Users/v_liuxiaojian/Desktop/project/esCluster/es1/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /Users/v_liuxiaojian/Desktop/project/esCluster/es1/data1:/usr/share/elasticsearch/data --name es1 b0e9f9f047e6

  2. docker run -e ES_JAVA_OPTS=“-Xms340m -Xmx340m” --network estestnet -d -p 9201:9201 -p 9301:9301 -v /Users/v_liuxiaojian/Desktop/project/esCluster/es2/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /Users/v_liuxiaojian/Desktop/project/esCluster/es2/data1:/usr/share/elasticsearch/data --name es2 b0e9f9f047e6

  3. docker run -e ES_JAVA_OPTS=“-Xms340m -Xmx340m” --network estestnet -d -p 9202:9202 -p 9302:9302 -v /Users/v_liuxiaojian/Desktop/project/esCluster/es3/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /Users/v_liuxiaojian/Desktop/project/esCluster/es3/data1:/usr/share/elasticsearch/data --name es3 b0e9f9f047e6

Docker 命令重点介绍
-e ES_JAVA_OPTS=“-Xms340m -Xmx340m” 单台容器下的内存
–network estestnet 指定的同一个网络,不然容器内可能无法正常通信导致集群搭建失败
-p 9202:9202 -p 9302:9302 对外提供的多个端口 前面那个9203是对外提供的端口 后面这个9202是容器内的端口
-v /Users/v_liuxiaojian/Desktop/project/esCluster/es3/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml
/Users/v_liuxiaojian/Desktop/project/esCluster/es3/es3.yml 自己本机的 yml配置文件
/usr/share/elasticsearch/config/elasticsearch.yml 对应容器的配置文件
-v /Users/v_liuxiaojian/Desktop/project/esCluster/es3/data1:/usr/share/elasticsearch/data
/Users/v_liuxiaojian/Desktop/project/esCluster/es3/data1 存储的数据卷文件
/usr/share/elasticsearch/data 容器内保存的文件
–name es3 当前容器的名字
b0e9f9f047e6 镜像文件的别名 docker images
依次执行完毕后,docker restart es1 es2 es3 重启三台 es 集群文件, 重启之后别着急访问,es 相对来说还是比较大的,所以给他一点时间5分钟左右。
访问http://127.0.0.1:9200/_cat/nodes?v 如下图表名集群搭建成功
在这里插入图片描述

访问单台机器:http://127.0.0.1:9200/
在这里插入图片描述

Todo:如果出现问题了,可以通过 docker logs -f 容器名称查看日志 在我这里是 docker logs -f es2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4.3.5、IPv4 地址的应用规划

给定一个 IPv4 地址块,如何将其划分成几个更小的地址块,并将这些地址快分配给互联网中的不同网络, 进而可以给各网络中的主机和路由器接口分配 IPv4 地址。 一般有两种方法: 定长的子网掩码 FLSM (Fixed Length Sub…

线程,进程以及Java中创建线程的多种方式

1. 前言 今天的这篇文章的目的还是为了讲述下什么叫线程,什么是进程。可能之前很多人都是通过背书得来的,今天就从通俗易懂的角度来分析下 2. 适合人群 线程以及进程的初学者 3. 开始 3.1 什么是程序 其实不管是程序/ 进程/ 线程都是基于操作系统而言…

141.环形链表

给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(…

SuperMap iDesktop地质体模型匹配地形——精修地质体模型路线

作者:超图研究院技术支持中心-于丁 地质体模型匹配地形——精修地质体模型路线 相信大家开展地质体业务时,常常会遇到构建的精模地质体与DEM地形数据的交界面,嵌合效果不佳、相互压盖、渲染冲突不稳定(闪面)、掩盖、漂…

前端期末考试试题及参考答案(03)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 transition属性中______规定应用过渡的CSS属性的名称。transition属性中______定义过渡效果花费的时间。transition属性中______属性规定过渡效果的时间曲线。…

GitHub入门指南(上)

前言 我去年入门 GitHub,一开始不知道从哪开始学,在网上查找了很多文章、教程学习。这篇文章就是以我刚学习时的小白视角写的,希望能帮助到想开始学习 GitHub 又不知如何上手的学习者。因为我也是初级水平,文中介绍的知识基于我自…

6.移动端布局-rem布局

1.rem基础 优点:可以通过修改html里边文字的大小来改变页面中其他元素的大小,可以实现整体控制 1.1 rem单位 rem(root em)是一个相对单位,类似于em。 em是相对于自身元素字体大小(若自身没有设置font-size则基础父元素的字体大…

一次SQL调优 聊一聊 SQLSERVER 数据页

一:背景 1.讲故事 最近给一位朋友做 SQL 慢语句 优化,花了些时间调优,遗憾的是 SQLSERVER 非源码公开,玩起来不是那么顺利,不过从这次经历中我觉得明年的一个重大任务就是好好研究一下它,争取在 SQLSERVE…

uniapp实现音频播放抢占系统音频焦点

项目为使用uniapp框架开发的Android/iOS APP应用 实现功能需求 假设手机正在播放音乐,当前APP处于前台收到消息,需播放提示音提示用户。目标为降低后台正在播放音乐的音量,播放提示音,播放完毕后恢复后台音乐音量 需求分析 乍…

拉伯证券|新能源汽车前11月产销翻倍,渗透率升至三分之一

2022年11月,国内新能源轿车渗透率已升至33.8%,创前史新高。 2022年的最终一个交易日早盘,两市高开高走,沪指涨0.61%,深证成指涨0.35%,创业板指涨0.3%。板块上来看,Web3.0、虚拟人、网络游戏概念…

BI技巧丨RankxYoY

群友:PowerBI可以实现两年的排名差异么? 白茶:可以!安排! 本期的问题,来自于群内小伙伴的一个实际应用场景。在实际业务中,这个需求属于常见类型,展示当前排名时,用户关注…

【软件测试】 测试开发?看看一线大厂需求的测试开发技能......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 能在一线大厂工作是…

FPGA知识汇集-FPGA系统时序理论

时序约束条件 下面来具体讨论一下系统时序需要满足的一些基本条件。我们仍然以下图的结构为例,并可以据此画出相应的时序分析示意图。 在上面的时序图中,存在两个时序环,我们称实线的环为建立时间环,而虚线的环我们称之为保持时间…

Java死锁

一.死锁是什么? 死锁指两个或者两个以上的线程在执行过程中,去争夺同样一个共享资源,造成的相互等待的现象,如果没有外部干预,线程会一直阻塞,无法往下执行,这样一直处于相互等待资源的线程叫做…

极米Z6X Pro怎么样?极米Z6X Pro亮度如何?极米Z6X Pro值得入手吗?

投影仪不知怎么选?不妨看看极米Z6X Pro,半山黛青的全新配色下,是仅有5.3cm的轻薄机身,1.4kg的重量,一只手就可以轻松拿取。相比同价位的投影产品,极米Z6X Pro摆放方便又不占地,外观时尚精致&…

Go Map

Go Map map 是一种key-value的键值对存储结构,其中key不能重复,无序。底层是hmap结构,hmap中维护buckets(bmap结构)。结构定义 type hmap struct {count int // 元素个数B uint8 // buckets已扩容的次数,buckets长…

JVM-Java内存区域

1、运行时数据区域 运行时数据区域:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区。 非运行时数据区域:直接内存。 (1)程序计数器 字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制。在多线…

谷歌2022年最受欢迎Chrome浏览器扩展程序:包含Tango,Compose AI等

根据截图排序从左到右依次介绍如下: RoPro:Roblox.com网站体验增加了许多有用且独特的功能; MyBib:自动创建 APA 样式、MLA 格式和哈佛引用样式引文; eJOY English:翻译自Netflix, Youtube, iFlix上的字…

Codeforces Round #841 (Div. 2) and Divide by Zero 2022(A-D)

Codeforces Round #841 (Div. 2) and Divide by Zero 2022(A-D) 题目链接限制AJoey Takes Moneystandard input/output1 s, 256 MBBKill Demodogsstandard input/output1 s, 256 MBCEven Subarraysstandard input/output2.5 s, 256 MBDValiant’s New M…

数字经济指标构建-各省、地级市匹配上市公司数据、城市数字化指数

一、中国城市数字经济指数2017-2022年(数据代码报告) 中国城市数字化指数全面覆盖城市数字化规划、建设、运营的各个方面,能够有效评估城市各个领域的数字化建设水平和运营效果。 全国城市数字经济发展热图 数据来源:中国城市数字…