作者:Carrie
出处:https://home.cnblogs.com/u/hanjiali
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
随笔 - 138,  文章 - 0,  评论 - 4,  阅读 - 93089

1.简介  

首先引用 Elasticsearch (下文简称 ES)官网的一段描述:

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

本文主要介绍 Elasticsearch 集群的搭建。通过在一台服务器上创建 3 个 ES 实例来创建一个建议的 ES 集群。

Elasticsearch/ES

官方的Elasticsearch Reference 提供了不同版本的文档连接,真是赞!

如果英文的不想看,还提供了中文版的 Elasticsearch 2.x: 权威指南,版本不是最新的,但是了解基本概念也是有帮助的。

Elasticsearch 7.x 包里自包含了 OpenJDK 的包。如果你想要使用你自己配置好的 Java 版本,需要设置 JAVA_HOME 环境变量 —— 参考

官方文档 Set up Elasticsearch 有各个 OS 的安装指导,页面 Installing Elasticsearch 中提供了多种安装包对应的指导链接!

本文选择绿色安装包的的方式(tar.gz)安装。

由于实验机器有限,可以在同一台机器上模拟出 3 个节点,安装 ES 集群

2.环境

         1>三台真实服务器:

  

          2>ES版本:elasticsearch-7.9.2-linux-x86_64.tar

          3>kibana版本:kibana-7.9.2-linux-x86_64.tar

              因是实体机器,所以这里的三台机器用1,2,3机器表示

3.ES下载

1
2
链接:https://pan.baidu.com/s/1K7XGf0ewWeabIcHBHnCGAw
提取码:y2my

  

4.ES集群安装

4.1调整linux系数相关参数设置

注意:

ES最新版本需要jdk11,需要修改环境变量

所有版本不能用root用户跑ES

     改变其权限

1
chown 用户:用户组 elasticsearch-7.9.2-linux-x86_64.tar.gz

  

 

      防火墙状态

1
2
3
4
5
6
7
8
9
10
11
12
l   firewall-cmd --state
 
 运行则关闭防火墙
 
# 临时关闭防火墙
 
systemctl stop firewalld.service
 
 
# 永久关闭防火墙`
 
systemctl disable firewalld

 

1
selinux状态
1
2
3
4
5
6
7
8
9
10
11
12
查看selinux命令
 
/usr/sbin/sestatus
 
临时关闭
 
setenforce 0
 
永久关闭
 
vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled,保存后退出
1
 

 

4.1.1修改最大文件数和锁内存限制以及用户最大线程数

1
2
3
4
5
6
7
8
打开文件vi /etc/security/limits.d/20-nproc.conf
was soft nproc 20000
*      soft nproc 4096
root soft nproc unlimited
 
 
 
修改完保存即可

 

1
同时修改
1
2
3
4
5
6
7
8
9
vi /etc/security/limits.conf
 
# End of file
* soft nofile 300000
* hard nofile 300000
* soft nofile 65536
* hard nofile 65536
* hard memlock unlimited
* soft memlock unlimited

  

  

   

       查看修改完结果

1
# ulimit -a

  

4.1.2更改一个进城能拥有的最大内存区域限制,编辑swappiness禁用交换分区

1
2
3
4
5
6
7
8
9
10
11
vi /etc/sysctl.conf
 
vm.max_map_count=262144
 
vm.swappiness=1
 
# sysctl -p
 
vm.max_map_count = 262144
 
vm.swappiness = 1

  

4.1.3解压安装包

1
tar -zxvf elasticsearch-7.9.2-linux-x86_64.tar.gz

  

4.1.4进入文件,改其env

1
2
3
4
5
vim /data/disk04/es/elasticsearch-7.9.2/bin/elasticsearch-env
 
在文件第一行加入下面变量
 
JAVA_HOME="/data/disk04/es/elasticsearch-7.9.2/jdk/"

  

4.1.5修改垃圾回收器需要转换(不转换不会报错,但是会有警告)

1
vim /data/disk04/es/elasticsearch-7.9.2/config/jvm.options

  改之前

    改之后

 

1
2
3
4
5
6
以 – 开头的行被视为jvm版本应用的选项
-Xmx2g
以n:-开头的行被视为依赖数字指明的JVM版本
8:- -Xmx2g
以n-n开始的行是指明要求了JVM的版本
8-13

  

4.1.6修改 yml文件(以下标明机器与节点只是例子,不应用本次实验)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
vi  /data/disk04/es/elasticsearch-7.9.2/config/elasticsearch.yml
 
