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 99999sudo ulimit -n 99999ulimit -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 bashapt-get updateapt-get install vimvim _site/vendor.jsapplication/x-www-form-urlencoded 改为 application/json;charset=UTF-8 exit
docker restart elasticsearch-head
访问
http://127.0.0.1:9100/

精选应用推荐
安全便捷的密码管理工具
安全加密
跨设备同步
一键填充
免费使用
云幻梦密码本 - 安全密码管理
云幻梦密码本是一款专业级密码管理工具,采用银行级加密技术保护您的所有密码和个人信息。支持跨设备同步、一键自动填充、安全密码生成和生物识别登录等功能,让您的数字生活更加安全便捷。
选择平台下载
资源搜索推荐
一站式资源搜索平台
资源搜索
多源聚合
免费使用
无广告
千搜123 | 资源搜索
智能搜索
多类资源
快速响应
安全访问
千搜123是一个强大的资源搜索网站,聚合了多种资源搜索引擎,提供文档、软件、影视、音乐、学习资料等多种资源的快速搜索服务。界面简洁无广告,搜索结果精准,是您寻找各类资源的得力助手。
- 聚合多个优质资源搜索引擎,一站式搜索
- 支持文档、软件、影视、学习资料等多种资源类型
- 界面简洁,无干扰广告,专注搜索体验
- 搜索结果快速准确,节省您的时间
