【Elasticsearch】Elasticsearch集群搭建详细手册

一、集群搭建

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安装目录
shell 复制代码
#在opt目录下创建soft目录
cd /opt
mkdir soft
  • 第二步:上传安装包到soft目录下
  • 第三步:解压安装包
shell 复制代码
#解压安装包(解压即安装)
tar -zxvf elasticsearch-6.8.10.tar.gz

注意:当前步骤每台服务器均相同!!!

1.3.修改配置

  • 节点1、节点2、节点3

    • 第一步:修改elasticsearch.yml配置文件
    shell 复制代码
    #执行命令:
    #进入配置目录
    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目录
    shell 复制代码
    #进入es根目录
    cd /opt/soft/elasticsearch/elasticsearch-6.8.1
    mkdir data
    • 第三步:创建elasticsearch的专属操作用户
    shell 复制代码
    #执行命令:
    #创建系统用户:(这里不用设置密码)
    adduser esuser
    #授权用户访问操作权限
    chown -R esuser:esuser /opt/soft/elasticsearch/elasticsearch-6.8.10
    • 第四步:修改elasticsearch默认分配内存配置
    shell 复制代码
    #执行命令
    #进入配置目录:
    cd /opt/soft/elasticsearch/elasticsearch-6.8.1/config
    #编辑内存配置文件:jvm.options (根据服务器情况设置如下值)
    vim jvm.options
    #将JVM堆大小改为最合适,一般建议不超过当前服务器内存的1/2
    -Xms2g
    -Xmx2g

1.4.启动ES

  • (1)、启动全部节点elasticsearch

    bash 复制代码
    #执行命令
    #切换用户:(从root用户切换到ES用户)
    su esuser
    #进入bin目录
    cd /opt/soft/elasticsearch/elasticsearch-6.8.10/bin
    #启动es并且后台运行
    ./elasticsearch -d
  • (2)、访问全部节点elasticsearch组件

    bash 复制代码
    #通过浏览器访问ES组件
    http://ip:9200
  • (3)、访问集群状态

shell 复制代码
#请求任意节点
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
shell 复制代码
#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]
shell 复制代码
#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]
shell 复制代码
#错误原因: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
shell 复制代码
#错误原因:es不能使用root用户启动
#需要切换到创建的es用户启动
#切换用户:(从root用户切换到ES用户)
su esuser

1.6.X-pack秘钥

  • 第一步:关闭所有节点的es服务
shell 复制代码
#找到elasticsearch进程杀掉
ps -ef|grep elasticsearch
#杀掉对应进程
kill -9 PID
  • 第二步:在node-1节点生成秘钥证书
shell 复制代码
#执行命令
#进入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
  • 第三步:秘钥配置(所有节点)
shell 复制代码
#将解压完的秘钥证书拷贝到各节点的ES目录下的config目录下
#可以下载上传,也可以远程服务器拷贝
#拷贝完成后解压秘钥文件
unzip ca.zip
unzip instance.zip
  • 第四步:修改配置elasticsearch.yml(所有节点)
shell 复制代码
#新增如下配置
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
  • 第五步:启动服务-设置用户密码
shell 复制代码
#执行命令
#先切换用户
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
  • 第六步:再次通过浏览器访问,即可需要输入密码才可访问
shell 复制代码
#通过浏览器访问ES组件
http://ip:9200

1.7.Springboot代码配置

shell 复制代码
#在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
相关推荐
TDengine (老段)7 小时前
TDengine 数学函数 DEGRESS 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
TDengine (老段)7 小时前
TDengine 数学函数 GREATEST 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
失散138 小时前
分布式专题——47 ElasticSearch搜索相关性详解
java·分布式·elasticsearch·架构
字节数据平台8 小时前
火山引擎Data Agent再拓新场景,重磅推出用户研究Agent
大数据·人工智能·火山引擎
铭毅天下11 小时前
Elasticsearch 到 Easysearch 数据迁移 5 种方案选型实战总结
大数据·elasticsearch·搜索引擎·全文检索
跨境小新11 小时前
Facebook广告投放:地域定向流量不精准?x个优化指南
大数据·facebook
ZKNOW甄知科技12 小时前
客户案例 | 派克新材x甄知科技,构建全场景智能IT运维体系
大数据·运维·人工智能·科技·低代码·微服务·制造
币须赢13 小时前
688758赛分科技 阴上阴形态 洗盘上涨?
大数据
学掌门13 小时前
大数据知识合集之预处理方法
大数据
Elastic 中国社区官方博客14 小时前
Elasticsearch 推理 API 增加了开放的可定制服务
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索