02-Elasticsearch的集群
1. 安装Elasticsearch的集群
使用软件列表:
- elasticsearch-6.8.0.zip
- elasticsearch-analysis-ik-6.8.0.zip
- elasticsearch-head-master.zip
在安装Elasticsearch引擎之前,必须安装ES需要的软件环境,安装Java JDK和配置JAVA_HOME环境变量,Elasticsearch5.0以上版本需要安装jdk1.8,其他版本安装jdk1.7即可
软件包下载:ElasticSearch6.8.0安装包.7z
将elasticsearch-6.8.0.zip解压2份来做集群,目录如下
配置集群
编辑D:\elasticsearch-6.8.0-1\config\elasticsearch.yml
#表示集群标识,同一个集群中的多个节点使用相同的标识
cluster.name: my-application
#节点名称
node.name: node-1
#数据存储目录, 需要手动创建
path.data: D://elasticsearch-6.8.0-1/data
#日志目录,需要手动创建
path.logs: D://elasticsearch-6.8.0-1/logs
#节点所绑定的IP地址,并且该节点会被通知到集群中的其他节点
# network.host: 127.0.0.1
#集群通信端口
transport.tcp.port: 9300
#对外提供服务的http端口,默认为9200
http.port: 9200
#集群中主节点的初始列表,当主节点启动时会使用这个列表进行非主节点的监测
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
#下面这个参数控制的是,一个节点需要看到的具有master节点资格的最小数量,然后才能在集群中做操作。官方推荐值是(N/2)+1;
#其中N是具有master资格的节点的数量(我们的情况是2,因此这个参数设置为1)
#但是:但对于只有2个节点的情况,设置为2就有些问题了,一个节点DOWN掉后,肯定连不上2台服务器了,这点需要注意
discovery.zen.minimum_master_nodes: 1
# 允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
# http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
编辑D:\elasticsearch-6.8.0-2\config\elasticsearch.yml
#表示集群标识,同一个集群中的多个节点使用相同的标识
cluster.name: my-application
#节点名称
node.name: node-2
#数据存储目录, 需要手动创建
path.data: D://elasticsearch-6.8.0-2/data
#日志目录,需要手动创建
path.logs: D://elasticsearch-6.8.0-2/logs
#节点所绑定的IP地址,并且该节点会被通知到集群中的其他节点
# network.host: 127.0.0.1
#集群通信端口
transport.tcp.port: 9301
#对外提供服务的http端口,默认为9200
http.port: 9201
#集群中主节点的初始列表,当主节点启动时会使用这个列表进行非主节点的监测
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
#下面这个参数控制的是,一个节点需要看到的具有master节点资格的最小数量,然后才能在集群中做操作。官方推荐值是(N/2)+1;
#其中N是具有master资格的节点的数量(我们的情况是2,因此这个参数设置为1)
#但是:但对于只有2个节点的情况,设置为2就有些问题了,一个节点DOWN掉后,肯定连不上2台服务器了,这点需要注意
discovery.zen.minimum_master_nodes: 1
# 允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
# http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
启动Elasticsearch
cd D:\elasticsearch-6.8.0-1\bin
elasticsearch.bat
cd D:\elasticsearch-6.8.0-2\bin
elasticsearch.bat
查看是否启动成功
curl http://127.0.0.1:9200
{
"name": "node-1",
"cluster_name": "my-application",
"cluster_uuid": "7SV5LlKfQfSj6T7IvWrcXw",
"version": {
"number": "6.8.0",
"build_flavor": "default",
"build_type": "zip",
"build_hash": "65b6179",
"build_date": "2019-05-15T20:06:13.172855Z",
"build_snapshot": false,
"lucene_version": "7.7.0",
"minimum_wire_compatibility_version": "5.6.0",
"minimum_index_compatibility_version": "5.0.0"
},
"tagline": "You Know, for Search"
}
查看集群状态
curl http://127.0.0.1:9200/_cat/health?v
下面的信息包括:
-
集群的状态(status):red红表示集群不可用,有故障。yellow黄表示集群不可靠但可用,一般单节点时就是此状态。green正常状态,表示集群一切正常。
-
节点数(node.total):节点数,这里是2,表示该集群有两个节点。
-
数据节点数(node.data):存储数据的节点数,这里是2。数据节点在Elasticsearch概念介绍有。
-
分片数(shards):这是12,表示我们把数据分成多少块存储。
-
主分片数(pri):primary shards,这里是6,实际上是分片数的两倍,因为有一个副本,如果有两个副本,这里的数量应该是分片数的三倍,这个会跟后面的索引分片数对应起来,这里只是个总数。
-
激活的分片百分比(active_shards_percent):这里可以理解为加载的数据分片数,只有加载所有的分片数,集群才算正常启动,在启动的过程中,如果我们不断刷新这个页面,我们会发现这个百分比会不断加大。
查看集群索引数
curl http://127.0.0.1:9200/_cat/indices?v
下面的信息包括:
-
索引健康(health),green为正常,yellow表示索引不可靠(单节点),red索引不可用。与集群健康状态一致。
-
状态(status),表明索引是否打开。
-
索引名称(index),这里有.kibana和school。
-
uuid,索引内部随机分配的名称,表示唯一标识这个索引。
-
主分片(pri),.kibana为1,school为5,加起来主分片数为6,这个就是集群的主分片数。
-
文档数(docs.count),school在之前的演示添加了两条记录,所以这里的文档数为2。
-
已删除文档数(docs.deleted),这里统计了被删除文档的数量。
-
索引存储的总容量(store.size),这里school索引的总容量为6.4kb,是主分片总容量的两倍,因为存在一个副本。
-
主分片的总容量(pri.store.size),这里school的主分片容量是7kb,是索引总容量的一半
查看集群所在磁盘的分配状况
curl http://127.0.0.1:9200/_cat/allocation?v
返回的信息包括:
-
分片数(shards),集群中各节点的分片数相同,都是6,总数为12,所以集群的总分片数为12。
-
索引所占空间(disk.indices),该节点中所有索引在该磁盘所点的空间。
-
磁盘使用容量(disk.used),已经使用空间41.6gb
-
磁盘可用容量(disk.avail),可用空间4.3gb
-
磁盘总容量(disk.total),总共容量45.9gb
-
磁盘便用率(disk.percent),磁盘使用率90%。
查看集群的节点
http://127.0.0.1:9200/_cat/nodes?v
通过该连接返回了集群中各节点的情况。这些信息中比较重要的是master列,带*星号表明该节点是主节点。带-表明该节点是从节点。
另外还是heap.percent堆内存使用情况,ram.percent运行内存使用情况,cpu使用情况
安装ElasticSearch-head
安装node环境, npm及 grunt
并验证是否安装
解压elasticsearch-head-master.zip到D盘,
cd D:\elasticsearch-head-master
npm config set registry https://registry.npm.taobao.org
npm install
修改head参数
编辑D:\elasticsearch-head-master\Gruntfile.js, 添加hostname
启动head
cd D:\elasticsearch-head-master
grunt server
访问head
分词插件的安装
将分词插件elasticsearch-analysis-ik-6.8.0分别挤压到如下目录:
重启ES即可
1.4 Elasticsearch配置用户认证
生产中,需要对es进行管理,首先要有权限管理配置,否则任何人,只要能访问到es主机,知道端口,都可以对他进行管理操作,这是非常危险的。
如果是生产中,需要添加es认证,需要停服务,这个操作,需要提前跟开发沟通好,最好选择业务低峰期。这样对用户的影响就非常小。
生成秘钥
这里把elasticsearch-6.8.0-1当做主, 在主节点执行
cd D:\elasticsearch-6.8.0-1\bin
elasticsearch-certutil.bat ca
elasticsearch-certutil.bat cert --ca elastic-stack-ca.p12
执行成功后会生成2个文件,elastic-certificates.p12和elastic-stack-ca.p12, 在主节点创建cert目录, 如下:
然后把主节点的cert目录复制到每一个子节点相同位置
秘钥密码认证
在所有节点执行
cd D:\elasticsearch-6.8.0-1\bin
elasticsearch-keystore.bat add xpack.security.transport.ssl.keystore.secure_password
elasticsearch-keystore.bat add xpack.security.transport.ssl.truststore.secure_password
cd D:\elasticsearch-6.8.0-2\bin
elasticsearch-keystore.bat add xpack.security.transport.ssl.keystore.secure_password
elasticsearch-keystore.bat add xpack.security.transport.ssl.truststore.secure_password
修改配置文件
编辑D:\elasticsearch-6.8.0-1\config\elasticsearch.yml, 添加如下内容
xpack.license.self_generated.type: basic
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: cert/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: cert/elastic-certificates.p12
编辑D:\elasticsearch-6.8.0-2\config\elasticsearch.yml, 添加内容与上面相同
重新服务
cd D:\elasticsearch-6.8.0-1\bin
elasticsearch.bat
cd D:\elasticsearch-6.8.0-2\bin
elasticsearch.bat
生成账号密码
在其中一台上执行
cd D:\elasticsearch-6.8.0-1\bin
elasticsearch-setup-passwords.bat auto
## 结果如下
Changed password for user apm_system
PASSWORD apm_system = NMfUNIIb81N6Vt36oqRN
Changed password for user kibana
PASSWORD kibana = z1Aer4r1IydMYzGL5krw
Changed password for user logstash_system
PASSWORD logstash_system = C0LHshigJeP0QFYKqirI
Changed password for user beats_system
PASSWORD beats_system = 00qFKynbJBrz4NGbwcMO
Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = SY4IHeXPDpKtWCr7OoVQ
Changed password for user elastic
PASSWORD elastic = SZPNKIQcytybIVD4sXF6
此时我们再执行,就需要账号和密码,填入之前生成的elastic = SZPNKIQcytybIVD4sXF6
即可
curl http://127.0.0.1:9200
访问head
http://localhost:9100/?auth_user=elastic&auth_password=SZPNKIQcytybIVD4sXF6
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性