首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于IIS的双akka.cluster asp.net网络接口

基于IIS的双akka.cluster asp.net网络接口
EN

Stack Overflow用户
提问于 2017-05-24 15:26:01
回答 1查看 182关注 0票数 0

在out集群中,我们有以下五个节点组合:

  • 2个种子节点(后端)
  • 1名工人
  • 2关于IIS的webapi

群集被连接、启动和运行;但是第二个IIS在通过路由器向集群执行第一条消息时,使所有群集都不可访问和分离。另外,第二个IIS无法传递任何消息。

以下是我的IIS配置:

代码语言:javascript
复制
<hocon>
  <![CDATA[
        akka.loglevel = INFO
        akka.log-config-on-start = off
        akka.stdout-loglevel = INFO
        akka.actor {
            provider = "Akka.Cluster.ClusterActorRefProvider, Akka.Cluster"
            deployment {
              /Process {
                router = round-robin-group
                routees.paths = ["/user/Process"] # path of routee on each node
                # nr-of-instances = 3 # max number of total routees
                cluster {
                    enabled = on
                    allow-local-routees = off
                    use-role = Process
                }
              }
            }
            debug {
              receive = on
              autoreceive = on
              lifecycle = on
              event-stream = on
              unhandled = on
            }
        }
        akka.remote {
            helios.tcp {
                # transport-class = "Akka.Remote.Transport.Helios.HeliosTcpTransport, Akka.Remote"
                # applied-adapters = []
                # transport-protocol = tcp
                port = 0
                hostname = 172.16.1.8
            }
            log-remote-lifecyclo-events = DEBUG
        }
        akka.cluster {
          seed-nodes = [
            "akka.tcp://ClusterActorSystem@172.16.1.8:2551",
            "akka.tcp://ClusterActorSystem@172.16.1.8:2552"
          ]
          roles = [Send]
          auto-down-unreachable-after = 10s
          # how often should the node send out gossip information?
          gossip-interval = 1s
          # discard incoming gossip messages if not handled within this duration
          gossip-time-to-live = 2s
        }
        # http://getakka.net/docs/persistence/at-least-once-delivery
        akka.persistence.at-least-once-delivery.redeliver-interval = 300s
        # akka.persistence.at-least-once-delivery.redelivery-burst-limit =
        # akka.persistence.at-least-once-delivery.warn-after-number-of-unconfirmed-attempts =
        akka.persistence.at-least-once-delivery.max-unconfirmed-messages = 1000000
        akka.persistence.journal.plugin = "akka.persistence.journal.sql-server"
        akka.persistence.journal.publish-plugin-commands = on
        akka.persistence.journal.sql-server {
            class = "Akka.Persistence.SqlServer.Journal.SqlServerJournal, Akka.Persistence.SqlServer"
            plugin-dispatcher = "akka.actor.default-dispatcher"
            table-name = EventJournal
            schema-name = dbo
            auto-initialize = on
            connection-string-name = "HubAkkaPersistence"
            refresh-interval = 1s
            connection-timeout = 30s
            timestamp-provider = "Akka.Persistence.Sql.Common.Journal.DefaultTimestampProvider, Akka.Persistence.Sql.Common"
            metadata-table-name = Metadata
        }
        akka.persistence.snapshot-store.plugin = ""akka.persistence.snapshot-store.sql-server""
        akka.persistence.snapshot-store.sql-server {
          class = "Akka.Persistence.SqlServer.Snapshot.SqlServerSnapshotStore, Akka.Persistence.SqlServer"
          plugin-dispatcher = ""akka.actor.default-dispatcher""
          connection-string-name = "HubAkkaPersistence"
          schema-name = dbo
          table-name = SnapshotStore
          auto-initialize = on
        }
  ]]>
</hocon>

在global.asax内部,我们为集群创建了一个新的路由器:

代码语言:javascript
复制
    ClusterActorSystem = ActorSystem.Create("ClusterActorSystem");

    var backendRouter =
        ClusterActorSystem.ActorOf(
            Props.Empty.WithRouter(FromConfig.Instance), "Process");

    Send = SistemiHubClusterActorSystem.ActorOf(
        Props.Create(() => new Common.Actors.Send(backendRouter)),
        "Send");

下面是我们的后端配置:

代码语言:javascript
复制
<hocon><![CDATA[
    akka.loglevel = INFO
    akka.log-config-on-start = on
    akka.stdout-loglevel = INFO
    akka.actor {
        provider = "Akka.Cluster.ClusterActorRefProvider, Akka.Cluster"
        debug {
          receive = on
          autoreceive = on
          lifecycle = on
          event-stream = on
          unhandled = on
        }
    }
    akka.remote {
      helios.tcp {
            # transport-class = "Akka.Remote.Transport.Helios.HeliosTcpTransport, Akka.Remote"
            # applied-adapters = []
            # transport-protocol = tcp
            # 
            # seed-node ports 2551 and 2552
            # non-seed-node port 0
            port = 2551
            hostname = 172.16.1.8
        }
        log-remote-lifecyclo-events = INFO
    }
    akka.cluster {
      seed-nodes = [
        "akka.tcp://ClusterActorSystem@172.16.1.8:2551",
        "akka.tcp://ClusterActorSystem@172.16.1.8:2552"
      ]
      roles = [Process]
      auto-down-unreachable-after = 10s
    }
  ]]></hocon>

目前使用Akka 1.1和Akka 1.2的问题

更新

我发现这个问题与我们的LoadBalancer (NetScaler)有关,如果我直接调用每个IIS都很好的话。如果由平衡器调用,我将面临报告的问题;平衡器是父级的(它只向请求添加一些标头)。我能查些什么来解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-07 06:46:51

最后,我发现了这个问题,我们使用的是akka.persistence,它要求每个IIS的PersistenceId都有一个特定的值下降。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44162660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档