博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ElasticSearch 单机多节点部署(伪集群)
阅读量:4092 次
发布时间:2019-05-25

本文共 4952 字,大约阅读时间需要 16 分钟。

引言:

最近在做一个搜索引擎相关的功能接口,在自己对技术的追求与热爱以及了解下,决定利用elasticSearch去实现该接口搜索功能,由于资源有限,又想学集群,就直接通过端口号不同来做个伪集群了。

ElasticSearch 简介

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便

安装部署

步骤一:下载安装
打开网站 选择Not the version you're looking for? View past releases.然后进入过去版本页面选择自己需要的搜索引擎版本并下载
步骤二:安装
下载的安装包放到E盘新建的elasticsearch目录下,分别解压三份文件,并将文件名称分别修改为elasticsearch-5.6.1-node-1,elasticsearch-5.6.1-node-2,elasticsearch-5.6.1-node-3
es下载解压后,配置文件主要在config目录下,包含的文件:elasticsearch.yml,jvm.options,log4j2.properties。这三个文件分别对应ES配置,JVM配置,ES日志配置。我们这里只讨论elasticsearch.yml的配置,其他的暂时不论。
步骤三:单机多节点(伪集群)配置
在elasticsearch-5.6.1-node-1,elasticsearch-5.6.1-node-2,elasticsearch-5.6.1-node-3这三个目录的config下分别对elasticsearch.yml文件做配置,这里我们把elasticsearch-5.6.1-node-1当做主节点elasticsearch-5.6.1-node-2,elasticsearch-5.6.1-node-3当做从节点
master(elasticsearch-5.6.1-node-1) 的 elasticsearch.yml:
#指定集群的名称
cluster.name: elasticsearch
#节点名称
node.name: node-1
#是不是主节点
node.master: true
node.attr.rack: r1
#最大集群节点数
node.max_local_storage_nodes: 3
#网关地址
network.host: 127.0.0.1
#端口
http.port: 9200
#内部节点之间沟通端口
transport.tcp.port: 9300
# 开启安全防护(启用跨域访问)
http.cors.enabled: true
http.cors.allow-origin: "*"
#时间放长,防止脑裂
discovery.zen.ping_timeout: 120s
client.transport.ping_timeout: 60s
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
#配置有机会参与选举为master的节点
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9301","127.0.0.1:9302"]
#elasticSearch服务器的数据目录和日志目录,可以自行新建后配置路径使elasticSearch服务启动后将运行数据和日志生成到指定目录下
path.data: D:\elasticsearch\node-1\data
path.logs: D:\elasticsearch\node-1\logs

slave1(elasticsearch-5.6.1-node-2) 的 elasticsearch.yml:

#指定集群的名称
cluster.name: elasticsearch
#节点名称
node.name: node-2
#是不是主节点
node.master: false
node.attr.rack: r1
#最大集群节点数
node.max_local_storage_nodes: 3
#网关地址
network.host: 127.0.0.1
#端口
http.port: 9201
#内部节点之间沟通端口
transport.tcp.port: 9301
# 开启安全防护(启用跨域访问)
http.cors.enabled: true
http.cors.allow-origin: "*"
#时间放长,防止脑裂
discovery.zen.ping_timeout: 120s
client.transport.ping_timeout: 60s
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
#配置有机会参与选举为master的节点
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9301","127.0.0.1:9302"]
#elasticSearch服务器的数据目录和日志目录,可以自行新建后配置路径使elasticSearch服务启动后将运行数据和日志生成到指定目录下
path.data: D:\elasticsearch\node-2\data
path.logs: D:\elasticsearch\node-2\logs

slave2(elasticsearch-5.6.1-node-3) 的 elasticsearch.yml:

#指定集群的名称
cluster.name: elasticsearch
#节点名称
node.name: node-3
#是不是主节点
node.master: false
node.attr.rack: r1
#最大集群节点数
node.max_local_storage_nodes: 3
#网关地址
network.host: 127.0.0.1
#端口
http.port: 9202
#内部节点之间沟通端口
transport.tcp.port: 9302
# 开启安全防护(启用跨域访问)
http.cors.enabled: true
http.cors.allow-origin: "*"
#时间放长,防止脑裂
discovery.zen.ping_timeout: 120s
client.transport.ping_timeout: 60s
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
#配置有机会参与选举为master的节点
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9301","127.0.0.1:9302"]
#elasticSearch服务器的数据目录和日志目录,可以自行新建后配置路径使elasticSearch服务启动后将运行数据和日志生成到指定目录下
path.data: D:\elasticsearch\node-3\data
path.logs: D:\elasticsearch\node-3\logs

 

