安装包准备
1. jdk(必须1.8版本以上)
下载地址:https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html
点击选择自己需要的版本:
2. es安装包
下载地址:https://www.elastic.co/guide/en/elasticsearch/reference/7.8/index.html
配置
1.解压jdk安装jdk,配置jdk环境变量,具体教程自行百度
2.解压es,复制两份,分别命名node1、node2、node3
3.在每个es节点目录下配置jvm堆大小,他默认是1G,如果你电脑配置不行,请按需要调整参数大小(非必须)
4.对每个节点的es配置:config下的elasticsearch.yml
注意:这里涉及到的目录(data、logs)需要在es启动之前创建
node1:
cluster.name: my-application
node.name: node-1
network.host: 127.0.0.1
http.port: 9201
transport.port: 9301
path.data: xxx\elasticsearch-7.8.1-node1\data
path.logs: xxx\elasticsearch-7.8.1-node1\logs
discovery.seed_hosts: ["127.0.0.1:9301", "127.0.0.1:9302","127.0.0.1:9303"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
node.master: true
node.data: true
bootstrap.memory_lock: true
http.cors.enabled: true
http.cors.allow-origin: "*"
node2:
cluster.name: my-application
node.name: node-2
network.host: 127.0.0.1
http.port: 9202
transport.port: 9302
path.data: xxx\elasticsearch-7.8.1-node2\data
path.logs: xxx\elasticsearch-7.8.1-node2\logs
discovery.seed_hosts: ["127.0.0.1:9301", "127.0.0.1:9302","127.0.0.1:9303"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
node.master: true
node.data: true
bootstrap.memory_lock: true
http.cors.enabled: true
http.cors.allow-origin: "*"
node3:
cluster.name: my-application
node.name: node-3
network.host: 127.0.0.1
http.port: 9203
transport.port: 9303
path.data: xxx\elasticsearch-7.8.1-node3\data
path.logs: xxx\elasticsearch-7.8.1-node3\logs
discovery.seed_hosts: ["127.0.0.1:9301", "127.0.0.1:9302","127.0.0.1:9303"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
node.master: true
node.data: true
bootstrap.memory_lock: true
http.cors.enabled: true
http.cors.allow-origin: "*"
5.配置讲解
更多详细配置请参考官网:https://www.elastic.co/guide/en/elasticsearch/reference/7.8/settings.html
Cluster:
cluster.name:集群名称,集群唯一,其他节点通过cluster.name发现集群。
Node:
node.name:节点名称,其他节点可通过node.name发现节点,默认是机器名。
Memory:
bootstrap.memory_lock: true:禁用swap,生产环境必须设置为true。
Network:
1. network.host:当前节点绑定的Ip地址,通常为当前服务器的ip地址。
2. http.port:当前节点的服务端口号[9200,9300)
3. transport.port:当前节点的通讯端口号[9300,9400)
Discovery:
1. discovery.seed_hosts:集群中master的候选节点地址数组,可以配置ip+端口或者节点名称,
比如:discovery.seed_hosts: ["172.16.10.184:9300", "172.16.10.185:9300"]
2. cluster.initial_master_nodes:集群初始master节点。
如:cluster.initial_master_nodes: ["node-4"],集群启动首先会选举node-4为master节点
跨域:
http.cors.enabled: true
http.cors.allow-origin: "*"
角色:
node.master: true 当前节点是master的候选节点
node.data: false 当前节点不是数据节点
单节点发现:开发模式,会绕过引导检查,生产环境能设置单节点发现。
discovery.type=single-node
Paths:切忌使用默认位置,当ES升级时会造成数据丢失。当多个节点共享同一台服务器时,不能使用相同的路径。
path.data:数据储存路径,多个位置用逗号隔开
path.logs:日志储存路径
docker配置
请参考官网
https://www.elastic.co/guide/en/elastic-stack-get-started/7.8/get-started-docker.html
启动集群查看
1.使用elasticsearch-head,按照官方教程进行安装(需要nodejs环境)
https://github.com/mobz/elasticsearch-head
2.如果能翻墙,谷歌浏览器可以下载插件,地址:https://chrome.google.com/webstore/detail/elasticsearch-head/ffmkiejjmecolpfloofpjologoblkegm
安装中可能遇到的问题
这里一般是针对linux环境下:
问题1:error='Cannot allocate memory’
原因:ES 5.x+堆内存大小默认配置为2G ES 7.x+默认4G
解决:-e “ES_JAVA_OPTS=-Xms512m -Xmx512m” (docker环境)、修改jvm.options(非docker)
问题2:WARNING: IPv4 forwarding is disabled. Networking will not work.
解决:
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
restart network && systemctl restart docker
sysctl net.ipv4.ip_forward
问题3: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
解释: 5.0以后,ES使用mmapfs作为默认的文件系统存储类型。可以通过配置index.store.type来设置ES默认的文件系统存储类型。
Niofs(非阻塞文件系统) mmapfs(内存映射文件系统)
配置:index.store.type: niofs
解决:
vi /etc/sysctl.conf
vm.max_map_count=262144
验证:
grep vm.max_map_count /etc/sysctl.conf
问题4:max number of threads [1024] for user [elasticsearch] is too low, increase to at least [2048]
解决:
vi /etc/security/limits.d/90-nproc.conf
修改如下内容(注意星号):
* soft nproc 1024 => * soft nproc 4096
问题5:memory locking requested for elasticsearch process but memory is not locked
解决:https://blog.csdn.net/cbuy888/article/details/103166008
vi /etc/security/limits.conf
,最后添加以下内容。
* soft nofile 65536
* hard nofile 65536
* soft nproc 32000
* hard nproc 32000
* hard memlock unlimited
* soft memlock unlimitedvi /etc/systemd/system.conf
,分别修改以下内容。
DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity
注意 修改操作系统配置需要重启系统才能生效,如果宿主机内存过小,可能导致容器无法启动。开发模式内存建议4G以上,生产建议32G以上.