博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot 2.0+elasticseach 5.5.0集群环境搭建示例(附源码)
阅读量:7155 次
发布时间:2019-06-29

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

hot3.png

环境介绍

本人使用操作系统是centOS 7.0版本(当然集群推荐是在linux环境下咯)

服务器 是否可以成为主节点 是否为数据节点
192.168.1.220 true true
192.168.1.221 true true
192.168.1.222 true true

1、安装jdk (推荐1.8)

详细安装步骤就不做介绍了,网上搜索一大堆,推荐Oracle jdk,卸载掉自带的openJdk,给个参考链接

2、Elasticsearch安装

    下载es,,本人使用的是5.5版本,之所以不用最新版本,是spring boot目前还不支持最新版本的es,所以避免出现版本不对应的坑,这种坑非常浪费时间。如果大家关心springboot版本和对于的es的版本对于关系,请去spring官网查询。

21d9251a9765a69a860f271935f3263abf4.jpg

下载编译好的版本,名称elasticsearch-5.5.0.tar.gz

拷贝下载好的文件,上传到服务上,新建文件夹/usr/local/elasticsearch,解压到当前目录。

tar -zxvf elasticsearch-5.5.0.tar.gz   最好重命名下,因为后面如果升级es,可以也放到该目录下。

新建log和data文件夹,注意:放在elasticsearch-5.5.0安装目录的同级,避免升级es版本或是重新安装数据和日志被不小心覆盖。

mkdir /usr/local/elasticsearch/data

mkdir /usr/local/elasticsearch/logs

我的目录如下:

5dcce4ed2a9218fc5e1a1a661a9b7b88093.jpg

新建es用户并授权,因为es不能用root账号启动

  1. #添加用户

  2. useradd es

  3. #赋予文件夹权限

  4. chown -R es:es /usr/local/elasticsearch

修改配置文件

vim /usr/local/elasticsearch/elasticsearch-5.5.0/config/elasticsearch.yml 将配置文件以下内容进行修改:

注意:集群名称三个节点都要相同,discovery.zen.ping.unicast.hosts最好不配置自身节点ip

    bootstrap.memory_lock: true  这个配置慎用,因为我一开始申请的服务没有root权限,系统配置没法修改所以我注释掉了,目前我还没去测试这个配置到底多影响性能,下面的注释是网上拷贝的,大家可根据实际情况调整

#集群的名称cluster.name: eshare-es#节点名称,其余两个节点分别为node-2 和node-3node.name: node-1#指定该节点是否有资格被选举成为master节点,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举masternode.master: true#允许该节点存储数据(默认开启)node.data: true#索引数据的存储路径path.data: /usr/local/elasticsearch/data#日志文件的存储路径path.logs: /usr/local/elasticsearch/logs#设置为true来锁住内存。因为内存交换到磁盘对服务器性能来说是致命的,当jvm开始swapping时es的效率会降低,所以要保证它不swap#bootstrap.memory_lock: true#绑定的ip地址network.host: 0.0.0.0#设置对外服务的http端口,默认为9200http.port: 9200# 设置节点间交互的tcp端口,默认是9300 transport.tcp.port: 9300#Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。#这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host#(如果没有设置,port默认设置会transport.profiles.default.port 回落到transport.tcp.port)。#请注意,IPv6主机必须放在括号内。默认为127.0.0.1, [::1]discovery.zen.ping.unicast.hosts: ["192.168.1.220:9300,192.168.1.221:9300,192.168.1.222:9300"]#如果没有这种设置,遭受网络故障的集群就有可能将集群分成两个独立的集群 - 分裂的大脑 - 这将导致数据丢失discovery.zen.minimum_master_nodes: 2http.cors.enabled: truehttp.cors.allow-origin: "*"http.enabled: true

修改虚拟机内存(不是必须步骤,根据实际情况调整)

vim /usr/local/elasticsearch//elasticsearch-5.5.0/config/jvm.options #默认是1g官方建议对jvm进行一些修改,不然很容易出现OOM,参考官网改参数配置最好不要超过内存的50% -Xms2g-Xmx2g

修改系统文件数限制(必须)

切回root用户su - root,修改配置 

① vim /etc/security/limits.conf

* soft nofile 65536* hard nofile 65536* soft nproc 2048* hard nproc 4096#如果选择锁住swapping因此需要在这个配置文件下再增加两行代码#es soft memlock unlimited#es hard memlock unlimited

② vim /etc/sysctl.conf

注意:之后需要执行一句命令sysctl -p使系统配置生效(使用root用户)。

vm.max_map_count=655360fs.file-max=655360

安装步骤完成,分别启动三个节点,先启动你想做为主节点的服务器。我这里是220。

安装完成进行测试:在没有安装head插件的情况下,可以先用命令行测试比较方便说是直接访问http://192.168.1.220:9200

curl -Xget http://192.168.1.221:9200/_count 查询总数

24530c5d51d6afe99e27f60d56cc01649a5.jpg

如果大家想安装hea的插件,可参考网上的例子

3、spring boot集成 elasticsearch进行索引操作

        1)首先新建spring boot项目 这个不多介绍,可以参考我以前的文章。

        2)集成elasticsearch

        使用maven,引入es相关包,我这里把我的项目pom全部贴出来,里面还有其他的内容,仅供参考。

4.0.0
com.esharex
bigdata
0.0.1-SNAPSHOT
war
bigdata
esharex big data center
org.springframework.boot
spring-boot-starter-parent
2.0.3.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-data-elasticsearch
2.0.0.RELEASE
org.elasticsearch.client
transport
5.5.0
org.springframework.boot
spring-boot-starter-web
commons-dbutils
commons-dbutils
1.6
com.alibaba
druid
1.0.28
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework
spring-jdbc
4.3.10.RELEASE
mysql
mysql-connector-java
runtime
org.projectlombok
lombok
true
com.alibaba
fastjson
1.2.15
org.springframework.boot
spring-boot-starter-test
test
org.springframework.batch
spring-batch-test
test
org.springframework.boot
spring-boot-maven-plugin

具体代码,我放码云上,目前的主要功能是从mysql中将业务数据库中的数据导入到ElasticSearch中进行搜索。相关的索引操作可以ElasticsearchRepository的使用  

 

转载于:https://my.oschina.net/u/1791512/blog/1923407

你可能感兴趣的文章
PLSQL_基础系列02_分组函数GROUP BY / ROLLUP / CUBE(案例)
查看>>
mysql::创建多个表空间添加记录数据会添加到哪个表空间中?
查看>>
js字符串方法
查看>>
孤岛营救问题 (BFS+状压)
查看>>
C++ 中的prioriy_queue 优先级队列 转
查看>>
统计学习方法 李航---第5章 决策树
查看>>
java中绘图-----那个鼠标等的监听我还是不太会,,好苦恼啊。不知道这些监听事件是怎么区分的...
查看>>
java从键盘输入若干数,求其最大值,最小值,平均值。等等
查看>>
volatile
查看>>
Ali流量控制中间件Sentinel
查看>>
微信小程序里多出来的奇怪宽度
查看>>
Babel 命令基础
查看>>
Java中的static关键字解析
查看>>
2个rman自动恢复的脚本
查看>>
香港药品 ref
查看>>
spring学习总结一----控制反转与依赖注入
查看>>
健康日志7-11
查看>>
模式匹配之尺度空间---scale space
查看>>
makefile编写---单个子目录编译自动变量模板ok
查看>>
MBR (主引导记录)
查看>>