ElasticSearch速学 - 简单集群、初步配置和使用

这里写图片描述

今天我们来实现一台机器启动多个es实例

正式生产环境中,肯定都是分不同的服务器部署的,我们这里学习演示才是在一台机器上

我这里有个文件夹上elasticsearch-5.3.0,需要复制一份:

cp -R elasticsearch-5.3.0 elasticsearch-5.3.0-v2

这样就有了2份elasticsearch了。

接下来为了防止数据冲突,我们需要把elasticsearch-5.3.0-v2/data/目录下的文件情况(不是删除data目录)。

接下来修改配置文件

主配置文件是elasticsearch.yml

node.name 代表你当前运行节点名称(肯定需要多节点运行)
cluster.name 集群名称,es会自动发现在同一网段下的es

注:我们之后把elasticsearch-5.3.0叫做第一个实例/实例1,把elasticsearch-5.3.0-v2叫做第二个实例/实例2

#修改node.name
实例1修改 node.name: mynode1
实例2修改 node.name: mynode2
#修改实例2的端口:
http.port: 9202
#因为我们是同一台机器部署2个实例,如果是不同机器可以一样

来到第二个实例

transport.tcp.port: 9400
多个节点的时候,机器会有同步的过程,节点和节点之间的交互需要有个tcp的端口,默认是9300
修改或加入
node.master: false(多机器环境不需要)
指定该节点是否有资格被成为node,默认时true,默认集群中的第一台机器为master
(注意一台机器默认只能有一个节点上master,因为我们是虚拟机环境,所以实例2这里设置为false)
discovery.zen.minmum_master_nodes: 1(暂时不加)

#elasticsearch-5.3.0-v2/config/elasticsearch.yml主要配置如下
node.name: mynode2
node.master: false
transport.tcp.port: 9400

继续配置(2台都要的配置)

discovery.zen.ping.unicast.hosts: [“127.0.0.1:9300”,”127.0.0.1:9400”]
es有自动发现机制(分为单播和多播)
多播:节点启动时会发送一个多播的ping请求到网段中,该请求只是用来通知所有能链接到的节点和集群它已经准备好加入到集群中
由于各种网络问题可能会超时,所以我们加入预先设置好的地址(当然也可以修改超时时间,暂时不做设置)
discovery.zen.ping.timeout: 3s (默认时3秒,实际部署时需要增加)

具体操作:

#打开实例2的配置文件
vi elasticsearch-5.3.0-v2/config/elasticsearch.yml
#加入这一行:
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9400"]

#打开实例1的配置文件
vi elasticsearch-5.3.0-v2/config/elasticsearch.yml
#加入这一行:
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9400"]

配置完成,启动2个实例

elasticsearch-5.3.0/bin/elasticsearch
#新开一个窗口
elasticsearch-5.3.0-v2/bin/elasticsearch

到现在我们启动es都是执行的bin目录下的elasticsearch命令,其实这个命令也是有参数的:

elasticsearch -d #这样启动就是在后台运行了

我们实例1启动完成了,再去启动实例2
发现:2个实例不能同时启动,实例2启动,实例1就自动停止了
实例1报如下错误:
Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[blog][4]] …]).
Killed

这个问题,我先查看es的日志文件,没有发现什么。后来各种百度,建议查看/var/log/messages
这里写图片描述
然后我觉得可能是内存不够了,瞬间想到我们是虚拟机环境,可以去配置内存大小:

vi config/jvm.options
#es目录中的配置文件
-Xms512m
-Xmx512m
#我们设置为512m,之前是1g

这里写图片描述
这里写图片描述

http://10.211.55.13:9200 是实例1,是master。
http://10.211.55.13:9202/是实例2.
通过name可以看出,是不同的节点,但是cluster_name是同一个,也是一个集群,cluster_uuid也是相同的。

接下来要看看效果了

看看到底有几个节点在运行了
https://www.elastic.co/guide/en/elasticsearch/reference/5.3/cat-nodes.html
这里写图片描述

查看集群情况
https://www.elastic.co/guide/en/elasticsearch/reference/5.3/cluster-state.html

然后我们看看数据有什么不同(有没有数据同步):

1、我们先给9202这个实例PUT一条数据(创建索引)

如果已存在的数据,就是更新。
这里写图片描述
更新成功。

2、我们从9200这个实例获取

这里写图片描述
我们发现是我们刚才修改的内容。

3、同样在从9202上获取
这里写图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值