ElasticSearch -- ES 7.x 集群版安装部署

1. ElasticSearch

1.下载

官方地址:https://www.elastic.co/cn/downloads/elasticsearch
历史版本:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
ES兼容性:https://www.elastic.co/cn/support/matrix

2.配置

  1. 上传服务器,解压
  2. 修改用户(不允许使用root用户)
  3. 增加系统配置:
  • 禁用内存交换,内存交换会导致ES节点不稳定,会影响GC的工作效率,从而导致节点无法响应
# 系统层面,临时
sudo swapoff -a
# 系统层面,永久,修改/etc/fstab文件

#应用层面
bootstrap.memory_lock: true
# 修改 /etc/security/limits.conf
# allow user 'elasticsearch' mlockall
echo "elastic hard memlock unlimited" >> /etc/security/limits.conf
echo "elastic soft memlock unlimited" >> /etc/security/limits.conf

# 增加文件句柄和确保能创建足够的线程
# 修改文件 /etc/security/limits.conf
# elasticsearch用户最多可以使用65535个文件
echo "elastic soft nofile 65536" >> /etc/security/limits.conf
echo "elastic hard nofile 65536" >> /etc/security/limits.conf
# elasticsearch用户最多可以使用4096个线程
echo "elastic soft nproc 4096" >> /etc/security/limits.conf
echo "elastic hard nproc 4096" >> /etc/security/limits.conf


# 或者编辑 vi /etc/security/limits.conf
elastic hard memlock unlimited
elastic soft memlock unlimited
elastic soft nofile 65536
elastic hard nofile 65536
elastic soft nproc 4096
elastic hard nproc 4096
  • 增加系统配置
echo "vm.max_map_count = 262144">> /etc/sysctl.conf
sysctl -p
  1. 创建数据和日志目录:
cd /data/services/elasticsearch-7.17.5
mkdir logs
mkdir data
  1. 修改配置文件:
vi  config/elasticsearch.yml 

# 增加如下配置:


#配置es的集群名称,同一个集群中的多个节点使用相同的标识
#如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: my-es-cluster

#节点名称(每个节点不一样)
node.name: node-a

#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3

#数据存储路径
path.data: /data/services/elasticsearch-7.17.5/data
#日志存储路径
path.logs: /data/services/elasticsearch-7.17.5/logs

#节点所绑定的IP地址,并且该节点会被通知到集群中的其他节点
#通过指定相同网段的其他节点会加入该集群中 0.0.0.0任意IP都可以访问elasticsearch(每个节点不一样)
network.host: 192.168.3.21

#对外提供服务的http端口,默认为9200
http.port: 9200

#内部节点之间沟通端口
transport.tcp.port: 9300

#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.3.21","192.168.3.22","192.168.3.23"]

#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-a", "node-b","node-c"]

#ES默认开启了内存地址锁定,为了避免内存交换提高性能。但是Centos6不支持SecComp功能,启动会报错,所以需要将其设置为false
bootstrap.memory_lock: false

# 是否支持跨域
http.cors.enabled: true

# *表示支持所有域名
http.cors.allow-origin: "*"
  1. 修改jvm.options,官网建议最大不超过32G
-Xms4g
-Xmx30g
  1. 拷贝上述配置,将需要修改的 node.name,network.host 修改
  2. 切换用户,启动:
#控制台启动命令
bin/elasticsearch

#后台启动命令
#bin/elasticsearch -d

3.查看启动状态

curl 'http://localhost:9201/_cat/nodes?v'

4.注册宕机、开机自启

  1. 创建配置文件:vim /usr/lib/systemd/system/elasticsearch.service
  2. 填写监控信息:
[Unit]
Description=elasticsearch
After=network.target

[Service]
Type=forking
User=hadoop
ExecStart=/data/services/elasticsearch-7.17.5/bin/elasticsearch -d
PrivateTmp=true
# 指定此进程可以打开的最大文件数
LimitNOFILE=65535
# 指定此进程可以打开的最大进程数
LimitNPROC=65535
# 最大虚拟内存
LimitAS=infinity
# 最大文件大小
LimitFSIZE=infinity
# 超时设置 0-永不超时
TimeoutStopSec=0
# SIGTERM是停止java进程的信号
KillSignal=SIGTERM
# 信号只发送给给JVM
KillMode=process
# java进程不会被杀掉
SendSIGKILL=no
# 正常退出状态
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target
  1. 使用systemctl daemon-reload命令可以刷新elasticsearch.service配置信息
  2. 设置开机启动: systemctl enable elasticsearch.service
  3. 其他相关命令:
# 查看服务
systemctl status elasticsearch.service
# 启动服务
systemctl start elasticsearch.service
# 重启服务
systemctl restart elasticsearch.service
# 停止服务
systemctl stop elasticsearch.service
# 禁止开机启动
systemctl disable elasticsearch.service 
# 启用开机启动
systemctl enable elasticsearch.service

5.如果磁盘是SSD,建议修改IO调度算法

  1. 查看操作系统版本 cat /etc/debian_version
    在这里插入图片描述
  2. 查看支持的io调度算法 sudo dmesg |grep -i scheduler
    在这里插入图片描述
  3. 查看磁盘:lsblk
    在这里插入图片描述
  4. 查看默认的调度算法 cat /sys/block/vdb/queue/scheduler
    在这里插入图片描述
  5. 修改为noop调度算法: sudo echo noop > /sys/block/vdb/queue/scheduler

6.SSD磁盘,关闭numa绑核、hugepage

  1. sudo vi /etc/default/grub,添加如下配置
GRUB_CMDLINE_LINUX_DEFAULT="quiet numa=off transparent_hugepage=never"
  1. 保存,更新配置,重启机器
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo reboot

2. Kibana

1.下载

官方地址:https://www.elastic.co/cn/downloads/past-releases#kibana

2.配置

#2.解压
tar -zvxf  kibana-7.17.5-linux-x86_64.tar.gz

#3.修改配置文件 config/kibana.yml
server.port: 5601
server.host: "xx"
elasticsearch.hosts: ["http://xx1:9200","http://xx2:9200","http://xx3:9200"]
elasticsearch.username: "elastic"
elasticsearch.password: "pwd123"

#4. 启动
nohup /data/services/kibana-7.17.5/bin/kibana >> /data/services/kibana-7.17.5/logs/kibana.log 2>&1 & 

#5. 查验启动后运行结果
ps -ef | grep kibana

#浏览器访问  http://xx:5601

3.ElasticSearch-head插件

1.下载

官方地址:https://github.com/mobz/elasticsearch-head

2.安装和配置

  1. 安装node:安装node
  2. 安装head:
unzip elasticsearch-head-5.0.0.zip
cd elasticsearch-head-5.0.0
npm config set registry https://registry.npm.taobao.org
npm install --ignore-scripts
  1. 修改_site/app.js,修改es的链接地址(在4354行),改为ES的IP(一台即可)

在这里插入图片描述

  1. 修改_site/vendor.js文件,将x-www-form-urlencoded改为json;charset=UTF-8:
# 6886行 
contentType: "application/x-www-form-urlencoded"
# 改成
contentType: "application/json;charset=UTF-8"

# 7574行 
var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
# 改成
var inspectData = s.contentType === "application/json;charset=UTF-8" &&
  1. 修改Gruntfile.js 文件,在 connect下的options 属性内增加 hostname,设置为该机器的ip:
    在这里插入图片描述

3.启动和测试

  1. 启动:
nohup npm run start >> logs/head.log 2>&1 &
  1. 打开网页测试:http://xxx:9400
    在这里插入图片描述

4.ik 分词器插件

1.下载

官方地址:https://github.com/medcl/elasticsearch-analysis-ik

注意:需要下载和ES版本一致的插件,在ES中安装IK插件的时候,需要在ES集群的所有节点中都安装

2.安装和配置

在每个节点本地安装:

bin/elasticsearch-plugin install file:///data/soft/elasticsearch-7.17.5/elasticsearch-analysis-ik-7.17.5.zip 

注意:在安装的过程中会有警告信息提示需要输入y确认继续向下执行:
在这里插入图片描述

最后看到如下内容就表示安装成功了:
在这里插入图片描述

注意:插件安装成功之后在elasticsearch-7.17.5的config和plugins目录下会产生一个analysis-ik目录。

重启集群,kibana dev tools 测试:

POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "中华人民共和国"
}

在这里插入图片描述

5.pinyin 分词器插件

1.下载

官方地址:https://github.com/medcl/elasticsearch-analysis-pinyin/releases?page=2

注意:下载和ES版本一致的插件,在ES中安装插件的时候,需要在ES集群的所有节点中都安装

2.安装和配置

在每个节点本地安装:

bin/elasticsearch-plugin install file:///data/services/elasticsearch-7.17.5/elasticsearch-analysis-pinyin-7.17.5.zip 

最后看到如下内容就表示安装成功了:
在这里插入图片描述

注意:插件安装成功之后在elasticsearch-7.17.5的plugins目录下会产生一个analysis-pinyin目录。

重启集群,kibana dev tools 测试:

