es集群配置与实际演示

news2024/11/20 21:25:15

es集群配置与实际演示

  • 1》单服务器多节点部署
    • 一、准备环境
    • 二、安装jdk
    • 三、ElasticSearch部署
    • 四、实际演示
  • 2》多台服务器集群部署
    • 一、准备环境
    • 二、安装jdk
    • 三、ElasticSearch部署
    • 四、实际演示
    • 五、密码及集群认证
    • 六、其他

集群分类:
ES多节点集群分为两种,一种是多台服务器集群,另一种是单台服务器多节点集群(伪集群)

1》单服务器多节点部署

服务器基础环境说明
系统: CentOS 7
内存: 16G及以上
CPU: 4核及以上
硬盘: 300G及以上(/根分区至少100G、其余给到/var)
(本服务器ip地址为192.168.9.159)

一、准备环境

/etc/security/limits.conf

# 修改系统进程数量、最大打开文件数等配置(加入到.conf文件最底部)
cat >> /etc/security/limits.conf <<"EOF"
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
EOF

/etc/sysctl.conf

# 设置最大映射数量 
# 系统虚拟内存默认最大映射数为65530,无法满足ES系统要求,需要调整为262144以上
echo "vm.max_map_count = 655360" >> /etc/sysctl.conf
# 保存并退出后,再输入命令:sysctl -p立即生效

二、安装jdk

上传jdk安装文件,解压,移动到/usr/local/java路径
链接:https://pan.baidu.com/s/1p_eIxUiBWEWpT5OzhdvNvA?pwd=6zw5

tar -zxf jdk-8u271-linux-x64.tar.gz
mv jdk1.8.0_271/ /usr/local/java

编辑 /etc/profile 文件

cat >> /etc/profile <<"EOF"
###java###
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib
EOF

让环境变量生效

source /etc/profile
java -version

三、ElasticSearch部署

上传ElasticSearch安装文件、解压、移动到/usr/local/elasticsearch路径
链接:https://pan.baidu.com/s/1p6jDWeKrex9GJlBP6I4_Uw?pwd=a8ge

tar -zxf elasticsearch-7.5.1-linux-x86_64.tar.gz -C /usr/local

修改目录名,拷贝

cd /usr/local/
mv elasticsearch-7.5.1 es-node1
cp -r es-node1 es-node2
cp -r es-node1 es-node3

修改文件和目录的所有者和所属组(因为elasticsearch是不允许root用户启动的,所以需要添加新用户)

mkdir -p /var/data/es-data
mkdir -p /var/data/es-log
useradd es
chown -R es:es /usr/local/es-node1
chown -R es:es /usr/local/es-node2
chown -R es:es /usr/local/es-node3
chown -R es:es /var/data/es-data
chown -R es:es /var/data/es-log

修改配置文件
cd /usr/local/elasticsearch/config/
cp elasticsearch.yml elasticsearch.yml.bak
vim elasticsearch.yml

cluster.name: ss-es					# 集群名,同一个集群,集群名必须一致
node.name: node-1					# 节点名称
network.host: 0.0.0.0				# 节点ip
http.port: 9200						# 节点端口
path.data: /var/data/es-data		# 数据存放路径
path.logs: /var/data/es-log			# 日志存放路径
discovery.seed_hosts: ["192.168.9.159:9300", "192.168.9.159:9301", "192.168.9.159:9302"]	# 集群中节点IP
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]				# 集群中节点名称

transport.tcp.port: 9300			# es内部通信端口
node.max_local_storage_nodes: 3		# 单节点可以开启ES实例数
http.cors.enabled: true
http.cors.allow-origin: "*"
# 允许建多少索引分片
cluster.max_shards_per_node: 100000
# 集群级别的断路器,默认为jvm堆的70%
indices.breaker.total.limit: 70%
# 单个request的断路器限制,默认为jvm堆的60%
indices.breaker.request.limit: 40%
# fielddata breaker限制,默认为jvm堆的60%
indices.breaker.fielddata.limit: 40%
# 控制字段数据fielddata允许内存大小,达到HEAP 20%自动清理旧cache
indices.fielddata.cache.size: 20%
indices.breaker.total.use_real_memory: false

拷贝配置文件到另外两个节点
cp elasticsearch.yml /usr/local/es-node2/config/
cp elasticsearch.yml /usr/local/es-node3/config/