启动Elasticsearch:bin/elasticsearch.bat

所有配置文件都配置好之后我们挨个启动一下服务,之后使用Head连接,便可轻松对搜索引擎服务器进行管理以及操作

补充:Head插件安装

下载elasticsearch-head的zip包,github网址如下:
检查node.js,这个版本要求node要9.0.0以上。很坑,之前更新了node没更npm,装了半天没反应。详细请自行百度。
安装grunt
grunt是一个很方便的构建工具,可以进行打包压缩、测试、执行等等的工作,5.0里的head插件就是通过grunt启动的。因此需要安装grunt:
注意:路径切到D:/node-v9.2.1-win-x64下。

npm install grunt

npm install -g grunt-cli 

npm install grunt-contrib-clean

npm install grunt-contrib-concat

npm install grunt-contrib-watch

npm install grunt-contrib-connect

npm install grunt-contrib-copy

npm install grunt-contrib-jasmine

-g代表全局安装。安装路径为C:/Users/yourname/AppData/Roaming/npm,并且自动加入PATH变量。安装完成后检查一下:

修改head源码 
由于head的代码还是2.6版本的,直接执行有很多限制,比如无法跨机器访问。因此需要用户修改两个地方:

目录:head/Gruntfile.js:

复制代码

connect: { 

server: { 
options: { 
port: 9100, 
hostname: ‘*’, 
base: ‘.’, 
keepalive: true 
} }

复制代码 

增加hostname属性,设置为*

修改连接地址: 

目录:head/_site/app.js

修改head的连接【我的就是本地环境因此不需要修改】:

this.base_uri = this.config.base_uri || this.prefs.get(“app-base_uri”) 

|| “http://localhost:9200“;

把localhost修改成你es的服务器地址,如:

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://111.111.111.111:9200";

运行head 
修改elasticsearch的参数 
修改一下es使用的参数。编辑config/elasticsearch.yml:

复制代码

#换个集群的名字,免得跟别人的集群混在一起 

#cluster.name: es-5.0-test

/ # 换个节点名字 

/node.name: node-101

# 修改一下ES的监听地址,这样别的机器也可以访问 

network.host: 0.0.0.0

# 默认的就好 

#http.port: 9200

# 增加新的参数,这样head插件可以访问es 

http.cors.enabled: true 
http.cors.allow-origin: “*”

复制代码 

注意,设置参数的时候:后面要有空格!

开启elasticsearch-5.5.1:

D:/elasticsearch-5.5.1/bin/elasticsearch.bat

然后在head源码目录中,执行npm install 下载的包: 

npm install 
初次运行安装可能会报警告或错误。可以重新运行一次npm install。

最后,在head源代码目录下启动nodejs: 

grunt server

访问:target:9100 

这个时候,访问http://localhost:9100就可以访问head插件了.

参考文档:

 

转载地址:http://wdjii.baihongyu.com/

你可能感兴趣的文章
一场地狱级的 MySQL 索引面试!
查看>>
太赞了,微软正式推出 Python 零基础教程!
查看>>
骚操作:Uber 开源 "食人鱼" 工具,专吃落后代码!
查看>>
超酷炫!教你如何用 Python 实现动态可视化交互大屏图...
查看>>
数据惊人!揭秘网络黑色产业链到底有多赚钱...
查看>>
推荐一位 Python 大佬,全网 26 万粉丝,原创 300 多篇干货!
查看>>
百度重磅开源!这款高效率 AI 开发者工具,我爱了...
查看>>
WTF?GitHub 疑似遭受大范围中间人攻击?!
查看>>
天秀!只用 280 字,把一条推特长度的代码玩出花...
查看>>
天秀!GitHub 硬核项目:动漫生成器让照片秒变手绘日漫风!!!
查看>>
面试了 15 位来自 985/211 高校的 2020 届研究生,我熬夜赶出了这篇文章
查看>>
连苹果都在用的开源库:core-js 作者被判入狱 18 个月!
查看>>
没用过这些 IDEA 插件?怪不得你写代码头疼...
查看>>
这款超级搜索神器,我爱了!
查看>>
太赞了,RTC 2020 编程挑战赛终于正式开启!
查看>>
不用一行代码,就写了个爬虫!这款谷歌插件已经打包好了!
查看>>
Chrome,你够了!
查看>>
嫌官方文档太烂?TensorFlow 开源工具书,助你快速上手开发!
查看>>
Java 依然很牛逼
查看>>
从罗永浩抖音带货一晚成交 1.1 个亿,我看到了未来应届生这几个新求职机遇......
查看>>