在学习 ES 前个别都须要装置 ES,尽管 ES 能够开箱即用,但如果要学习分布式个性的时候,须要装置多个节点,这个时候还是有点工作量的。上面提供两个小脚本,一个是在 Ubuntu 中装置 3 节点的 ES 伪集群,一个是在 docker 中装置 3 节点 ES 集群。除了装置 ES 外,脚本还提供了对应版本的 Kibana、Cerebro 0.9.4 的装置。
1、在 Ubuntu 中装置 ES 7.13
这里咱们采取下载 ES 安装包并且解压装置的形式,并没有走 Ubuntu apt 的形式。ES 的装置非常简单,这里先献上装置脚本。
上面介绍比拟重要的配置项:
- discovery.seed_hosts 在开箱即用的情境下(本机环境)无需配置,ES 会主动扫描本机的 9300 到 9305 端口。一旦进行了网络环境配置,这个主动扫描操作就不会执行。discovery.seed_hosts 配置为 master 候选者节点即可。如果须要指定端口的话,其值能够为:[“localhost:9300”, “localhost:9301”]
- cluster.initial_master_nodes 指定新集群 master 候选者列表,其值为节点的名字列表。如果配置了 node.name: my_node_1,所以其值为 [“my_node_1”],而不是 ip 列表!
- network.host 和 http.port 是 ES 提供服务的监听地址和端口,线上肯定不能配置 ip 为 0.0.0.0,这是十分危险的行为!!!
怎么样来了解这个 discovery.seed_hosts 和 cluster.initial_master_nodes 呢?
cluster.initial_master_nodes 是候选者列表,个别咱们线上环境候选者的数量比拟少,毕竟是用来做备用的。而且这个配置只跟选举 master 无关,也就是跟其余类型的节点没有关系。就算你有 100 个数据节点,而后常常减少或者剔除都不须要动这个列表。
discovery.seed_hosts 这个能够了解为是做服务或者节点发现的,其余节点必须晓得他们能力进入集群~ 个别配置为集群的 master 候选者的列表。
然而这些 master 候选者(组织联系人)可能常常变动,那怎么办呢?这个配置项除了反对 ip 外还反对域名 ~ 所以能够用域名来解决这个问题,其余节点的配置上写的是域名,域名解析到对应的 ip,如果机器挂了,新的节点 ip 换了,就把域名解析到新的 ip 即可,这样其余节点的配就不必批改了。所以非 master 候选节点要配 discovery.seed_hosts(组织联系人)
除了批改 ES 服务配置外,还须要配置 JVM 的配置,咱们次要配置服务占用的堆内存的大小。JVM 配置须要以下几点:
- 这两个 jvm 的配置必须配置一样的数值。启动时就调配好内存空间,防止运行时申请分配内存造成零碎抖动。
- Xmx 不要超过机器内存的 50%,留下些内存供 JVM 堆外内存应用
- 并且 Xmx 不要超过 32G。倡议最大配置为 30G。靠近 32G,JVM 会启用压缩对象指针的性能,导致性能降落。具体能够参考:a-heap-of-trouble。
装置胜利后,能够拜访:
ES:localhost:9211
Kibana: localhost:5601
cerebro:localhost:9800
2、在 docker 中装置 ES 7.13
在做所有工作之前,咱们必须装置 docker。如果你曾经装置好了 docker、docker-compose,能够拜访我为你筹备的 docker-compose.yaml 文件。
如果你没有装置 docker,残缺的教程能够参考在 docker 中装置 ES 文档。
下载此文件,将文件保留为 docker-compose.yaml 后,进入这个文件的目录,执行以下指令即可:
docker-compose up
如果你没有下载镜像文件,docker-compose 会主动帮你下载镜像,并且启动容器。
如果 docker-compose 启动失败,说是无权限链接 docker 的话,其报错如下:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:
Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.project%3Ddocker_es%22%3Atrue%7D%7D&limit=0":
dial unix /var/run/docker.sock: connect: permission denied
能够运行以下指令长期批改:
sudo chmod 666 /var/run/docker.sock
其起因是因为你的 docker 用了 root 启动了。
最初能够拜访:
cerebro:ip:9000
Kibana:ip:5601
Elasticsearch: ip:9200,ip:9202,ip:9203
其余学习材料
创立本人的 ES Docker Image
在 docker image 中装置 Elasticsearch 插件
一个开源的 ELK docker-compose 配置
docker 中装置 ES 7.13
docker 中装置 Kibana 7.13