修改另外两个节点配置,有差别的配置有:node.name,http.port,transport.tcp.port
将node.name修改为对应节点名,比如node2
将http.port修改为节点需要占用的端口(自定义),比如9201
将transport.tcp.port修改为节点需要占用的端口(自定义),比如9301

启动elasticsearch

su es
cd /usr/local/es-node1/bin		# 依次打开es-node1、es-node2、es-node3三个文件夹,并启动es
./elasticsearch -d				# 后台启动
./elasticsearch					# 非后台启动,主要用于调试

验证是否成功运行
》终端访问 节点IP:9200,显示如图内容,即为ES运行成功

》页面访问 节点IP:9200/_cat/nodes?pretty,页面内容如图即为ES集群运行成功
(其中:* 表示选举为master节点, - 表示为node节点)

四、实际演示

结合之前su+elk监测网络情况的环境进行配置(之前的es是单机单节点模式)

修改logstash中的logstash.conf文件
vim /usr/local/logstash/config/logstash.conf(只需修改output中es的hosts值即可)

修改kibana中的kibana.yml文件
vim /usr/local/kibana/config/kibana.yml(只需修改elasticsearch.hosts节点的值即可)

注意:修改如上两个配置文件后,需要分别重启logstash和kibana服务!!!

2》多台服务器集群部署

服务器基础环境说明
服务器数量:三台及以上
系统: CentOS 7
内存: 4G及以上
CPU: 2核及以上
硬盘: 300G及以上(/根分区至少100G、其余给到/var)

主机名IP
node1192.168.9.160
node2192.168.9.161
node3192.168.9.162

以下三个环境配置步骤需要三台es服务器分别完成设置
(注意:配置elasticsearch.yml文件时需要修改对应的节点名称和ip)

一、准备环境

/etc/security/limits.conf

# 修改系统进程数量、最大打开文件数等配置(加入到.conf文件最底部)
cat >> /etc/security/limits.conf <<"EOF"
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
EOF

/etc/sysctl.conf

# 设置最大映射数量 
# 系统虚拟内存默认最大映射数为65530,无法满足ES系统要求,需要调整为262144以上
echo "vm.max_map_count = 655360" >> /etc/sysctl.conf
# 保存并退出后,再输入命令:sysctl -p立即生效

二、安装jdk

上传jdk安装文件,解压,移动到/usr/local/java路径
链接:https://pan.baidu.com/s/1p_eIxUiBWEWpT5OzhdvNvA?pwd=6zw5

tar -zxf jdk-8u271-linux-x64.tar.gz
mv jdk1.8.0_271/ /usr/local/java

编辑 /etc/profile 文件

cat >> /etc/profile <<"EOF"
###java###
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib
EOF

让环境变量生效

source /etc/profile
java -version

三、ElasticSearch部署

上传ElasticSearch安装文件、解压、移动到/usr/local/elasticsearch路径
链接:https://pan.baidu.com/s/1p6jDWeKrex9GJlBP6I4_Uw?pwd=a8ge

tar -zxf elasticsearch-7.5.1-linux-x86_64.tar.gz
mv elasticsearch-7.5.1 /usr/local/elasticsearch

修改文件和目录的所有者和所属组(因为elasticsearch是不允许root用户启动的,所以需要添加新用户)

mkdir -p /var/data/es-data
mkdir -p /var/data/es-log
useradd es
chown -R es:es /usr/local/elasticsearch/
chown -R es:es /var/data/es-data
chown -R es:es /var/data/es-log

修改配置文件
cd /usr/local/elasticsearch/config/
cp elasticsearch.yml elasticsearch.yml.bak
vim elasticsearch.yml

cluster.name: ss-es						# 集群名,同一个集群,集群名必须一致
node.name: node-1						# 节点名称
network.host: 192.168.9.160				# 节点ip(本机ip)
http.port: 9200							# 节点端口
path.data: /var/data/es-data			# 数据存放路径
path.logs: /var/data/es-log				# 日志存放路径
discovery.seed_hosts: ["192.168.9.160", "192.168.9.161", "192.168.9.162"]	# 集群中节点IP
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]				# 集群中节点名称

