一、集群搭建
1.1.资源准备
- 服务器
- 192.168.X.26
- 192.168.X.25
- 192.168.X.24
- 安装包
- elasticsearch-6.8.10.tar.gz
- 防火墙
- 所有服务器均开通9200,9300端口
1.2.安装组件
- 第一步:创建es安装目录
#在opt目录下创建soft目录
cd /opt
mkdir soft
- 第二步:上传安装包到soft目录下
- 第三步:解压安装包
#解压安装包(解压即安装)
tar -zxvf elasticsearch-6.8.10.tar.gz
注意:当前步骤每台服务器均相同!!!
1.3.修改配置
-
节点1、节点2、节点3
- 第一步:修改elasticsearch.yml配置文件
#执行命令: #进入配置目录 cd /opt/soft/elasticsearch/elasticsearch-6.8.1/config #编辑elasticsearch.yml配置文件 vim elasticsearch.yml #设置如下配置: #集群名称: (应用连接配置需要)三个节点相同 cluster.name: 自定义 #节点名称(按节点顺序命名:node-1、node-2、node-3) node.name: node-1 #数据存放目录:(需要提前创建好) path.data: /opt/soft/elasticsearch/elasticsearch-6.8.10/data #日志存放目录:(需要提前创建好) path.logs: /opt/soft/elasticsearch/elasticsearch-6.8.10/logs #当前节点地址: network.host: 当前服务的ip地址 #开始http访问端口 http.port: 9200 transport.tcp.port: 9300 #关闭程序内存锁定器和程序系统调用筛选器(视情况而定) bootstrap.memory_lock: false bootstrap.system_call_filter: false #集群节点配置 discovery.zen.ping.unicast.hosts: ["192.168.X.26", "192.168.X.25", "192.168.X.24"] #配置可用master节点数量(一般ES集群的节点至少要有3个,quorum设置为2) discovery.zen.minimum_master_nodes: 2
- 第二步:创建data目录
#进入es根目录 cd /opt/soft/elasticsearch/elasticsearch-6.8.1 mkdir data
- 第三步:创建elasticsearch的专属操作用户
#执行命令: #创建系统用户:(这里不用设置密码) adduser esuser #授权用户访问操作权限 chown -R esuser:esuser /opt/soft/elasticsearch/elasticsearch-6.8.10
- 第四步:修改elasticsearch默认分配内存配置
#执行命令 #进入配置目录: cd /opt/soft/elasticsearch/elasticsearch-6.8.1/config #编辑内存配置文件:jvm.options (根据服务器情况设置如下值) vim jvm.options #将JVM堆大小改为最合适,一般建议不超过当前服务器内存的1/2 -Xms2g -Xmx2g
1.4.启动ES
-
(1)、启动全部节点elasticsearch
#执行命令 #切换用户:(从root用户切换到ES用户) su esuser #进入bin目录 cd /opt/soft/elasticsearch/elasticsearch-6.8.10/bin #启动es并且后台运行 ./elasticsearch -d
-
(2)、访问全部节点elasticsearch组件
#通过浏览器访问ES组件 http://ip:9200
-
(3)、访问集群状态
#请求任意节点
http://192.168.X.26:9200/_cat/nodes?pretty
#响应如下证明集群搭建成功
192.168.X.24 9 37 1 0.06 0.06 0.05 mdi - node-3
192.168.X.25 5 35 0 0.01 0.03 0.05 mdi - node-2
192.168.X.26 10 91 1 0.02 0.09 0.15 mdi * node-1
1.5.启动问题
- 问题1:initial heap size [2147483648] not equal to maximum heap size [4294967296]; this can cause resize pauses
#jvm配置内存需要一样
#修改配置文件:/opt/soft/elasticsearch/elasticsearch-6.8.10/config/jvm.options 这里修改jvm占用内存
-Xms4g
-Xmx4g
- 问题2:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
#es需要增大系统默认的文件打开数和用户可支配内存数
#编辑环境配置
vim /etc/security/limits.conf
#文件末尾追加 (esuser为启动elasticsearch的用户名)
esuser soft nofile 65535
esuser hard nofile 65537
- 问题3:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
#错误原因:elasticsearch用户拥有的内存权限太小,至少需要262144
#编辑环境配置
vim /etc/sysctl.conf
#文件末尾追加
vm.max_map_count=262144
#配置立刻生效
sysctl -w vm.max_map_count=262144
- 问题4:org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
#错误原因:es不能使用root用户启动
#需要切换到创建的es用户启动
#切换用户:(从root用户切换到ES用户)
su esuser
1.6.X-pack秘钥
- 第一步:关闭所有节点的es服务
#找到elasticsearch进程杀掉
ps -ef|grep elasticsearch
#杀掉对应进程
kill -9 PID
- 第二步:在node-1节点生成秘钥证书
#执行命令
#进入elasticsearch-6.8.10目录
cd /opt/soft/elasticsearch/elasticsearch-6.8.10
#开始生成ca.crt证书 会生成ca.zip文件 并且设置有效期100年
/opt/soft/elasticsearch/elasticsearch-6.8.10/bin/elasticsearch-certutil ca --pem --out ca.zip --days 36500 -s
#解压文件验证有效期
unzip ca.zip
# 查看证书有效期
openssl x509 -in ca/ca.crt -noout -dates
#开始生成instance.crt证书 会生成instance.zip 并且设置有效期100年
/opt/soft/elasticsearch/elasticsearch-6.8.10/bin/elasticsearch-certutil cert --ca-cert ca/ca.crt --ca-key ca/ca.key --pem --name instance --out instance.zip --days 36500 -s
#解压文件
unzip instance.zip
# 查看证书有效期
openssl x509 -in instance/instance.crt -noout -dates
- 第三步:秘钥配置(所有节点)
#将解压完的秘钥证书拷贝到各节点的ES目录下的config目录下
#可以下载上传,也可以远程服务器拷贝
#拷贝完成后解压秘钥文件
unzip ca.zip
unzip instance.zip
- 第四步:修改配置elasticsearch.yml(所有节点)
#新增如下配置
http.cors.enabled: true
http.cors.allow-origin: "*"
#开启安全验证功能
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
http.cors.allow-headers: Authorization
xpack.security.transport.ssl.key: instance/instance.key
xpack.security.transport.ssl.certificate: instance/instance.crt
xpack.security.transport.ssl.certificate_authorities: ca/ca.crt
xpack.ssl.verification_mode: certificate
xpack.ssl.client_authentication: required
- 第五步:启动服务-设置用户密码
#执行命令
#先切换用户
su esuser
#再启动
/opt/soft/elasticsearch/elasticsearch-6.8.10/bin/elasticsearch -d
#进入bin目录:
cd /opt/soft/elasticsearch/elasticsearch-6.8.10/bin
#执行设置密码命令:(会对所有es的用户进行密码设置,一直输入密码直到设置完所有)
./elasticsearch-setup-passwords interactive
#设置完密码后,再次打开浏览器访问即可发现需要密码登录
#账号默认为:elastic;密码为刚设置的值
http://ip:9200
- 第六步:再次通过浏览器访问,即可需要输入密码才可访问
#通过浏览器访问ES组件
http://ip:9200
1.7.Springboot代码配置
#在application.properties 新增ES配置
spring.data.elasticsearch.cluster-nodes=节点1:9300,节点2:9300,节点3:9300
spring.data.elasticsearch.cluster-name=集群名称
spring.data.elasticsearch.xpack.security.user=账号
spring.data.elasticsearch.xpack.security.password=密码
spring.data.elasticsearch.xpack.security.transport.ssl.enabled=true
spring.data.elasticsearch.xpack.ssl.key=服务器路径/instance/instance.key
spring.data.elasticsearch.xpack.ssl.certificate=服务器路径/instance/instance.crt
spring.data.elasticsearch.xpack.ssl.certificate_authorities=服务器路径/ca/ca.crt
spring.data.elasticsearch.xpack.ssl.verification_mode=certificate
spring.data.elasticsearch.xpack.security.http.ssl.enabled=false
spring.data.elasticsearch.client.transport.sniff=true