akka种子节点配置对集群的影响

【akka】 种子节点配置对集群的影响

背景知识:

  1. 种子节点:负责启动集群,并组成集群。是集群的初始成员
    ● 在集群启动时,seed-nodes 列表第一个节点必须启动。负责将其他节点join集群。
    若新来一个节点,会给所有的种子节点发送消息,新节点给 种子节点中第一个响应的节点发送join命令。若种子节点中无节点应答,则重试。直至成功/失败。在这里插入图片描述

问题

  根据背景知识,种子节点的第一个必须启动。但没有明确说明:其他非种子节点 或 非第一个种子节点 先启动会出现什么结果。(存在歧义)

  • 若其含义为 种子节点的第一个必须先启动,在k8s中,可能存在情况: s与g的两个akka节点组成集群,此时为种子节点的s挂掉,就需要:先把 g节点停掉,重新依次启动 s和g。(操作麻烦)
    • 期望操作:s挂掉后,重启s即可。

测试

测试路径

  akka集群存在3个节点:2个server节点、1个gateway节点(下面用s1、s2、g说明)。
  在k8s环境下akka集群,并不一定都是使用种子节点去组建集群,那怎么在现有环境模拟?

  • 将s和g都配置为种子节点(控制变量)
    • s设为第一个节点:
      • 先启动g;
      • 先启动s;
    • g设为第一个节点:
      • 先启动s;
      • 先启动g;

随后,还测试了其他情况(熟悉下集群的机制):

  • 只有s是种子节点
    • 先启动g
    • 先启动s
  • 只有g是种子节点
    • 先启动s
    • 先启动g

具体测试方式:

  通过修改nacos配置(用来修改谁是种子节点);及启动脚本顺序(即server、gateway akka节点启动顺序),根据输出的日志判断 不同的情况下 集群是否可以正常组建:
在这里插入图片描述image

环境说明及的nacos配置顺序:

gatewayserver
akka://appka132@10.246.155.132:9519akka://appka132@10.246.155.132:9518
akka://appka132@10.246.155.131:9518
Only server (server132,server131)nodes :“akka://appka132@10.246.155.132:9518,akka://appka132@10.246.155.131:9518”
Only gatewaynodes: “akka://appka132@10.246.155.132:9519”
server+gateway :s1g2 (server在前,gateway在后)nodes: “akka://appka132@10.246.155.132:9518,akka://appka132@10.246.155.131:9518,akka://appka132@10.246.155.132:9519”
server+gateway:g1s2nodes: “akka://appka132@10.246.155.132:9519,akka://appka132@10.246.155.132:9518,akka://appka132@10.246.155.131:9518”

不同情况的测试结果:

种子节点第一个种子节点启动顺序运行结果
gateway+serverservergateway先启动,server后启动akka配置在这里插入图片描述结果: 在这里插入图片描述
server先启动,gateway后启动结果:在这里插入图片描述
gateway+servergatewaygateway先启动,server后启动akka配置:在这里插入图片描述结果: 在这里插入图片描述
server先启动,gateway后启动结果: 在这里插入图片描述
仅gatewaygateway先启动akka配置:在这里插入图片描述结果:在这里插入图片描述
server 先启动结果:在这里插入图片描述
仅servergateway先启动,server后启动akka配置:在这里插入图片描述 结果: 在这里插入图片描述
server先启动,gateway后启动项目之前就是如此,可以组成集群

总结

   不论哪种情况,最先启动的种子节点会 负责 后面节点 加入集群。

   若是非种子节点最先启动时,会等待 种子节点中最先启动的节点无论是否设置为第一个)启动后,发现没有集群,组建集群后,由种子节点将非种子节点加入集群。

其他存在的问题

akka放在k8s可能还存在其他问题:

  1. 集群节点发现方式若两者其中有一个挂掉(如:s挂掉),s重新加入后,是否产生新的集群?

    1. Akka Cluster Bootstrap

    2. 在这里插入图片描述

  2. 【脑裂】akka cluster split-brain-resolver(SBR)_lease-majority-CSDN博客

    1. k8s 不同的pod ip不一样。若其中一个节点挂掉,重启pod会改变ip,但akka 集群会继续连接该ip

    2. 解决方式:配置相关策略

      1. Akka集群脑裂_akka脑裂-CSDN博客
  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值