http.cors.enabled: true
http.cors.allow-origin: "*"
# 允许建多少索引分片
cluster.max_shards_per_node: 100000
# 集群级别的断路器,默认为jvm堆的70%
indices.breaker.total.limit: 70%
# 单个request的断路器限制,默认为jvm堆的60%
indices.breaker.request.limit: 40%
# fielddata breaker限制,默认为jvm堆的60%
indices.breaker.fielddata.limit: 40%
# 控制字段数据fielddata允许内存大小,达到HEAP 20%自动清理旧cache
indices.fielddata.cache.size: 20%
indices.breaker.total.use_real_memory: false

启动elasticsearch

su es
cd /usr/local/elasticsearch/bin
./elasticsearch -d				# 后台启动
./elasticsearch					# 非后台启动,主要用于调试

验证是否成功运行
》终端访问 节点IP:9200,显示如图内容,即为ES运行成功

》页面访问 节点IP:9200/_cat/nodes?pretty,页面内容如图即为ES集群运行成功
(其中:* 表示选举为master节点, - 表示为node节点)

四、实际演示

结合之前su+elk监测网络情况的环境进行配置(之前的es是单机单节点模式)

修改logstash中的logstash.conf文件
vim /usr/local/logstash/config/logstash.conf(只需修改output中es的hosts值即可)

修改kibana中的kibana.yml文件
vim /usr/local/kibana/config/kibana.yml(只需修改elasticsearch.hosts节点的值即可)

注意:修改如上两个配置文件后,需要分别重启logstash和kibana服务!!!

测试是否能够正常运行,查看es集群信息(健康状态、分片、索引等)
参考自: ES查看集群信息(健康状态、分片、索引等)-CSDN博客

1、_cat/shards 查看分片信息

# 查看所有索引的分片信息
curl http://192.168.9.160:9200/_cat/shards?v
# 查看指定索引的分片信息
curl http://192.168.1.101:9200/_cat/shards/索引名称?v

2、_cat/nodes 查看集群的节点信息

curl http://192.168.9.160:9200/_cat/nodes?v

3、_cat/indices 查看索引信息

# 查看所有索引的分片信息
curl http://192.168.9.160:9200/_cat/indices?v

五、密码及集群认证

cd /usr/local/elasticsearch/config/
vim elasticsearch.yml

# 开启x-pack权限认证(三台服务器都添加如下内容并重启)
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

重新启动es

在其中一台es服务器上,配置集群认证证书(执行命令时提示输入路径或密码,可直接回车跳过)
cd /usr/local/elasticsearch

./bin/elasticsearch-certutil ca									# 生成证书
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12		# 为结点签发证书

以上命令执行完,将生成证书文件:elastic-certificates.p12(默认保存在/usr/local/elasticsearch/路径下)
mv elastic-certificates.p12 config/elastic-certificates.p12(将证书文件拷贝到config目录下)

将生成的证书文件拷贝到其他节点服务器上(注意!需要修改elastic-certificates.p12文件的权限为es才行)

scp config/elastic-certificates.p12 root@192.168.9.161:/usr/local/elasticsearch/config/
scp config/elastic-certificates.p12 root@192.168.9.162:/usr/local/elasticsearch/config/

继续修改elasticsearch.yml配置文件(三台服务器都新增如下内容):
vim elasticsearch.yml

xpack.security.transport.ssl.verification_mode: none 
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12 
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

重新启动es

在其中一台es服务器上,配置初始化密码(第一次输入y确认,再依次输入密码即可)

./bin/elasticsearch-setup-passwords interactive

测试输入用户名、密码是否正常登录查询

curl 192.168.9.160:9200 -u elastic:密码		# elastic是默认用户名

参考自:es用户认证与鉴权入门配置-CSDN博客

六、其他

