【问题标题】:Apache Ignite unable find a deployed serviceApache Ignite 找不到已部署的服务
【发布时间】:2019-06-11 16:32:44
【问题描述】:

我注意到 Apache Ignite 的一个奇怪行为,它在我的 5 节点 Apache Ignite 集群上相当可靠地发生,但甚至可以用两个节点集群进行复制。我在 Kubernetes 集群中部署的 Linux 环境中使用 Apache Ignite 2.7 for Net(每个 pod 托管一个节点)。

问题如下。假设我们有一个由 2 个 Apache Ignite 节点 A 和 B 组成的集群。两个节点都启动并初始化。在初始化阶段,每个节点上部署了几个 Ignite 服务。其中,节点 B 上部署了一个名为 QuoteService 的服务。

到目前为止一切顺利。集群按预期工作。然后,节点 B 因任何原因崩溃或停止,然后重新启动。节点 B 上托管的所有 ignite 服务都将重新部署。节点重新加入集群。

但是,当节点 A 上的服务尝试调用预期在节点 B 上可用的 QuoteService 时,将引发异常并显示以下消息:未能找到已部署的服务:QuoteService。奇怪的是,注册服务的行确实在节点 B 重启期间运行:

services.DeployMultiple("QuoteGenerator", new Services.Ignite.QuoteGenerator(), 8, 2);

(将服务部署为单例没有任何区别)

单独重启节点 A 或节点 B 无济于事。只有关闭整个Ignite集群并重新启动所有节点才能解决问题。

即使在运行 5 个节点时也可以重现此情况。

此错误报告可能看起来有点不具体,但很难指定具体的复制步骤,因为复制涉及设置至少两个 ignite 节点并按顺序停止和重新启动它们。所以让我这样提出问题: 1、你有没有注意到这样的情况,或者你是否收到过其他用户的类似报告? 2. 如果是,您可以推荐哪些步骤来解决这个问题? 3. 得知服务部署机制目前正在大修,我是否应该等待下一个版本的 Apache Ignite?

更新: 即使我不停止/启动节点,在运行的集群上也会遇到类似的问题。我将在 SA 上提出另一个问题,它似乎有不同的起源。

【问题讨论】:

  • 您好,您如何访问该服务?你到处都有相同的服务对象吗?可以从节点B访问吗?
  • @EvgeniiZhuravlev 感谢您的回复。基本上我对服务代理执行以下操作。不知道是不是各地都一样。 _ignite.GetServices().GetServiceProxy(serviceName)。我从 DI 容器中获取 Ignite 实例; DI的依赖定义如下: .AddSingleton(sp => { return Ignition.TryGetIgnite() ?? Ignition.Start(igniteConfig); })
  • > 可以从节点B访问吗?

标签: ignite


【解决方案1】:

我已经弄清楚是什么导致了所描述的行为(尽管我不明白究竟是为什么)。

我想确保 Ignite 服务只部署在当前节点上,所以我使用以下 C# 代码来部署服务:

var services = ignite.GetCluster().ForLocal().GetServices();
services.DeployMultiple("FlatFileService", new Services.Ignite.FlatFileService(), 8, 2);

当我将代码更改为仅依赖 NodeFilter 以将服务部署限制到特定的节点集并摆脱“GetCluster().ForLocal().”时,该错误消失了。最终代码如下:

var flatFileServiceCfg = new ServiceConfiguration
{
    Service = new Services.Ignite.FlatFileService(),
    Name = "FlatFileService",
    NodeFilter = new ProductServiceNodeFilter(),
    MaxPerNodeCount = 2,
    TotalCount = 8
};
var services = ignite.GetServices();
services.DeployAll(new[] { flatFileServiceCfg, ... other services... });

然而,为什么在拓扑改变之前旧代码仍然有效,这仍然很奇怪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 2017-08-19
    • 2014-08-14
    相关资源
    最近更新 更多