es
Elasticsearch

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/

精品课程


guest

0 评论
内联反馈
查看所有评论