一、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,红色。至少一个主分片以及它的全部副本都在缺失中。这意味着你在缺少数据:搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。
#查看各节点状态