POST _analyze
{
  "analyzer": "pinyin",
  "text":"刘德华"
}

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、Elasticsearch 7.X 进阶实战大纲10个大选题来源于实战业务场景的提炼、总结。Elasticsearch 全貌认知Elasticsearch 索引创建和搜索原理Elasticsearch 集群规划及节点角色规划最佳实践Elasticsearch 集群性能调优及原理Elasticsearch 数据建模实例讲解与实战技巧Elasticsearch 冷温热架构讲解与实战Elasticsearch ILM 索引生命周期管理讲解与实战Elasticsearch CCS 跨集群搜索讲解与实战Elasticsearch 分片分配策略讲解与实战Elasticsearch 安全特性讲解与使用2、课程特色来源于项目实战、应用于实战项目。实战项目经验总结,属于基础后的进阶系列。基于 7.13 本讲解,市面上教程都没有完整体现过该本。近 10 个小时的视频,力求相对完整、体系、通透。 3、讲解方式干货凝练总结、侧重原理、深入浅出。每一讲脚本都可以提供下载,跟着学、学的会。视频共11大讲,每讲可以独立成课,方便大家地铁、公交车学习。录播方式,非直播。4、讲师:铭毅天下介绍Elastic认证工程师、Elastic中国合作培训讲师(有世界500强企业用户企业内训经验);阿里云MVP;死磕Elasticsearch知识星球发起人,全球付费用户1200人+(含中国台湾、美国硅谷、加拿大球友),已带领 60人+ 通过Elasticsearch 认证考试(中国仅通过100人左右);可能是中国最大Elastic技术公众号——铭毅天下Elasticsearch作者。CSDN博客专家、CSDN2020年度优秀创作者、CSDN2016年、2013年博客征文大赛特等奖得主;CSDN博客地址:elastic.blog.csdn.net;CSDN博客排名:近前150,阅读量近500,0000+;CSDN持续写作近十年(几乎每月都有输出,几乎从未间断),累计使用 Elasticsearch 超过 10000小时;Elastic中文社区日报责任编辑,2018年Elastic中文社区杰出贡献者、社区排名 TOP5;高级工程师、计算机应用技术硕士、近十年工作经验;理想主义者、终身学习者、终身成长者;笃信坚持、积累的力量;自1997年——至今20年+持续思考、积累、总结,从未间断;个人信条:自由不是你想干什么就干什么,而是你不想干什么就有能力不干什么!人因为梦想而伟大,机遇永远属于那些有准备、立即行动并能坚持到底的人!
Kubernetes是一个开源的容器编排平台,可以帮助我们轻松部署、扩展和管理容器化应用程序。Elasticsearch是一个分布式的实时搜索和分析引擎,可以帮助我们处理大量的数据。 要在Kubernetes上持久化部署Elasticsearch8.x集群,我们可以按照以下步骤进行操作: 1. 创建Kubernetes集群:首先,我们需要在Kubernetes上创建一个集群。可以选择在本地搭建Minikube环境,或者使用云服务提供商如AWS、Azure等提供的Kubernetes集群。 2. 创建Persisten Volume(PV)和Persisten Volume Claim(PVC):PV是Kubernetes中的一种资源,用于表示集群中的持久存储。PVC则是对PV的申请,用于声明需要的存储资源。我们需要创建足够的PV和PVC来提供给Elasticsearch使用。 3. 创建Elasticsearch Pod和Service:创建一个包含Elasticsearch容器的Pod,并且将其暴露为一个Service。可以使用Kubernetes的Deployment资源来定义Elasticsearch的Pod模板,以便实现自动扩展和故障恢复。 4. 配置Elasticsearch集群:在Elasticsearch的配置文件中,我们需要为每个节点配置唯一的节点名称、集群名称和网络绑定地址。此外,还需要指定master节点和data节点的角色和数量,并配置持久化存储路径。 5. 使用StatefulSet进行扩容:Elasticsearch是一个分布式系统,可以通过添加更多的节点来扩展其容量。为了实现有状态应用的扩容,可以使用Kubernetes的StatefulSet资源,它可以为每个节点提供唯一的网络标识和稳定的存储卷。 6. 监控和日志管理:为了保证Elasticsearch集群的稳定性和可用性,可以使用Kubernetes提供的监控和日志管理工具。比如,Prometheus可以帮助我们监控集群的健康状态,Elasticsearch官方提供的Elasticsearch Logstash Kibana(ELK)可以用于集中存储和分析日志。 通过以上步骤,我们就可以在Kubernetes上成功持久化部署Elasticsearch8.x集群。这样可以有效地管理和扩展我们的分布式搜索和分析引擎,并且确保数据的持久性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值