Redes
Al crear y administrar clústeres de Azure Service Fabric, proporcionará conectividad de red para los nodos y aplicaciones. Los recursos de red incluyen intervalos de direcciones IP, redes virtuales, equilibradores de carga y grupos de seguridad de red. En este artículo, conocerá los procedimientos recomendados para estos recursos.
Revise los patrones de redes de Service Fabric de Azure para aprender a crear clústeres que usen las siguientes características: red virtual o subred existentes, dirección IP pública estática, equilibrador de carga solo interno y equilibrador de carga solo externo.
Redes de infraestructura
Maximice el rendimiento de la máquina virtual con redes aceleradas; para ello, declare la propiedad enableAcceleratedNetworking en la plantilla de Resource Manager. El siguiente fragmento de código corresponde al elemento NetworkInterfaceConfigurations de un conjunto de escalado de máquinas virtuales que habilita las redes aceleradas:
"networkInterfaceConfigurations": [
{
"name": "[concat(variables('nicName'), '-0')]",
"properties": {
"enableAcceleratedNetworking": true,
"ipConfigurations": [
{
<snip>
}
],
"primary": true
}
}
]
El clúster de Service Fabric se puede aprovisionar en Linux con redes aceleradas y Windows con redes aceleradas.
Las redes aceleradas se admiten para las SKU de la serie de máquina virtual de Azure: D/DSv2, D/DSv3, E/ESv3, F/FS, FSv2 y Ms/Mms. Las redes aceleradas se probaron correctamente con la SKU Standard_DS8_v3 el 23 de enero de 2019 en un clúster de Windows de Service Fabric y con Standard_DS12_v2 el 29 de enero de 2019 en un clúster de Linux de Service Fabric. Tenga en cuenta que las redes aceleradas requieren al menos cuatro vCPU.
Para habilitar las redes aceleradas en un clúster de Service Fabric existente, primero debe escalar un clúster de Service Fabric horizontalmente mediante la incorporación de un conjunto de escalado de máquinas virtuales, para realizar los siguientes pasos:
- Aprovisionar un elemento NodeType con las redes aceleradas habilitadas
- Migrar los servicios y su estado al elemento NodeType aprovisionado con las redes aceleradas habilitadas
Para habilitar las redes aceleradas en un clúster existente, es necesario escalar horizontalmente la infraestructura dado que si se habilitan tal y como está, se produciría tiempo de inactividad puesto que todas las máquinas virtuales de un conjunto de disponibilidad se tendrían que detener y desasignar antes de habilitarlas en una NIC existente.
Redes de clúster
Los clústeres de Service Fabric se pueden implementar en una red virtual existente mediante los pasos descritos en Patrones de redes de Service Fabric.
Se recomiendan grupos de seguridad de red (NSG) para que los tipos de nodo restrinjan el tráfico entrante y saliente en su clúster. Asegúrese de que los puertos necesarios estén abiertos en el NSG.
El tipo de nodo principal, que contiene los servicios del sistema de Service Fabric, no debe exponerse a través del equilibrador de carga externo y puede exponerse mediante un equilibrador de carga interno
Use una dirección IP pública estática para el clúster.
Reglas de seguridad de red
Las reglas que se describen a continuación son el mínimo recomendado en una configuración típica. También se incluyen las reglas obligatorias para un clúster operativo, en caso de que no se deseen reglas opcionales. Estas reglas permiten un bloqueo de seguridad completo con conceptos de emparejamiento de red y JumpBox, como Azure Bastion. Si no se abren los puertos obligatorios o no se aprueba la dirección IP o URL, el clúster no funcionará correctamente y es posible que no se admita.
Entrante
Priority | Nombre | Puerto | Protocolo | Origen | Destino | Acción | Mandatory |
---|---|---|---|---|---|---|---|
3900 | Portal de Azure | 19080 | TCP | ServiceFabric | Any | Allow | Sí |
3910 | API de cliente | 19000 | TCP | Internet | Any | Allow | No |
3920 | SFX + API de cliente | 19080 | TCP | Internet | Any | Allow | No |
3930 | Clúster | 1025-1027 | TCP | VirtualNetwork | Any | Allow | Sí |
3940 | Efímero | 49152-65534 | TCP | VirtualNetwork | Any | Allow | Sí |
3950 | Application | 20000-30000 | TCP | VirtualNetwork | Any | Allow | Sí |
3960 | RDP | 3389 | TCP | Internet | Any | Denegar | No |
3970 | SSH | 22 | TCP | Internet | Any | Denegar | No |
3980 | Punto de conexión personalizado | 443 | TCP | Internet | Any | Denegar | No |
Más información sobre las reglas de seguridad de entrada:
Azure Portal. Este puerto lo emplea el proveedor de recursos de Service Fabric para consultar información sobre el clúster y que se muestre en el Portal de administración de Microsoft Azure. Si este puerto no es accesible desde el proveedor de recursos de Service Fabric, se ve un mensaje como "Nodos no encontrados" o "UpgradeServiceNotReachable" en Azure Portal y el nodo y la lista de aplicaciones aparecen vacíos. Esto significa que si quiere tener visibilidad del clúster en el Portal de administración de Azure, el equilibrador de carga debe exponer una dirección IP pública y el NSG debe permitir el tráfico entrante de 19080. Este puerto se recomienda para las operaciones de administración extendida que se realicen desde el proveedor de recursos de Service Fabric para garantizar una mayor confiabilidad.
API de cliente. Punto de conexión de cliente para las API que usa PowerShell.
SFX + API de cliente. Este puerto lo usa Service Fabric Explorer para examinar y administrar un clúster. Del mismo modo lo usan las API más comunes como REST/PowerShell (Microsoft.ServiceFabric.PowerShell.Http)/CLI/.NET.
Clúster. Se usa para la comunicación entre nodos.
Efímero. Service Fabric usará una parte de estos puertos como puertos de aplicación, y el resto estará disponible para el sistema operativo. También asigna este rango al rango existente en el sistema operativo, por lo que puede usar los rangos de este ejemplo para todos los fines. Asegúrese de que la diferencia entre los puertos de inicio y finalización es al menos de 255. Puede encontrarse con conflictos si esta diferencia es demasiado baja, ya que este intervalo se comparte con el sistema operativo. Para ver el rango de puertos dinámicos configurado, ejecute netsh int ipv4 show dynamic port tcp. Estos puertos no son necesarios para clústeres de Linux.
Aplicación. El intervalo de puertos de las aplicaciones debería ser lo suficientemente amplio como para contemplar el requisito de punto de conexión de estas. Este intervalo debería quedar excluido del intervalo de puertos dinámicos de la máquina, es decir, el intervalo ephemeralPorts tal y como se establece en la configuración. Service Fabric usa estos puertos siempre que se requieren nuevos puertos y se ocupa de la apertura del firewall para ellos en los nodos.
RDP. Opcional, si se requiere RDP desde Internet o VirtualNetwork para escenarios de jumpbox.
SSH. Opcional, si se requiere SSH desde Internet o VirtualNetwork para escenarios de jumpbox.
Punto de conexión personalizado. Ejemplo para que la aplicación habilite un punto de conexión accesible de Internet.
Nota:
Para la mayoría de las reglas que tengan Internet como origen, considere la posibilidad de establecer una restricción a su red conocida, que lo ideal sería que la definiera un bloque CIDR.
Saliente
Priority | Nombre | Puerto | Protocolo | Origen | Destino | Acción | Mandatory |
---|---|---|---|---|---|---|---|
4010 | Proveedor de recursos | 443 | TCP | Any | ServiceFabric | Allow | Sí |
4020 | Descargar archivos binarios | 443 | TCP | Any | AzureFrontDoor.FirstParty | Allow | Sí |
Más información sobre las reglas de seguridad de salida:
Proveedor de recursos. Conexión entre UpgradeService y un proveedor de recursos de Service Fabric para recibir operaciones de administración como implementaciones de ARM u operaciones obligatorias, como la selección de nodo de inicialización o la actualización del tipo de nodo principal.
Descargar archivos binarios. El servicio de actualización usa la dirección download.microsoft.com para obtener los archivos binarios, esta relación es necesaria para la instalación, para volver a crear imágenes y para las actualizaciones del entorno de ejecución. En el escenario de un equilibrador de carga "solo interno", debe agregarse un equilibrador de carga externo adicional con una regla que permita el tráfico de salida del puerto 443. Opcionalmente, este puerto se puede bloquear después de una instalación correcta, pero en este caso el paquete de actualización debe distribuirse a los nodos o el puerto tiene que estar abierto durante ese breve período de tiempo; después es necesaria una actualización manual.
Use Azure Firewall con registro de flujo de grupos de seguridad de red y análisis de tráfico para realizar un seguimiento de los problemas de conectividad. La plantilla de ARM Service Fabric con NSG es un buen ejemplo para empezar.
Nota:
Las reglas de seguridad de red predeterminadas no deben sobrescribirse, ya que garantizan la comunicación entre los nodos. Grupo de seguridad de red: funcionamiento. Otro ejemplo, la conectividad saliente en el puerto 80 es necesaria para realizar la comprobación de la lista de revocación de certificados.
Escenarios comunes que necesitan reglas adicionales
Todos los escenarios adicionales se pueden cubrir con etiquetas de servicio de Azure.
Azure DevOps
Las tareas clásicas de PowerShell en Azure DevOps (etiqueta de servicio: AzureCloud) necesitan acceso de la API de cliente al clúster, por ejemplo, implementaciones de aplicaciones o tareas operativas. Esto no se aplica únicamente al enfoque de plantillas de ARM, incluidos los recursos de aplicaciones de ARM.
Priority | Nombre | Puerto | Protocolo | Origen | Destino | Acción | Dirección |
---|---|---|---|---|---|---|---|
3915 | Azure DevOps | 19000 | TCP | AzureCloud | Any | Allow | Entrada |
Actualización de Windows
El procedimiento recomendado para aplicar revisiones al sistema operativo Windows está reemplazando al disco del sistema operativo por actualizaciones automáticas de imágenes del sistema operativo; no se requiere ninguna regla adicional. La aplicación de orquestación de revisiones administra las actualizaciones en la máquina virtual en las que Windows Updates aplica revisiones del sistema operativo; para ello, se necesita acceso al Centro de descarga (etiqueta de servicio: AzureUpdateDelivery) para descargar los archivos binarios de actualización.
Priority | Nombre | Puerto | Protocolo | Origen | Destino | Acción | Dirección |
---|---|---|---|---|---|---|---|
4015 | Actualizaciones de Windows | 443 | TCP | Any | AzureUpdateDelivery | Allow | Salida |
API Management
La integración de Azure API Management (etiqueta de servicio: ApiManagement) necesita acceso a la API de cliente para consultar la información del punto de conexión desde el clúster.
Priority | Nombre | Puerto | Protocolo | Origen | Destino | Acción | Dirección |
---|---|---|---|---|---|---|---|
3920 | API Management | 19080 | TCP | ApiManagement | Any | Allow | Entrada |
Redes de aplicación
Para ejecutar cargas de trabajo de contenedor de Windows, use el modo de red abierto para facilitar la comunicación de servicio a servicio.
Use un proxy inverso, como Traefik o el proxy inverso de Service Fabric para exponer los puertos de aplicación comunes, como 80 o 443.
En el caso de los contenedores de Windows hospedados en máquinas que no tienen una conexión física que no pueden extraer los niveles de base del almacenamiento en la nube de Azure, anule el comportamiento del nivel externo con el uso de la marca --allow-nondistributable-artifacts en el demonio de Docker.
Pasos siguientes
- Creación de un clúster en máquinas virtuales o equipos que ejecutan Windows Server: Creación de un clúster independiente con Windows Server
- Creación de un clúster en máquinas virtuales o equipos que ejecutan Linux: Crear un clúster Linux
- Más información sobre las opciones de soporte técnico de Service Fabric