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

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>三台真实服务器:

1.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id)
$ cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
2

2.cpu核数:单块CPU上面能处理数据的芯片组的数量,如双核、四核等 (cpu cores)
cat /proc/cpuinfo| grep "cpu cores"| uniq

3.逻辑cpu数:简单来说,它可使处理器中的1颗内核,如2颗内核那样在操作系统中发挥作用。
$ cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores       : 8


4.查看cpu信息(型号)
$ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
     32  Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz

5.查看服务器版本号
$ more /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

  

          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下载

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

  

4.ES集群安装

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

注意:

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

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

     改变其权限

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

  

 

      防火墙状态

l   firewall-cmd --state 

 运行则关闭防火墙

# 临时关闭防火墙

systemctl stop firewalld.service


# 永久关闭防火墙`

systemctl disable firewalld


 

selinux状态
查看selinux命令

/usr/sbin/sestatus 

临时关闭

setenforce 0 

永久关闭

vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled,保存后退出

 

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

打开文件vi /etc/security/limits.d/20-nproc.conf
was soft nproc 20000
*      soft nproc 4096
root soft nproc unlimited



修改完保存即可

 

 同时修改
 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

  

  

   

       查看修改完结果

# ulimit -a

  

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

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解压安装包

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

  

4.1.4进入文件,改其env

vim /data/disk04/es/elasticsearch-7.9.2/bin/elasticsearch-env

在文件第一行加入下面变量

JAVA_HOME="/data/disk04/es/elasticsearch-7.9.2/jdk/"

  

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

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

  改之前

    改之后

 

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

  

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

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: "*"

  

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

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

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

  

4.1.8配置环境变量

vim /etc/profile 
#es环境变量
export ES_HOME=/data/disk04/es/elasticsearch-7.9.2
export PASH=$ES_HOME/bin:$PATH

source /etc/profile

  

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

vi /data/disk04/es/elasticsearch-7.9.2/config/jvm.options



-Xms31g
-Xmx31g

  

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

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

 

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

 

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

 

 

 

4.1.10查看es节点

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 2022-02-10 17:39  不吃葡萄楞吐皮  阅读(6118)  评论(0编辑  收藏  举报