Обновление 2018-12-10
Выпущен новый ApiVersion (просмотр 2018-09-01), и новый способ предоставления Сервисов - использование ресурса Gateway.Дополнительную информацию можно найти в этом потоке github и этом документах.
Это фрагмент шлюза (только), который предоставляет две службы в одном приложении:
{
"apiVersion": "2018-09-01-preview",
"name": "helloWorldGateway",
"type": "Microsoft.ServiceFabricMesh/gateways",
"location": "[parameters('location')]",
"dependsOn": [
"Microsoft.ServiceFabricMesh/networks/helloWorldNetwork"
],
"properties": {
"description": "Service Fabric Mesh Gateway for HelloWorld sample.",
"sourceNetwork": {
"name": "Open"
},
"destinationNetwork": {
"name": "[resourceId('Microsoft.ServiceFabricMesh/networks', 'helloWorldNetwork')]"
},
"http": [
{
"name": "web",
"port": 81,
"hosts": [
{
"name": "*",
"routes": [
{
"name": "helloRoute",
"match": {
"path": {
"value": "/",
"rewrite": "/",
"type": "Prefix"
}
},
"destination": {
"applicationName": "helloWorldApp",
"serviceName": "helloWorldService",
"endpointName": "helloWorldListener"
}
}
]
}
]
},
{
"name": "kuard",
"port": 82,
"hosts": [
{
"name": "*",
"routes": [
{
"name": "kuardRoute",
"match": {
"path": {
"value": "/",
"rewrite": "/",
"type": "Prefix"
}
},
"destination": {
"applicationName": "helloWorldApp",
"serviceName": "kuardService",
"endpointName": "kuardListener"
}
}
]
}
]
}
],
"tcp": [
{
"name": "web",
"port": 80,
"destination": {
"applicationName": "helloWorldApp",
"serviceName": "helloWorldService",
"endpointName": "helloWorldListener"
}
},
{
"name": "kuard",
"port": 8080,
"destination": {
"applicationName": "helloWorldApp",
"serviceName": "kuardService",
"endpointName": "kuardListener"
}
}
]
}
}
Примечания:
- Приложение то же самое helloWorld образец с дополнительным сервисом
- Шлюз был изменен для предоставления различныхпорты через TCP и HTTP
- Невозможно предоставлять услуги через сеть (как отмечено в исходном ответе)
Оригинальный ответ
В настоящее время существуют две большие ограничения для сетей:
- Одна сеть на приложение : Вы не можете иметь одно приложение в двух сетях. source
- Один вход в сеть на службу : если вы определяете вход с несколькими правилами, ориентированными на несколько сервисов, только один из них будет работать правильно, даже если развертывание выполнено успешнов большинстве случаев без предупреждения. source
Это публичные ограничения на предварительный просмотр, которые могут быть установлены на GA.
В этом случае, если вам необходимо предоставить две службы, вы можете выбрать следующие варианты:
- Создание двух сетей и двух приложений : каждое приложение с отдельными службами развертывается в своих собственных сетях, каждая служба будет иметь разные IP-адреса.
- Создатьпрокси-сервис : использование таких решений, как NGINX, для получения всех соединений и внутренней маршрутизации запросов к соответствующим службам.
- Использование gateway resource : SF Mesh выпуститскоро служба шлюза, основанная на посланнике, когда станет доступной, станет лучшим решением для этого сценария, она будет работать очень похоже на подход NGINX, описанный выше, но под управлением Azure она пока недоступна, но скоро будет выпущена.