es配置优化

  1. refresh_interval
    索引刷新间隔,默认为1s,对数据实时性要求不需要那么大的情况下可以设置大一点。
    可以将写入的ES配置大一点,可以设置为5m;读的ES可以保持不变。
    需用命令修改:
    curl -H "Content-Type: application/json" -XPUT 'http://192.168.200.1:9200/_settings' -d '{"refresh_interval": "5m"}'
  2. index buffer(在elasticsearch.yml中添加)
    • indices.memory.index_buffer_size
      (静态)接受百分比或字节大小值。它默认为10%,这意味着10%分配给节点的总堆中的将用作所有分片共享的索引缓冲区大小。
    • indices.memory.min_index_buffer_size
      (静态)如果index_buffer_size指定为百分比,则此设置可用于指定绝对最小值。默认为48mb。
      如:indices.memory.index_buffer_size: 512mb
    • indices.memory.max_index_buffer_size
      (静态) 如果index_buffer_size指定为百分比,则此设置可用于指定绝对最大值。默认为无界。
    • 均可直接写在elasticsearch.yml中。
  3. jvm.options
    Xms和Xmx,根据服务器实际内存修改。直接修改jvm.options
  4. 系统层面修改swap分区
    关闭swap分区,从内存交换到硬盘,再到内存,磁盘io较大,影响性能。
    关闭命令:swapoff -a
    永久关闭命令:sed -i ‘/ swap / s/^(.*)$/#\1/g’ /etc/fstab

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/568597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

档案馆中温湿度要求的数据 资料分享

5.1 温度和湿度要求 5.1.1 档案馆各区域温度和湿度(本文件所指湿度为相对湿度,下同)设计应符合JGJ25—2010的规定。 5.1.2 档案库房温度和湿度应符合表1的要求。档案库房应维持温度和湿度相对稳定&#xff0c;温度日较差≤2 ℃,湿度日较差≤5%。温度和湿度取值应充分考虑设备…

Android 之MPAndroidChart图表案例

一 简介 1.1 图表用于直观的分析数据的分布情况&#xff0c;用于对比数据的大小和趋势。 1.2 图表的类型也非常多&#xff0c;常见的有折线&#xff0c;柱状&#xff0c;饼状&#xff0c;其它的有面积&#xff0c;散点&#xff0c;股价&#xff0c;雷达&#xff0c;仪表盘&am…

企业该如何自主构建信息化管理系统?

实践证明&#xff0c;企业自己搭建的信息化系统灵活性更高&#xff0c;更能契合企业的需求。 我们可以借助零代码平台自主搭建&#xff0c;既提供了各个应用系统的标准化功能&#xff0c;又支持自定义搭建&#xff0c;可根据企业自身需求修改。 全球领先的信息技术研究和顾问公…

【Servlet API详解】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 1. HttpServlet类 2. HttpServletRequest 2.…

【JUC基础】10. Atomic原子类

1、什么是Atomic Atomic英译为原子的。原子结构通常称为不可分割的最小单位。而在JUC中&#xff0c;java.util.concurrent.atomic 包是 Java 并发库中的一个包&#xff0c;提供了原子操作的支持。它包含了一些原子类&#xff0c;用于在多线程环境下进行线程安全的原子操作。使…

Apache Doris

Apache Doris教程 1.Doris 简介 1.1 Doris 概述 Apache Doris 由百度大数据部研发&#xff08;之前叫百度 Palo&#xff0c;2018 年贡献到 Apache 社区后&#xff0c; 更名为 Doris &#xff09;&#xff0c;在百度内部&#xff0c;有超过 200 个产品线在使用&#xff0c;…

一次简单的问题排查背后蕴含的巨大的知识量

现象 所有的请求都卡住。堆dump正常。有一段时间内存占用高&#xff0c;GC频繁且耗时长&#xff0c;过了那段时间后监控上恢复正常。日志有OutOfMemory的异常 结论 在这段代码OOM之前&#xff0c;它会导致JVM不停 fullGC 与 stopWorld&#xff0c;从而导致了程序卡死。&#…

【Linux】线程同步/生产消费模型/线程池/读写锁

目录 1.Linux线程同步 1.1.条件变量 1.1.1.同步概念与竞态条件 1.1.2.条件变量函数 初始化和销毁 1.1.3.等待条件满足 1.1.5.为什么 pthread_cond_wait 需要互斥量? 1.1.6.条件变量使用规范 2.生产者消费者模型 2.1.模型概念 2.2.模型优点 2.3.基于Blocking Queue的…

[入门必看]数据结构6.1:图的基本概念

[入门必看]数据结构6.1&#xff1a;图的基本概念 第六章 图6.1 图的基本概念知识总览6.1.1 图的基本概念 6.1.1 图的基本概念图的定义图逻辑结构的应用无向图、有向图简单图、多重图顶点的度、入度、出度顶点-顶点的关系描述连通图、强连通图研究图的局部——子图连通分量强连通…

西门子物联网网关 IOT2050 杭州乐芯生态合作版 LX-IOT2050

