首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Terraform的Azure容器实例上的Lightstreamer

使用Terraform的Azure容器实例上的Lightstreamer
EN

Stack Overflow用户
提问于 2022-08-09 17:51:32
回答 1查看 124关注 0票数 0

我正在尝试将一个Lightstreamer实例部署到天青集装箱集团

我的adapters.xml配置如下:

代码语言:javascript
复制
<?xml version="1.0"?>

<adapters_conf id="SHOWCASE">

  <metadata_provider>
    <adapter_class>com.lightstreamer.adapters.metadata.LiteralBasedProvider</adapter_class>
  </metadata_provider>

  <data_provider>
    <adapter_class>ROBUST_PROXY_FOR_REMOTE_ADAPTER</adapter_class>
    <classloader>log-enabled</classloader>
    <param name="request_reply_port">6661</param>
    <param name="notify_port">6662</param>
  </data_provider>

</adapters_conf>

Dockerfile的结构如下:

代码语言:javascript
复制
FROM lightstreamer:7.0

COPY ["adapters.xml", "/lightstreamer/adapters/proxy/"]

最后但并非最不重要的是,我的terraform文件如下所示:

代码语言:javascript
复制
 resource "azurerm_container_group" "lightstreamer" {
     name = "${var.organization}-${var.project}-lightstreamer"
     depends_on = [
       azurerm_container_registry.container_registry
     ]
     location = var.location
     resource_group_name = azurerm_resource_group.resource_group.name
     ip_address_type = "Public"
     os_type = "Linux"
     container {
       name = "lightstreamer-web"
       image = "${azurerm_container_registry.container_registry.login_server}/lightstreamer:${var.image_tag}"
       cpu = "0.5"
       memory = "1.5"
       ports {
         port = 8080
         protocol = "TCP"
       }
       ports {
         port = 6661
         protocol = "TCP"
       }
       ports {
         port = 6662
         protocol = "TCP"
       }
     }
     exposed_port = [
       {
           port = 8080
           protocol = "TCP"
       },
       {
           port = 6661
           protocol = "TCP"
       },
       {
           port = 6662
           protocol = "TCP"
       }
     ]
     image_registry_credential {
         server = "${azurerm_container_registry.container_registry.login_server}"
         username = "${azurerm_container_registry.container_registry.admin_username}"
         password = "${azurerm_container_registry.container_registry.admin_password}"
     }    
     dns_name_label = "${var.organization}-${var.project}-lightstreamer"
 }

不幸的是,每当我将暴露的端口6661和6662添加到地形(由于adapters.xml而需要它们)时,Lightstreamer就会遇到一个错误:

代码语言:javascript
复制
09.Aug.22 17:48:41,358 < INFO> Request sender 'SHOWCASE.DEFAULT' starting...
09.Aug.22 17:48:41,372 < INFO> Reply receiver 'SHOWCASE.DEFAULT' starting...
09.Aug.22 17:48:44,232 < INFO> Request sender 'SHOWCASE.DEFAULT' stopped
09.Aug.22 17:48:44,235 <ERROR> Exception caught while trying to initialize the Remote Server
com.lightstreamer.adapters.proxy.request_reply.DisconnectedException: Connection closed while waiting for an answer to request 10000018283b91608
    at com.lightstreamer.adapters.proxy.request_reply.RequestSender.quit(RequestSender.java:175)
    at com.lightstreamer.adapters.proxy.BaseRemoteProvider.stop(BaseRemoteProvider.java:100)
    at com.lightstreamer.adapters.proxy.data.RobustNetworkedDataProvider$RecoverableNDP.onInnerException(RobustNetworkedDataProvider.java:390)
    at com.lightstreamer.adapters.proxy.data.RobustNetworkedDataProvider$RecoverableNDP.access$400(RobustNetworkedDataProvider.java:258)
    at com.lightstreamer.adapters.proxy.data.RobustNetworkedDataProvider$RecoverableNDP$1.onException(RobustNetworkedDataProvider.java:375)
    at com.lightstreamer.adapters.proxy.request_reply.NotifyReceiver.run(NotifyReceiver.java:110)
09.Aug.22 17:48:44,236 <ERROR> Exception from the inner Proxy Data Adapter: com.lightstreamer.interfaces.data.DataProviderException: Connection closed while waiting for an answer to request 10000018283b91608
09.Aug.22 17:48:44,236 <ERROR> Got fatal error from the inner Proxy Data Adapter
com.lightstreamer.adapters.proxy.RemotingException: Unexpected end of reply stream reached
    at com.lightstreamer.adapters.proxy.request_reply.NotifyReceiver.run(NotifyReceiver.java:110)
Caused by: java.io.EOFException: null
    ... 1 common frames omitted
09.Aug.22 17:48:44,236 < INFO> Reply receiver 'SHOWCASE.DEFAULT' stopped
09.Aug.22 17:48:44,237 <ERROR> Inner Proxy Data Adapter initialization failure; no Inner Proxy will be used

在本地,它只是运行良好,但是每当它托管在ACI上时,就会发生错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-23 13:28:24

在用重新构建了整个方法之后,事实证明,一些健康探测在AWS中引起了同样的问题。因此,我将探测更改为指向默认的http (8080)端口,而不是配置好的端口6661和6662,并且它开始工作(在AWS上)。

不幸的是,我无法为Azure上的每个端口配置探测,所以我决定将整个实例移动到一个专用网络中。

因此,我改变了地形如下:

代码语言:javascript
复制
     ip_address_type = "Private"

并增加了这些资源:

代码语言:javascript
复制
resource "azurerm_virtual_network" "default" { ... }

resource "azurerm_subnet" "lightstreamer" {
  name = "lightstreamer"
  depends_on = [
    azurerm_virtual_network.default
  ]
  resource_group_name = azurerm_resource_group.resource_group.name
  virtual_network_name = azurerm_virtual_network.default.name
  address_prefixes = [ "172.16.1.0/24" ]
  delegation {
    name = "delegation"
    service_delegation {
      name = "Microsoft.ContainerInstance/containerGroups"
      actions = ["Microsoft.Network/virtualNetworks/subnets/action"]
    }
  }
}

resource "azurerm_network_profile" "default" {
    name =  "ls-profile"
    depends_on = [
      azurerm_subnet.lightstreamer
    ]
    #location = "${var.location}"
    location = "westeurope"
    resource_group_name = "${azurerm_resource_group.resource_group.name}"
    container_network_interface {
      name = "ls-nic"
      ip_configuration {
        name = "default"
        subnet_id = "${azurerm_subnet.lightstreamer.id}"
      }
    }  
}

这一次,Lightstreamer启动得很好,使我能够添加一个应用程序网关,以提供公共访问。

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

https://stackoverflow.com/questions/73296148

复制
相关文章

相似问题

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