搭建ElasticSearch集群测试环境

搭建ElasticSearch集群环境

安装3个节点的ElasticSearch

这里就不在不同的机器上测试了,毕竟原理方式都是一样,我们先在原安装目录下建立 escluster 文件夹,然后将安装好的 elasticsearch 分别拷贝到 escluster/node1escluster/node2escluster/node3,以用作三个集群中不同的节点。

[es6j@sher6j-03 ~]$ mkdir escluster
[es6j@sher6j-03 ~]$ cp -r elasticsearch-6.8.0/ escluster/node1/
[es6j@sher6j-03 ~]$ cp -r elasticsearch-6.8.0/ escluster/node2/
[es6j@sher6j-03 ~]$ cp -r elasticsearch-6.8.0/ escluster/node3/

在这里插入图片描述

由于都是新的节点,然后我们将复制的原 es 中的数据清空:

[es6j@sher6j-03 node1]$ rm -rf data
[es6j@sher6j-03 node2]$ rm -rf data
[es6j@sher6j-03 node3]$ rm -rf data

分配Java虚拟机堆内存

由于 es 要运行在Java虚拟机上,而此时是在一台机器上模拟的集群搭建,我给Linux主机分配的内存为2G,所以为了不让三个 es 节点同时运行导致程序崩溃,将每个节点的虚拟机内存调节至 256M,编辑每个节点的 config 目录下的 jvm.options 配置Java虚拟机参数,添加 -Xms256m -Xmx256m 配置表示Java虚拟机堆分配的最小内存为 256M,最大内存为 256M,即分配固定内存为 256M

在这里插入图片描述

[es6j@sher6j-03 node1]$ vim config/jvm.options
[es6j@sher6j-03 node2]$ vim config/jvm.options
[es6j@sher6j-03 node3]$ vim config/jvm.options

在这里插入图片描述

修改配置文件

分别修改其 config 目录下的 elasticsearch.yml 文件进行不同节点的配置:

[es6j@sher6j-03 node1]$ vim config/elasticsearch.yml
[es6j@sher6j-03 node2]$ vim config/elasticsearch.yml
[es6j@sher6j-03 node3]$ vim config/elasticsearch.yml

分别进行如下配置:

  • node1:

    cluster.name: sher6j-ess
    node.name: es-01
    network.host: 0.0.0.0
    http.port: 9201
    discovery.zen.ping.unicast.hosts: ["192.168.56.103:9302", "192.168.56.103:9303"]
    gateway.recover_after_nodes: 3
    transport.tcp.port: 9301
    
  • node2:

    cluster.name: sher6j-ess
    node.name: es-02
    network.host: 0.0.0.0
    http.port: 9202
    discovery.zen.ping.unicast.hosts: ["192.168.56.103:9301", "192.168.56.103:9303"]
    gateway.recover_after_nodes: 3
    transport.tcp.port: 9302
    
  • node3:

    cluster.name: sher6j-ess
    node.name: es-03
    network.host: 0.0.0.0
    http.port: 9203
    discovery.zen.ping.unicast.hosts: ["192.168.56.103:9301", "192.168.56.103:9302"]
    gateway.recover_after_nodes: 3
    transport.tcp.port: 9303
    

其配置文件的含义如下:

配置项含义
cluster.name集群的名称,作为一个集群名称必须一致
node.name节点的名称,作为一个集群中的节点其名称不能一致
network.host: 0.0.0.0允许监听的地址(0.0.0.0表示开启远程权限)
http.portes 服务的监听端口
discovery.zen.ping.unicast.hosts集群中其他的节点,注意需要填写的端口是TCP端口!!!
gateway.recover_after_nodes集群可做主节点的最小节点数
transport.tcp.port用于TCP连接的TCP端口

注意不同节点间的心跳链接是通过 TCP端口,故 discovery.zen.ping.unicast.hosts一定要写 TCP端口,如果写成了 HTTP端口,则节点间无法互相发现

在这里插入图片描述

然后分别将节点启动即可:

[es6j@sher6j-03 node1]$ bin/elasticsearch
[es6j@sher6j-03 node2]$ bin/elasticsearch
[es6j@sher6j-03 node3]$ bin/elasticsearch

可以在节点1的日志中看到节点2和3分别加入了集群:

在这里插入图片描述

然后我们可以利用 _cat API访问任意节点查看集群的状态,输入任意节点网址即可 http://192.168.56.103:9201/_cat/health?v (v参数代表显示表头),可以看到集群的状态是健壮的 green

在这里插入图片描述

安装 elasticsearch-head 插件,可视化集群状态

默认的 _cat API只提供了查看集群的状态,而对于分片及其副本分片如何分布在不同集群中并无法知道细节,所以就有大佬开发了一个插件用于可视化集群状态,虽然曾经是插件,也就是说曾经是可以将 elasticsearch-head 直接安装到 es 中的 plugins 目录下的,但是在elasticsearch-head的官方文档中提到

for Elasticsearch 5.x, 6.x, and 7.x: site plugins are not supported. Run as a standalone server

也就是说在 ElasticSearch 的5版本以上就不支持该插件了,但还 elasticsearch-head 可以作为单独的服务运行,其运行的默认HTTP端口为 9100

NodeJS支持

该插件的使用需要有 NodeJS 的支持,所以在我们的及其上先以 root 用户安装 NodeJS,将安装包上传至 /usr/local/nodejs 目录:

[root@sher6j-03 local]# mkdir nodejs

在这里插入图片描述

注意 nodejs 的压缩包为 tar.xz 格式,所以需用如下命令解压:

[root@sher6j-03 nodejs]# tar -xJvf node-v12.16.3-linux-x64.tar.xz -C ./

然后编辑系统变量:

[root@sher6j-03 nodejs]# vim  ~/.bash_profile

追加如下环境变量:

在这里插入图片描述

然后使环境变量生效:

[root@sher6j-03 nodejs]# source  ~/.bash_profile

输入 node -v 显示版本即可:

在这里插入图片描述

安装 es-head

elasticsearch-head 的压缩包放入 /usr/local/eshead 中:

在这里插入图片描述

然后解压:

[root@sher6j-03 eshead]# unzip elasticsearch-head-master.zip

然后进入其目录并安装所需依赖,然后启动:

# 设置淘宝镜像加速国内下载
[root@sher6j-03 elasticsearch-head-master]# npm config set registry https://registry.npm.taobao.org
[root@sher6j-03 elasticsearch-head-master]# npm install
[root@sher6j-03 elasticsearch-head-master]# npm run start

然后我们访问 http://192.168.56.103:9100/ 即可:

在这里插入图片描述

但是我们却怎么都连接不上!

开启 elasticsearch 的跨域访问

之所以会有上面的问题,是因为 es-head 并不是 es 的官方插件,也就是说可以理解为两个公司的产品,这就存在我们熟知的跨域请求,所以我们要开启 elasticsearch 的跨域访问,编辑其 elasticsearch.yml 文件,在其中加入如下两行配置:

http.cors.enabled: true
http.cors.allow-origin: "*"

然后重启 es 服务后,就可以用 es-head 连接了~:

在这里插入图片描述

然后我们就可以通过该插件可视化观察集群的分片情况了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值