elasticsearch-7.3.2集群搭建
一、简述1、es介绍ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch应用广泛,常用用于大数据、云计算中,它包含如下特性:分布式高可用搜索引擎:每个索引...
一、简述
1、es介绍
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch应用广泛,常用用于大数据、云计算中,它包含如下特性:
- 分布式高可用搜索引擎:每个索引都可以配置分片的数量。每个分片都有一个或多个副本且分片都支持读写
- 多租户:支持多个索引以及索引级配置,如碎片数、索引存储等。
- 提供各种API:包括HTTP Restful API,原生Java API。 Restful风格,容易上手
- 面向文档:不需要预先定义架构,可以通过定义模式来定制索引过程。
- 可靠,异步写入,可长期持久存储。
- 即刻读取,近实时性强:数据更新在Elasticsearch中几乎是完全同步的
- 建在lucene之上:每个分片都是一个全完整的lucene索引,Lucene的所有功能都很容易通过简单的配置/插件看到
- 操作具有一致性:单文档级操作具有原子性、一致性、独立性和持久性。
2、es7.X变化
Elasticsearch 7.0开始 默认自带 JDK,不用再为安装什么版本的 JDK和环境冲突而苦恼了,下载安装即可使用,包大了安装包200MB+,增加的正是JDK的大小。
默认节点名称为主机名 不过仍然可以在elasticsearch.yml中显式配置,实际业务场景中,以主机名区分不同节点比随机起名字更便于甄别,不易混淆。
默认分片数改为number_of_shards值为1,不再是5
Elasticsearch 7.0 没有 Type 了,包括 API 层面的
hits.total返回对象,而非仅结果值
Kibana 支持全局开启“黑暗”模式
查询相关性速度优化,Weak-AND算法在Term Query查询场景有3700%的性能提升
间隔查询(Intervals queries)
引入新的集群协调子系统
升级 Elasticsearch 7,0 ,不再内存溢出
时间戳纳秒级支持,提升数据精度
二、下载
去https://www.elastic.co/cn/downloads/elasticsearch下载,这里下载linux的tar版
三、安装与配置
1、准备机器
ip | host | es |
192.168.1.73 | node03 | 1 |
192.168.1.74 | node04 | 1 |
192.168.1.75 | node05 | 1 |
2、下载安装
(1)建立安装目录
在node03、node04、node05分别执行命令$ mkdir /opt/es,创建es目录,做为es文件的安装目录
(2)把下载的es压缩包上传到node03下的 /opt/es
(3)在node03上解压 $ tar -zxvf elasticsearch-7.3.2-linux-x86_64.tar
(4)在每个节点创建用户es并设置密码
创建用户 $ useradd es 设置密码$ echo "123456" | passwd --stdin es
(5)给es用户赋权限 $ chown -R es:es elasticsearch-7.3.2
(6)分发node04、node05的/opt/es下
$ scp -r elasticsearch-7.3.2 node04:/opt/es
$ scp -r elasticsearch-7.3.2 node05:/opt/es
3、配置elasticsearch.yml
node03的elasticsearch.yml的简单配置如下:
# ---------------------------------- Cluster -----------------------------------
cluster.name: es-cluster #集群名字
# ------------------------------------ Node ------------------------------------
node.name: node05 #节点名
# ---------------------------------- Network -----------------------------------
network.host: 192.168.1.73
http.port: 9200 #默认9200
# --------------------------------- Discovery ----------------------------------
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node03", "node04", "node05"]
# es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.1.73:9300", "192.168.1.74:9300", "192.168.1.75:9300"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
#解决内核版本过低且不升级内核不报错问题
bootstrap.system_call_filter: false
#增加参数,使head插件可以访问es
http.cors.enabled: true #插件运行时候,必须设置为true
http.cors.allow-origin: "*" #允许所有来源外部访问
node04、node05修改如下两项即可
4、可视化插件elasticsearch-head安装
(1)elasticsearch-head安装
下载https://github.com/mobz/elasticsearch-head,这里下载到/opt/es/elasticsearch-7.3.2/路径下
在该路径下解压$ unzip elasticsearch-head-master.zip
为了方便,重命名 $ mv elasticsearch-head-master head
这里需要说明的是es5以上版本安装head插件需要安装node和grunt,grunt是基于Node.js的项目构建工具,可以进行打包压缩、测试、执行等等工作,elasticsearch-head插件就是通过grunt启动的
(2)node安装
去下载$ wget https://npm.taobao.org/mirrors/node/v9.9.0/node-v9.9.0-linux-x64 .tar.gz
解压 $ tar -zxvf node-v9.9.0-linux-x64.tar.gz -C /usr/local/
重命名 $ mv /usr/local/node-v9.9.0-linux-x64 /usr/local/nodejs
配置环境变量$ vim /etc/profile 使生效$ source /etc/profile
NODE_HOME=/usr/local/nodejs
PATH=$PATH:$NODE_HOME/bin
NODE_PATH=$NODE_HOME/lib/node_modules
export NODE_HOME PATH NODE_PATH
(3)grunt安装
- npm安装grunt
$ npm install -g grunt-cli 成功如下
- 依赖安装
进入到插件目录/opt/es/elasticsearch-7.3.2/head下,进行npm依赖安装 $ npm install
可以看到,githup安装由于读取超时而失败,换个方式安装,用户cnpm安装,接下来安装cnpm命令
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm 安装成功,执行$ cnpm install 来安装依赖,从而代替npm install安装失败,成功如下
- 修改grunt配置
依赖完成后,修改head插件目录下grunt启动文件,修改 /opt/es/elasticsearch-7.3.2/head下的 Gruntfile.js 文件,在 options 属性内增加键值:hostname: '0.0.0.0',如下图
进入到插件目录下,编辑 $ vim _site/app.js, 把localhost改为本机实际IP,否则启动插件后看不到ES集群节点
这里要提醒的是,别忘了elasticsearch.yml增加参数,使head插件可以访问es,这里前边已经增加过
http.cors.enabled: true #允许跨域
http.cors.allow-origin: "*" #允许所有域名
四、启动es集群
1、启动集群
这里要注意的启动不要在root用户下操作,一定要在创建的用户下进行,否则启动会报错
分别在node03、node04、node05三个节点中执行命令 $ /opt/es/elasticsearch-7.3.2/bin/elasticsearch 启动集群,确认启动成功后,启动日志没有报错后,在浏器中输入 http://192.168.1.73:9200/,如下图
2、启动head插件
node03上,在插件目录 /opt/es/elasticsearch-7.3.2/head下启动集群,$ grunt server,启动成功如下
在浏器中输入http://192.168.1.73:9100/,如下图
五、常见错误
启动es过程中失败,日志报如下错误:
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
编辑 $ vim /etc/security/limits.conf,调整增加参数
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
[2]: max number of threads [1024] for user [es] is too low, increase to at least [4096]
编辑 $ vim /etc/security/limits.d/90-nproc.conf,调整参数
* soft nproc 4096
执行 $ sysctl -p 生效
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
编辑 $ vim /etc/sysctl.conf,增加参数
vm.max_map_count=262144
[4]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
编辑 $ vim elasticsearch.yml,增加参数
bootstrap.system_call_filter: false
至此 elasticsearch集群搭建成功,其使用将在下边介绍
更多推荐
所有评论(0)