搭建ElasticSearch集群
前置要求
在搭建ElasticSearch集群前你最好已经是有三台虚拟机了,并且配置过其他集群。至少需要有 分发脚本。
下载ElasticSearch
es下载地址 外国网站,可以用科学上网下载。
也可以从镜像网站下载:
当然,这里主要是配置ElasticSearch。logstash的作用是收集数据,kibanna是展示数据。
我选择 7.8.0 版本。之后点击Download。会跳转到如下页面。如果是x86架构(绝大多数Windows电脑)则点击 Linux x86_64。如果是Arm架构(Mac M系列芯片和少数Windows电脑)则选择 Linux AARCH64。
更新
Mac M系列应该选择7.13.0及以上。因为Kibana在7.13.0一下没有linux_arm版的。需要版本一致。
注意,更新一定要把原本的文件完全删除。
下载好后传到Linux虚拟机中(随便一台即可)。
如果是Windows电脑建议使用 xftp
传输(xshell
也会自带这个,如果有xshell
就直接用xshell
传输)。
Mac电脑用FileZilla
传输。
安装ElasticSearch
解压压缩文件:
1 | sudo tar -xf elasticsearch-7.8.0-linux-aarch64.tar -C /usr/local |
删除原目录(我这里是先将压缩包文件放到你叫elasticsearch
的目录下,现在解压完之后真正的内容在/usr/local
下了,所以这里删除包含压缩包的文件夹):
1 | sudo rm -rf elasticsearch |
给解压后的文件改名(其实不改也可以,方便看到版本,也方便使用多版本,看个人习惯):
1 | sudo mv elasticsearch-7.8.0/ elasticsearch |
修改拥有权限:
1 | sudo chown -R hadoop103 elasticsearch/ |
配置ElasticSearch
更新:
注意 ElasticSearch 对 jdk 有要求,需要先下载对应版本的jdk。
我这个版本的ElasticSearch是7.13.0。jdk理论上安装jdk11 - jdk17都可。jdk18和jdk19都不行。
安装jdk11:
1 sudo apt install openjdk-11-jdk之后配置jdk环境变量:
1 vim ~/.bashrc写入:
1 export ES_JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-arm64如果是Windows或者x86架构的具体具体:
ls /usr/lib/jvm
查看一下,大概率是写入:
export ES_JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
注意:对每个节点都要执行相同操作
修改 /config下的 elasticsearch.yml
1 | cd /usr/local/elasticsearch/config |
1 | vim elasticsearch.yml |
进入之后主要是解开注释:
在 Cluster 下,将
cluster.name: my-application
的注释解开,可以给集群修改一个名字。我修改后:
cluster.name: my-elasticsearch-cluster
在 Node 下,将
node.name: node-1
的注释解开,也可以改名,但是我没改。在 Network 下,将
network.host: 192.168.70.103
的注释解开,这后面是虚拟机的IP,我这里已经是修改后的再将端口的注释打开(
http.port: 9200
)这个的值最好不要修改。在 Discovery 下,将
cluster.initial_master_nodes: ["node-1", "node-2"]
的注释解开
或者(这种是不想自己找,或者怕出错的,就直接在后面添加):
1 | cluster.name: my-elasticsearch-cluster |
修改 /config下的 jvm.options
这一步主要是修改运行时的内存分配。将原来的1G ~ 1G
修改为:2G ~ 2G
。如果虚拟机内存比较小可以不修改。
将原本的:
1 | -Xms1g |
改成:
1 | -Xms2g |
如图:
再将下面的8-13:-XX:+UseConcMarkSweepGC
改为:8-13:-XX:+UseG1GC
保存退出。
修改/etc/security/limits.conf
这个是配置系统的配置文件。
1 | sudo vim /etc/security/limits.conf |
在最末尾添加:
1 | hadoop103 soft nofile 65536 |
修改/etc/security/limits.d/20-nproc.conf
这个也是系统的配置文件。
1 | sudo vim /etc/security/limits.d/20-nproc.conf |
在最末尾添加:
1 | hadoop103 soft nofile 65536 |
修改/etc/sysctl.conf
1 | sudo vim /etc/sysctl.conf |
在最后添加内容:
1 | vm.max_map_count=262144 |
重新加载(如果无法重新加载就:su root
先切换为管理员身份,因为用的系统配置,比较底层,所以需要管理员身份):
1 | sysctl -p |
测试单机配置
在 /usr/local/elasticsearch/bin
下输入:
1 | elasticsearch |
启动。
访问:http://192.168.70.103:9200/
如果即为访问效果(在浏览器中现实类似JSON串的东西,有集群名字,节点名,elasticsearch的版本的信息):
之后按 Ctrl + C 退出。
但是这样启动就不能输入命令了,要输入命令就要退出,退出就关了。想要后台启动要加 -d
选项。
1 | elasticsearch -d |
查看是否启动,可以去访问网站,也可以访问线程:
1 | ps aux|grep elasticsearch |
也可以直接jps
查看进程.
关闭就是:
1 | kill -9 线程号 |
例如,jsp查看进程号:
进程号是:20374。所以:kill -9 20374
集群配置
重新修改ES的配置文件:
1 | vim /usr/local/elasticsearch/config/elasticsearch.yml |
修改内容为:
如果原本是注释,打开注释修改即可。
也可以直接在末尾添加这部分内容(把之前打开的注释重新注释上)。
1 | cluster.name: my-elasticsearch-cluster #集群名称 |
修改后如图:
分发文件
1 | xsync /usr/local/elasticsearch/ |
分发完之后,去查看,如果有data目录则进入data中,删除其中的nodes。三台机器都要删除。
如果没有就不用删除,如果有没太机器执行命令:
1 | cd /usr/local/elasticsearch/data/ |
之后修改每个节点都配置文件(其他内容不用修改):
1 | network.host: hadoop103 #ip地址,每个节点的地址不能重复 |
分发其他几个系统配置文件(前两个文件都要修改,所以不如直接去写一遍,不用分发了):
1 | xsync /etc/security/limits.conf |
分发过去记得修改部分内容:
然后重新加载:
1 | sysctl -p |
启动集群
每台集群分别输入:
1 | bin/elasticsearch |
查看集群的节点:http://hadoop103:9200/_cat/nodes
查看集群的健康状态:http://hadoop103:9200/_cat/health?v
查看集群的索引数:http://hadoop103:9200/_cat/indices?v
查看集群所在磁盘的分配状况:http://hadoop103:9200/_cat/allocation?v
查看集群的其它信息http://hadoop103:9200/_cat/