ElasticSearch速学 - 简单集群、初步配置和使用
2017-04-19 13:25
363 查看
今天我们来实现一台机器启动多个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上获取
相关文章推荐
- Elasticsearch初步使用(安装、Head配置、分词器配置)
- Redis集群 - redis主从配置初步:简单主从切换(哨兵模式)
- Elasticsearch初步使用(安装、Head配置、分词器配置)
- Elasticsearch初步使用(安装、Head配置、分词器配置)
- Eclipse中使用Hadoop集群模式开发配置及简单程序示例(Windows下)
- Elasticsearch初步使用(安装、Head配置、分词器配置)
- Elasticsearch初步使用(安装、Head配置、分词器配置)
- ELK集群的搭建和Elasticsearchd api的简单使用
- Elasticsearch初步使用(安装、Head配置、分词器配置)
- elasticsearch 1.5 + mysql安装配置与简单使用
- ElasticSearch-2.0.0集群安装配置与API使用实践
- Elasticsearch集群配置以及REST API使用
- JBOSS配置以及初步使用
- svn简单的配置及使用
- svn的简单配置和使用
- JBOSS3.0.4配置及使用初步
- [转]使用简单的 5 个步骤设置 Web 服务器集群
- JBOSS3.0.4配置及使用初步
- 配置一个使用plproxy的PostgreSQL数据库集群
- svn简单配置及使用教程!