******集群名**********
#集群的名字,每个节点的拥有同一个名字才能认为是同一个集群
#cluster.name: my-application
cluster.name: es-cluster
 
*****节点名字**********
#节点的名字,保证唯一,每个节点不同,需要修改
#node.name: node-1
node.name: node-1(第一个节点)
node.name: node-2 (第二个节点文件)
node.name: node-3(第三个节点文件)
 
******自带属性 ********
#自定义的属性,这是官方文档中自带的
 
# Add custom attributes to the node:
  node.attr.rack: r1
 
*********网络****** ***
#设置成 本机 或 0.0.0.0即可
 
http.cors.enabled: true
http.cors.allow-origin: "*"
http.port: 9200
transport.tcp.port: 9300
 
******日志数据存放 *********
(目录需要有普通用户的权限)
#根据自己的习惯配置data文件夹
#path.data: /path/to/data
 path.data: /app/elasticsearch-7.9.2/data
# Path to log files:
 
#path.logs: /path/to/logs
 path.logs: /app/elasticsearch-7.9.2/logs/logs
*******内存 **************
#开启启动es时锁定内存
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
 bootstrap.memory_lock: true
 
***********初始列表**********
第一个节点
discovery.seed_hosts: ["10.135.139.11:9200", "10.135.139.12:9200", "10.135.139.13:9200"]
 cluster.initial_master_nodes: ["es-bd1701"]
 client.transport.ping_timeout: 60s
第二个节点
discovery.seed_hosts: ["10.135.139.11:9200", "10.135.139.12:9200", "10.135.139.13:9200"]
 cluster.initial_master_nodes: ["es-bd1702"]
 client.transport.ping_timeout: 60s
第三个节点
discovery.seed_hosts: ["10.135.139.11:9200", "10.135.139.12:9200", "10.135.139.13:9200"]
 cluster.initial_master_nodes: ["es-bd1703"]
 client.transport.ping_timeout: 60s
**********跨第三方插件访问 *************
 
http.cors.enabled: true
http.cors.allow-origin: "*"

  

例如本次实验的第一个节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cluster.name: qqd-es-cluster
node.name: 节点名
path.data: /data/disk04/es/es_data
path.logs: /data/disk04/es/es_logs
node.master: true
network.host:节点IP
node.data: true
http.port: 9200
transport.tcp.port: 9300
transport.tcp.compress: true
node.attr.rack: r1
transport.profiles.default.port: 9300
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["IP1:节点1", "IP2:节点2", "IP3:节点3"]
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
cluster.initial_master_nodes: ["节点1", "节点2", "节点3"]
gateway.recover_after_nodes: 3
http.cors.enabled: true
http.cors.allow-origin: "*"

  

4.1.7配置/etc/hosts

1
2
3
节点1ip  节点1名称
节点2ip  节点2名称
节点3ip  节点3名称

  

4.1.8配置环境变量

1
2
3
4
vim /etc/profile
#es环境变量
export ES_HOME=/data/disk04/es/elasticsearch-7.9.2
export PASH=$ES_HOME/bin:$PATH<br><br>source /etc/profile

  

4.1.8修改jvm(最好不要超过机器内存的一半或者32以下)

1
2
3
4
5
6
vi /data/disk04/es/elasticsearch-7.9.2/config/jvm.options
 
 
 
-Xms31g
-Xmx31g

  

4.1.8启动es集群(可能会需要点时间)

1
/data/disk04/es/elasticsearch-7.9.2/bin/elasticsearch

 

4.1.9查看es集群(*号为主节点)

 

1
http://ip:9200/_cat/nodes?pretty

 

 

 

4.1.10查看es节点

1
http://ip:9200/_cat/nodes?pretty

  

 

 

集群的状态(status):red红表示集群不可用,有故障。yellow黄表示集群不可靠但可用,一般单节点时就是此状态。green正常状态,表示集群一切正常。
节点数(node.total):节点数,这里是3,表示该集群有三个节点。
数据节点数(node.data):存储数据的节点数,这里是3。数据节点在Elasticsearch概念介绍有。
分片数(shards : 表示我们把数据分成多少块存储。
主分片数(pri):primary shards,实际上是分片数的两倍,因为有一个副本,如果有两个副本,这里的数量应该是分片数的三倍,这个会跟后面的索引分片数对应起来,这里只是个总数。
激活的分片百分比(active_shards_percent):这里可以理解为加载的数据分片数,只有加载所有的分片数,集群才算正常启动,在启动的过程中,如果我们不断刷新这个页面,我们会发现这个百分比会不断加大。

posted on   不吃葡萄楞吐皮  阅读(6226)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示