mac本地docker部署ElasticSearch7.x集群

docker容器获取

  • docker pull elasticsearch:7.4.2
  • docker pull mobz/elasticsearch-head:5

Elasticsearch

创建宿主机文件

   mkdir -p /data/docker/elasticsearch/config/node0
   mkdir -p /data/docker/elasticsearch/config/node1
   mkdir -p /data/docker/elasticsearch/config/node2
   mkdir -p /data/docker/elasticsearch/config/node3
   mkdir -p /data/docker/elasticsearch/data/node0
   mkdir -p /data/docker/elasticsearch/data/node1
   mkdir -p /data/docker/elasticsearch/data/node2
   mkdir -p /data/docker/elasticsearch/data/node3
   mkdir -p /data/docker/elasticsearch/logs/node0
   mkdir -p /data/docker/elasticsearch/logs/node1
   mkdir -p /data/docker/elasticsearch/logs/node2
   mkdir -p /data/docker/elasticsearch/logs/node3

   # 重新设置系统级别的默认打开文件最大个数  防止JVM报错
   echo vm.max_map_count=655360 >> /etc/sysctl.conf

   # 在root账户执行这一句 作用是重新载入sysctl系统参数
   sysctl -p

环境配置

Mac

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty   
按回车键   
sysctl -w vm.max_map_count=262144     
 
修改单个进程打开的句柄个数   
sudo launchctl limit maxfiles 99999 99999   
sudo ulimit -n 99999

ulimit -H -l

配置前置

裂脑事件

  Elasticsearch牺牲了一致性,以确保可用性和分区容错。其背后的原因是短期的不良行为比短期的不可用性问题少。换句话说,当群集中的Elasticsearch节点无法复制对数据的更改时,它们将继续为应用程序提供服务。当节点能够复制其数据时,它们将尝试聚合副本并实现最终的一致性。
  Elasticsearch通过选举主节点来解决之前的问题,主节点负责数据库操作,例如创建新索引,在群集节点周围移动分片等等。主节点与其他节点主动协调其操作,确保数据可以由非主节点汇聚。
  在某些情况下,先前的机制可能会失败,从而导致裂脑事件。当Elasticsearch集群分为两个区块时,若每个区块都有一个节点都认为它们是主节点,因为主节点将在数据上独立工作,数据一致性就会丢失。因此,节点将对相同的查询做出不同的响应。这将会是灾难性的事件,因为来自两个主节点的数据无法自动重新加入,并且需要相当多的手动工作来纠正这种情况。

创建配置文件

# 集群名称
  cluster.name: "elasticsearch-cluster"
  # 节点名称
  node.name: node0
  # 是否为主节点
  node.master: true
  # 该节点是否存储数据
  node.data: true
  # 回环地址
  network.host: 0.0.0.0
  # 对外开放的ip
  network.publish_host: 172.18.0.6
  # 对外开放的http端口
  http.port: 9200
  # 集群的ip集合,可指定端口,默认为9300
  #discovery.zen.ping.unicast.hosts: ["172.18.0.6", "172.18.0.7", "172.18.0.8"]
  cluster.initial_master_nodes: ["node0"]
  discovery.seed_hosts: ["172.18.0.6", "172.18.0.7", "172.18.0.8", "172.18.0.9"]
  # 内部节点通信端口
  transport.tcp.port: 9300
  # 是否允许跨域请求
  http.cors.enabled: true
  # 定义允许哪些源请求
  http.cors.allow-origin: "*"
  # 有成为主节点资格的最小节点数(为避免脑裂,设置为超总数一半)
  #discovery.zen.minimum_master_nodes: 2
  # 是否开启安全验证
  xpack.security.enabled: false
  # 锁住内存,确保ES不使用swap
  #bootstrap.memory_lock: true

  # 集群名称
  cluster.name: "elasticsearch-cluster"
  # 节点名称
  node.name: node1
  # 是否为主节点
  node.master: false
  # 该节点是否存储数据
  node.data: true
  # 回环地址
  network.host: 0.0.0.0
  # 对外开放的ip
  network.publish_host: 172.18.0.7
  # 对外开放的http端口
  http.port: 9200
  # 集群的ip集合,可指定端口,默认为9300
  #discovery.zen.ping.unicast.hosts: ["172.18.0.6", "172.18.0.7", "172.18.0.8"]
  cluster.initial_master_nodes: ["node0"]
  discovery.seed_hosts: ["172.18.0.6", "172.18.0.7", "172.18.0.8", "172.18.0.9"]
  # 内部节点通信端口
  transport.tcp.port: 9300
  # 是否允许跨域请求
  http.cors.enabled: true
  # 定义允许哪些源请求
  http.cors.allow-origin: "*"
  # 有成为主节点资格的最小节点数(为避免脑裂,设置为超总数一半)
  #discovery.zen.minimum_master_nodes: 2
  # 是否开启安全验证
  xpack.security.enabled: false
  # 锁住内存,确保ES不使用swap
  #bootstrap.memory_lock: true
  
  # node2, node3同node1, 修改ip以及端口

