一、Elasticsearch概念

  • Node(节点):单个的装有Elasticsearch服务并且提供故障转移和扩展的服务器。
  • Cluster(集群):一个集群就是由一个或多个node组织在一起,共同工作,共同分享整个数据具有负载均衡功能的集群。
  • Document(文档):  一个文档是一个可被索引的基础信息单元。
  • Index(索引):索引就是一个拥有几分相似特征的文档的集合。
  • Type(类型):一个索引中,你可以定义一种或多种类型。
  • Field(列): Field是Elasticsearch的最小单位,相当于数据的某一列。
  • Shards(分片):Elasticsearch将索引分成若干份,每个部分就是一个shard。
  • Replicas (复制):Replicas是索引一份或多份拷贝。

分片与复制的理解(如3个分片1个复制)

二、网络环境

三、elasticsearch安装(三台机)

1、安装JDK
$ yum install -y java-1.8.0-openjdk-devel

2、下载elasticsearch
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.2-x86_64.rpm

3、安装elasticsearch
rpm -ivh elasticsearch-7.11.2-x86_64.rpm

4、安装生成文件
[root@k8s-master elasticsearch]# ll /etc/elasticsearch/
total 40
-rw-rw---- 1 root elasticsearch   199 Mar 16 02:56 elasticsearch.keystore
-rw-rw---- 1 root elasticsearch  3066 Mar 16 05:31 elasticsearch.yml     #配置文件
-rw-rw---- 1 root elasticsearch  3176 Mar 16 04:27 jvm.options              #内存设置文件
drwxr-s--- 2 root elasticsearch     6 Mar  6 01:06 jvm.options.d
-rw-rw---- 1 root elasticsearch 18612 Mar  6 01:03 log4j2.properties
-rw-rw---- 1 root elasticsearch   473 Mar  6 01:03 role_mapping.yml
-rw-rw---- 1 root elasticsearch   197 Mar  6 01:03 roles.yml
-rw-rw---- 1 root elasticsearch     0 Mar  6 01:03 users
-rw-rw---- 1 root elasticsearch     0 Mar  6 01:03 users_roles

/usr/share/elasticsearch                          # elasticsearch 默认安装目录
/var/lib/elasticsearch                               # 数据的默认存放位置

5、创建存放数据与日志信息的文件夹
$ mkdir -p /app/elasticsearch/data
$ mkdir -p /app/elasticsearch/log
$ chown -R elasticsearch.elasticsearch /app/elasticsearch/*

6、设置开机启动与启动服务
$ systemctl enable elasticsearch
$ systemctl start elasticsearch

四 、配置文件修改(设置集群)

1、node-1配置文件

[root@k8s-master elasticsearch]# cat /etc/elasticsearch/elasticsearch.yml | grep -v ^#
cluster.name: my-els         #集群名称
node.name: node-1           #节点名称
path.data: /app/elasticsearch/date       #数据存放位置
path.logs: /app/elasticsearch/log          #日志存放位置
network.host: 10.3.153.200                   #主机IP
http.port: 9200                                       #es监听的端口
bootstrap.memory_lock: true   
#Es在内存不够JVM开启swapping的时候,表现得会很差,所以为了避免这个问题,将该属性设为true
discovery.zen.ping.unicast.hosts: ["10.3.153.200", "10.3.153.201","10.3.153.202"] 
#es的单播自动发现主机机制
discovery.zen.minimum_master_nodes: 3   
#设置参数来保证集群中的节点可以通知其他N个有master资格节点![](https://s4.51cto.com/images/blog/202103/19/19ab7ee63faf186bfc3f5b87721bb3b1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
cluster.initial_master_nodes: ["10.3.153.200", "10.3.153.201","10.3.153.202"] #master节点初始化
http.cors.enabled: true     #是否支持跨域
http.cors.allow-origin: "*"    #当设置允许跨域,默认为*,表示支持所有域名
http.cors.allow-credentials: true     
#是否返回设置的跨域Access-Control-Allow-Credentials头,如果设置为true,那么会返回给客户端

2、node-2配置文件

[root@k8s-slave1 ~]# cat /etc/elasticsearch/elasticsearch.yml | grep -v ^#
cluster.name: my-els
node.name: node-2
path.data: /app/elasticsearch/date
path.logs: /app/elasticsearch/log
network.host: 10.3.153.201
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.3.153.200", "10.3.153.201","10.3.153.202"]
discovery.zen.minimum_master_nodes: 3
cluster.initial_master_nodes: ["10.3.153.200", "10.3.153.201","10.3.153.202"]
http.cors.enabled: true   
http.cors.allow-origin: "*"
http.cors.allow-credentials: true

3、node-3配置文件

[root@k8s-slave2 ~]# cat /etc/elasticsearch/elasticsearch.yml | grep -v ^#
cluster.name: my-els
node.name: node-3
path.data: /app/elasticsearch/date
path.logs: /app/elasticsearch/log
network.host: 10.3.153.202
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.3.153.200", "10.3.153.201","10.3.153.202"]
discovery.zen.minimum_master_nodes: 3
cluster.initial_master_nodes: ["10.3.153.200", "10.3.153.201","10.3.153.202"]
http.cors.enabled: true   
http.cors.allow-origin: "*"
http.cors.allow-credentials: true

4、重启各个主机的es服务

$ systemctl restart elasticsearch

五、验证验群的状态

#查看集群状态

  • green,绿色。这代表所有的主分片和副本分片都已分配。你的集群是 100% 可用的。
  • yellow,黄色。所有的主分片已经分片了,但至少还有一个副本是缺失的。不会有数据丢失,所以搜索结果依然是完整的。不过,你的高可用性在某种程度上被弱化。如果更多的分片消失,你就会丢数据了。所以可把 yellow 想象成一个需要及时调查的警告。
  • red,红色。至少一个主分片以及它的全部副本都在缺失中。这意味着你在缺少数据:搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。

#查看各节点状态