西门子物联网网关 IOT2050 乐芯生态合作版 LX-IOT2050 •基于 IOT2050 硬件基础上安装了乐芯科技数据采集引擎&#xff0c; 提供开箱即用的物联网解决方案。 •硬件&#xff1a;基于西门子工业的高品质硬件&#xff0c;完善的国际认证资质 &#xff0c; 欧盟CE、UL、CCC认证。…

零基础小白怎么入门网络安全(黑客)?看这篇就够啦

前言 我刚入门网络安全&#xff0c;该怎么学&#xff1f;要学哪些东西&#xff1f;有哪些方向&#xff1f;怎么选&#xff1f; 不同于Java、C/C等后端开发岗位有非常明晰的学习路线&#xff0c;网路安全更多是靠自己摸索&#xff0c;要学的东西又杂又多&#xff0c;难成体系。…

会话跟踪cookie和session

什么是会话跟踪技术 会话&#xff1a;用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可能包含多次请求和响应。 会话跟踪&#xff1a;一种维护浏览器状态的方法&#xff0c;服务器需…

【无标题】 Vue 路由库Router 【重点】 - 安装 - 基本使用 - 路由配置 - 路由模式 - 路由传递参数 - 路由内置对象 - 路由守卫

0.0 课程介绍 Vue 路由库Router 【重点】 安装基本使用路由配置路由模式路由传递参数路由内置对象路由守卫 Vue的内置API 【掌握】 ref Vue.set Vue.nextTick Vue.filter Vue.component Vue.use Vue.directive 1.0 Vue的路由Router 【重点】 1.1 路由作用 进行页面…

Doris---数据表设计

表的基本概念 1 Row & Column 一张表包括行&#xff08;Row&#xff09;和列&#xff08;Column&#xff09;&#xff1b; Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。 doris中的列分为两类&#xff1a;key列和value列 key列在doris中有两种作用&…

【Android】【Java】播放多段视频切换时出现的短暂黑屏现象处理

逻辑描述 当A视频正在播放中&#xff0c;点击A视频跳过A视频剩余内容并加载B视频 Bug描述 在切换视频时&#xff0c;显示短暂黑屏&#xff0c;如下图所示&#xff1a; 解决思路 当看到这个bug出现时&#xff0c;第一反应是第二段视频在初始化视频时有一定的延时&#xff…

关于C语言杂记7

文章目录 关于数组二级指针字符串字符串的输入与输出字符串函数1、字符数组的输入和输出&#xff1a;2、5种相关函数&#xff1a; 关于数组 char *fruits[LEN] { // 定义一个字符指针数组&#xff0c;包含LEN个元素"apple", // 初始化第1个元素为字符串"a…

【C++】unordered_map和unordered_set的使用

文章目录 前言一、unordered_map的使用及性能测试二、unordered_set的使用 1.习题练习总结 前言 unordered 系列关联式容器 &#xff1a; 在 C98 中&#xff0c; STL 提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到O&#xff08;logN&#xff09; &a…

SDN — Google B4 SDN WAN 网络架构

目录 文章目录 目录Google B4 SDN WAN 网络B4 网络架构物理设备层局部网络控制层全局控制层Hybrid SDN 模式Google B4 SDN WAN 网络 Google 的 WAN 有 2 张网络(Two Backbones): B2(I-Scale Network):数据中心互联 Internet(POP)的网络,用于面向 Internet 用户访问,…

大象转身只需点点鼠标,爆火 DragGAN 原理浅析

出品人&#xff1a;Towhee 技术团队 作者&#xff1a;张晨 DragGAN介绍 合成满足用户需求的视觉内容往往需要对生成对象的姿势、形状、表情和布局进行灵活和精确的控制。 现有方法通过手动注释的训练数据或先前的 3D 模型获得生成对抗网络 (GAN) 的可控性&#xff0c;这通常缺乏…

保姆级教程:手把手教你拿下雅思写作7分

在留学路上&#xff0c;雅思考试是绕不开的一道坎。然而&#xff0c;众所周知&#xff0c;雅思学习热度高&#xff0c;学习难度大&#xff0c;而且很多人找不到合适的学习方法。在这里&#xff0c;我们以雅思写作中的大作文为例&#xff0c;从大作文的结构拆解、学习的任务拆分…