【ElasticSearch教程】--- Elasticsearch Windows 集群部署(二十一)

Windows 集群安装

在实践中ES服务为了高可用,一般读会采用集群的方式进行部署。下面在windows环境中测试集权部署,其实ES是java编写的也是可以跨平台运行。所以在Linux中部署也是类似的。

基本环境准备

首先创建一个elasticsearch-cluster文件夹,在文件夹中复制3个es服务。分别为node-9201,node-9202,node-9201.如下图:
es节点服务文件列表

配置节点9201

  1. 首先修改node-9201节点配置文件config/elasticsearch.yml配置文件。
    • 配置集群应用名称cluster.name,这个必须集群中所有节点的名称配置为一致,这里就直接用my-application.
    • 配置节点名称node.name,这里配置为node-9201.
    • 配置节点是否可以作为主节点,node.master。这里将其配置为可以做为主节点,node.master: true
    • 配置节点是否可以作为数据节点node.data。这里也将其配置为可以做为数据节点,node.data: true
    • 配置网络监听的IP,这里可以直接配置为localhost, 配置结果为:network.host: localhost。 这个配置项不配置应该就是监听所有IP
    • 配置网络监听的端口,http.port,这里将其配置为9201,默认是9200。这个就是restful api的监听端口。
    • 配置节点间通讯的端口transport.tcp.port,配置为9301。默认是9300
    • 增加可跨域的配置 http.cors.enable:truehttp.cors.allow-origin: "*"。这些配置应该是和集群没关系的。
  2. 配置完后得到的最后的结果为
cluster.name: my-application
node.name: node-9201
node.master: true
node.data: true
network.host: localhost
http.port: 9201
transport.tcp.port: 9301

# 跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
  1. 启动node-9201。启动的日志可以看到有了节点名称,集权名称,以及他所发布的通信地址的输出日志。
[2022-05-19T21:16:33,608][INFO ][o.e.n.Node               ] [node-9201] node name [node-9201], node ID [5H3KIUIuTyqaFcc3pNoWAA], cluster name [my-application]
......
publish_address {localhost/127.0.0.1:9301}, bound_addresses {127.0.0.1:9301}, {[::1]:9301}
  1. 使用PostMan测试集群的健康状态。restful api地址为http://localhost:9201/_cluster/health。测试结果如下:
    集群健康状态查询
    返回的结果内容为
{
    "cluster_name": "my-application",
    "status": "green",
    "timed_out": false,
    "number_of_nodes": 1,
    "number_of_data_nodes": 1,
    "active_primary_shards": 0,
    "active_shards": 0,
    "relocating_shards": 0,
    "initializing_shards": 0,
    "unassigned_shards": 0,
    "delayed_unassigned_shards": 0,
    "number_of_pending_tasks": 25,
    "number_of_in_flight_fetch": 0,
    "task_max_waiting_in_queue_millis": 413,
    "active_shards_percent_as_number": 100.0
}

可从上看到核心信息, statusgreen,也就是OK的。集群节点数number_of_nodes,数据节点数目number_of_data_nodes,目前都是一个1。因为我们只启用了一个节点。

配置节点9202

配置节点9201之后配置9202就比较简单了, 其他配置都类似. 相对而言不一致的就是:

  1. 节点名称node.name: node-9202.
  2. http端口9202,http.port: 9202
  3. 节点间通讯端口9302,配置为:transport.tcp.port: 9302

另外需要增加节点发现的配置。

  1. 配置可以发现的主机,这个时候已经有9201了,所以配置让他去发现9201,配置为discovery.seed_hosts: ["localhost:9301"]
  2. 发现超时时长配置discovery.zen.fd.ping_timeout: 1m
  3. 发现重试次数,discovery.zen.fd.ping_retries: 5

综上,最后的配置内容如下:

cluster.name: my-application
node.name: node-9202
node.master: true
node.data: true
network.host: localhost
http.port: 9202
transport.tcp.port: 9302

# --------------------------------- Discovery ----------------------------------
discovery.seed_hosts: ["localhost:9301"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5

# 跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

继续启动节点9202。等启动完成之后,再检测集群的健康状态。
健康状态检测
可从上看到核心信息, statusgreen,也就是OK的。集群节点数number_of_nodes,数据节点数目number_of_data_nodes,目前变为了2。因为我们已经启动了2个节点了。

配置节点9203

与前两个节点类似,我们也要修改节点名称相应的端口:

  1. 节点名称node.name: node-9203.
  2. http端口9202,http.port: 9203
  3. 节点间通讯端口9303,配置为:transport.tcp.port: 9303

另外需要增加节点发现的配置。

  1. 配置可以发现的主机,这个时候已经有92019202了,所以配置让他去发现92019202,注意这里用到的端口为内部通信端口,配置为discovery.seed_hosts: ["localhost:9301","localhost:9302"]
  2. 发现超时时长配置discovery.zen.fd.ping_timeout: 1m
  3. 发现重试次数,discovery.zen.fd.ping_retries: 5
    综上,最后的配置内容如下:
cluster.name: my-application
node.name: node-9202
node.master: true
node.data: true
network.host: localhost
http.port: 9202
transport.tcp.port: 9302

# --------------------------------- Discovery ----------------------------------
discovery.seed_hosts: ["localhost:9301","localhost:9302"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5

# 跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

启动node-9203,等待其已经完全启动之后再使用postman检测健康状态。
健康检测结果

可从上看到核心信息, statusgreen,也就是OK的。集群节点数number_of_nodes,数据节点数目number_of_data_nodes,目前变为了3。因为我们已经启动了3个节点了。

注意事项

如果在启动的时候各节点无法进行发现和注册,这个时候可能是节点中有以前运行的数据,需要将datalog两个文件夹删除,然后重启就OK了。
3个节点都正常运行的时候,健康状态检测的URL.连向3个节点一样。

  1. http://localhost:9201/_cluster/health
  2. http://localhost:9202/_cluster/health
  3. http://localhost:9203/_cluster/health

经过测试,在这样的集群配置下,要是node-9201挂了之后就无法请求了。这个问题在后续再测试下。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用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、付费专栏及课程。

余额充值