02-Elasticsearch的集群

1. 安装Elasticsearch的集群

使用软件列表:

  1. elasticsearch-6.8.0.zip
  2. elasticsearch-analysis-ik-6.8.0.zip
  3. 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份来做集群,目录如下
在这里插入图片描述

1.1 配置集群

编辑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

下面的信息包括:

  1. 集群的状态(status):red红表示集群不可用,有故障。yellow黄表示集群不可靠但可用,一般单节点时就是此状态。green正常状态,表示集群一切正常。

  2. 节点数(node.total):节点数,这里是2,表示该集群有两个节点。

  3. 数据节点数(node.data):存储数据的节点数,这里是2。数据节点在Elasticsearch概念介绍有。

  4. 分片数(shards):这是12,表示我们把数据分成多少块存储。

  5. 主分片数(pri):primary shards,这里是6,实际上是分片数的两倍,因为有一个副本,如果有两个副本,这里的数量应该是分片数的三倍,这个会跟后面的索引分片数对应起来,这里只是个总数。

  6. 激活的分片百分比(active_shards_percent):这里可以理解为加载的数据分片数,只有加载所有的分片数,集群才算正常启动,在启动的过程中,如果我们不断刷新这个页面,我们会发现这个百分比会不断加大。

查看集群索引数
curl http://127.0.0.1:9200/_cat/indices?v

下面的信息包括:

  1. 索引健康(health),green为正常,yellow表示索引不可靠(单节点),red索引不可用。与集群健康状态一致。

  2. 状态(status),表明索引是否打开。

  3. 索引名称(index),这里有.kibana和school。

  4. uuid,索引内部随机分配的名称,表示唯一标识这个索引。

  5. 主分片(pri),.kibana为1,school为5,加起来主分片数为6,这个就是集群的主分片数。

  6. 文档数(docs.count),school在之前的演示添加了两条记录,所以这里的文档数为2。

  7. 已删除文档数(docs.deleted),这里统计了被删除文档的数量。

  8. 索引存储的总容量(store.size),这里school索引的总容量为6.4kb,是主分片总容量的两倍,因为存在一个副本。

  9. 主分片的总容量(pri.store.size),这里school的主分片容量是7kb,是索引总容量的一半

查看集群所在磁盘的分配状况
curl http://127.0.0.1:9200/_cat/allocation?v

返回的信息包括:

  1. 分片数(shards),集群中各节点的分片数相同,都是6,总数为12,所以集群的总分片数为12。

  2. 索引所占空间(disk.indices),该节点中所有索引在该磁盘所点的空间。

  3. 磁盘使用容量(disk.used),已经使用空间41.6gb

  4. 磁盘可用容量(disk.avail),可用空间4.3gb

  5. 磁盘总容量(disk.total),总共容量45.9gb

  6. 磁盘便用率(disk.percent),磁盘使用率90%。

查看集群的节点
http://127.0.0.1:9200/_cat/nodes?v

通过该连接返回了集群中各节点的情况。这些信息中比较重要的是master列,带*星号表明该节点是主节点。带-表明该节点是从节点。

另外还是heap.percent堆内存使用情况,ram.percent运行内存使用情况,cpu使用情况

1.2 安装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

http://localhost:9100/
在这里插入图片描述

1.3 分词插件的安装

将分词插件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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RzQ31Cem-1576226774655)(../img/image-20191213161902717.png)]
编辑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
在这里插入图片描述

要使用Docker-compose搭建Elasticsearch集群,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Docker和Docker-compose。 2. 创建一个名为docker-compose.yml的文件,并在其中定义Elasticsearch集群的配置。你可以使用以下示例作为参考: ``` version: '3' services: es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.15.2 container_name: es01 environment: - node.name=es01 - cluster.name=my-cluster - discovery.seed_hosts=es02,es03 - cluster.initial_master_nodes=es01,es02,es03 ports: - 9200:9200 volumes: - esdata01:/usr/share/elasticsearch/data es02: image: docker.elastic.co/elasticsearch/elasticsearch:7.15.2 container_name: es02 environment: - node.name=es02 - cluster.name=my-cluster - discovery.seed_hosts=es01,es03 - cluster.initial_master_nodes=es01,es02,es03 volumes: - esdata02:/usr/share/elasticsearch/data es03: image: docker.elastic.co/elasticsearch/elasticsearch:7.15.2 container_name: es03 environment: - node.name=es03 - cluster.name=my-cluster - discovery.seed_hosts=es01,es02 - cluster.initial_master_nodes=es01,es02,es03 volumes: - esdata03:/usr/share/elasticsearch/data volumes: esdata01: esdata02: esdata03: ``` 3. 在终端中,进入包含docker-compose.yml文件的目录,并运行以下命令启动Elasticsearch集群: ``` docker-compose up -d ``` 这将会启动一个包含三个Elasticsearch节点的集群。 4. 使用以下命令验证集群是否成功启动: ``` docker ps ``` 你应该能够看到三个运行中的Elasticsearch容器,每个容器对应一个节点。 现在,你已经成功使用Docker-compose搭建了一个Elasticsearch集群。你可以通过访问http://localhost:9200来访问集群Elasticsearch节点。 #### 引用[.reference_title] - *1* *3* [Elasticsearch (一) 基于Docker-compose 搭建集群](https://blog.csdn.net/m0_67390963/article/details/124240861)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【Docker-compose Elasticsearch搭建集群】](https://blog.csdn.net/qq_39127761/article/details/126221224)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值