我构建了一个提供JMeter服务器的Docker映像。在Dockerfile中,我公开了2个端口,
[...]
EXPOSE 1099 50000
[...]
在本地计算机上运行图像时,
docker run --rm --name [name] -d -p 1099:1099 -p 50000:50000 [name]
我可以从JMeter控制器访问服务器。
当我尝试在OpenShift中运行图像时,找不到在路线定义中公开2个端口的方法。似乎每个路由只允许一个端口。
与我的本地设置类似,OpenShift是否可以从客户端访问JMeter服务器?
答案 0 :(得分:2)
在OpenShift中,有一个open issue支持每个路由多个端口
路由是否可以公开多个端口? #16529
有一种解决方法,可以为不同的端口定义多个路由
要在不同端口上具有多个路由器,请复制路由器YAML,更改每次出现的端口和路由器名称,然后将YAML导入为新路由器。
@tocosonic这样,您可以将同一主机用于不同的路由(因为不同的路由器将为不同的端口提供服务)
答案 1 :(得分:0)
假设您使用以下方法创建了一条路线
// Given some List<T> of entries to upsert...
List<SomePoco> SomePocos = GetListOfPocoFromSomewhere();
// This will match existing documents on a field called "Name".
await SomeMongoCollection.BulkUpsertAsync(SomePocos, filterField => filterField.Name);
这将获取服务名称,并将其用作路由名称并公开服务
oc获取路线
NAME。主机/端口。服务 。端口。
富。 foo.bar.com。富。 8080
假设您要在端口9000上创建另一个路由;如果您执行以下命令
oc expose srv foo --port 8080 --hostname foo.bar.com
您将收到以下错误 服务器错误(AlreadyExists):“ foo”已存在 如您所见,该命令使用了srv名称并将其也用作路由名称
相反,您可以执行以下操作以提供唯一的路线名称
oc expose srv foo --port 9000 --hostname api.foo.bar.com
服务的名称必须唯一,并且由于默认情况下服务名称也用作路由名称,因此另一个路由请求会引发异常。
您可以通过提供具有-name
的唯一名称来避免此异常