启动容器

docker run --net mynetwork --ip 172.18.0.6 -d --restart always -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -v /data/docker/elasticsearch/config/node/node0/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/docker/elasticsearch/data/node0:/usr/share/elasticsearch/data -v /data/docker/elasticsearch/logs/node0:/usr/share/elasticsearch/logs --name es-node0 elasticsearch:7.4.2 
docker run --net mynetwork --ip 172.18.0.7 -d --restart always -p 9201:9200 -p 9301:9300 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -v /data/docker/elasticsearch/config/node/node1/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/docker/elasticsearch/data/node1:/usr/share/elasticsearch/data -v /data/docker/elasticsearch/logs/node1:/usr/share/elasticsearch/logs --name es-node1 elasticsearch:7.4.2 
docker run --net mynetwork --ip 172.18.0.8 -d --restart always -p 9203:9200 -p 9303:9300 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -v /data/docker/elasticsearch/config/node/node2/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/docker/elasticsearch/data/node2:/usr/share/elasticsearch/data -v /data/docker/elasticsearch/logs/node2:/usr/share/elasticsearch/logs --name es-node2 elasticsearch:7.4.2
docker run --net mynetwork --ip 172.18.0.9 -d --restart always -p 9204:9200 -p 9304:9300 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -v /data/docker/elasticsearch/config/node/node3/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/docker/elasticsearch/data/node3:/usr/share/elasticsearch/data -v /data/docker/elasticsearch/logs/node3:/usr/share/elasticsearch/logs --name es-node3 elasticsearch:7.4.2

Elasticsearch-head

启动容器

docker run --net mynetwork --ip 172.18.0.10 -d --restart always -p 9100:9100 -d --name elasticsearch-head mobz/elasticsearch-head:5 
docker exec -it elasticsearch-head bash          
apt-get update          
apt-get install vim          
vim _site/vendor.js          
application/x-www-form-urlencoded 改为 application/json;charset=UTF-8          exit
docker restart elasticsearch-head

访问

http://127.0.0.1:9100/
0 0 投票数
文章评分
规则怪谈生成器 - 三步生成完整规则怪谈

⬡ 规则怪谈生成器

三步选择,一键生成完整的规则怪谈场景

欢迎使用 规则怪谈生成器 (GuiZeGT) —— 专为恐怖创作者、跑团主持人和怪谈爱好者设计的在线工具。 零AI成本 · 纯模板拼接 · 无限制生成 · 免费使用

1 选择场景
2 选择氛围
3 选择难度
一键生成
  • 🏚️ 12个经典场景 核心
    从废弃医院到深海孤岛,丰富模板即选即用
  • 👻 8种恐怖风格 氛围
    心理恐怖、克苏鲁、都市传说……塑造独特惊悚感
  • 📜 3档规则数量 难度
    从简洁到复杂,控制怪谈的细节密度与挑战性
  • ⚡ 逐条浮现生成 体验
    规则逐条动态呈现,营造紧张有序的阅读节奏
⚡ 或选择一个场景快速开始
🏥 废弃医院 🚢 幽灵邮轮 🌲 黑森林 🏫 午夜学校
订阅评论
提醒

0 评论
最新
最旧 最多投票
创世工坊 - 专业世界观构建工具

🚀 创世工坊 - 构建你的世界观

欢迎使用 创世工坊 (CreateAUniverse) —— 专为世界构建者、故事创作者和幻想宇宙缔造者设计的在线平台。将您的想象力,变成可分享的完整世界。

49,867 创作者
8,924 世界观
33,496 角色
  • 世界观构建:从地理环境到文化背景,全方位打造独一无二的架空世界。
  • 人物关系网络:可视化梳理复杂的人物关系网,让爱恨情仇一目了然。
  • 地图编辑器:强大的绘图工具,支持多种地图类型,绘制属于你的世界地图。
  • 时间线管理:梳理世界历史脉络,记录每个重要时刻,让时间线清晰有序。
  • 灵感与伏笔管理:随时记录灵感碎片,追踪每个伏笔的铺设与回收,确保逻辑严密。
滚动至顶部