Acerca de las redes de un clúster de GitHub Enterprise Server
Cada nodo del clúster GitHub Enterprise Server debe poder comunicarse con los demás nodos del clúster a través de la red. Puedes revisar los puertos y protocolos necesarios para los usuarios finales, la administración y la comunicación entre nodos. Para distribuir el tráfico entre nodos front-end, GitHub recomienda que configures un equilibrador de carga externo.
Consideraciones sobre la red
El diseño de red más simple para una agrupación es colocar los nodos en una LAN única. Si un clúster debe abarcar subredes, no te recomendamos configurar ninguna regla de firewall entre ellas. La latencia entre nodos debe ser de menos de 1 milisegundo.
La latencia entre los nodos principal y de réplica debe ser inferior a 70 milisegundos. No recomendamos configurar un firewall entre las redes de los nodos.
- Puertos de la aplicación para usuarios finales
- Puertos administrativos
- Puertos de comunicación de agrupación
Puertos de la aplicación para usuarios finales
Los puertos de la aplicación permiten que los usuarios finales accedan a Git y a las aplicaciones web.
Port | Descripción | Cifrados |
---|---|---|
22/TCP | Git sobre SSH | |
25/TCP | SMTP | Requiere STARTTLS |
80/TCP | HTTP | Cuando SSL está habilitado, este puerto redirige a HTTPS |
443/TCP | HTTPS | |
9418/TCP | Puerto de protocolo Git simple (Deshabilitado en modo privado) |
Puertos administrativos
No se requieren puertos administrativos para el uso de la aplicación básica por parte de los usuarios finales.
Port | Descripción | Cifrados |
---|---|---|
ICMP | Ping de ICMP | |
122/TCP | SSH administrativo | |
161/UDP | SNMP | |
8080/TCP | Consola de gestión HTTP | Cuando SSL está habilitado, este puerto redirige a HTTPS |
8443/TCP | Consola de gestión de HTTPS |
Puertos de comunicación de agrupación
Si un cortafuego de nivel de red se coloca entre los nodos estos puertos deberán estar accesibles. La comunicación entre los nodos no está cifrada. Estos puertos no deberían estar accesibles externamente.
Port | Descripción |
---|---|
1336/TCP | API Interna |
3033/TCP | Acceso SVN interno |
3037/TCP | Acceso SVN interno |
3306/TCP | MySQL |
4486/TCP | Acceso del gobernador |
5115/TCP | Back-end de almacenamiento |
5208/TCP | Acceso SVN interno |
6379/TCP | Redis |
8001/TCP | Grafana |
8090/TCP | Acceso a GPG interno |
8149/TCP | Acceso al servidor de archivos de GitRPC |
8300/TCP | Consul |
8301/TCP | Consul |
8302/TCP | Consul |
9000/TCP | Git Daemon |
9102/TCP | Servidor de archivos de las páginas |
9105/TCP | Servidor LFS |
9200/TCP | Elasticsearch |
9203/TCP | Servicio de código semántico |
9300/TCP | Elasticsearch |
11211/TCP | Memcache |
161/UDP | SNMP |
8125/UDP | Statsd |
8301/UDP | Consul |
8302/UDP | Consul |
25827/UDP | Collectd |
Configurar un balanceador de carga
Recomendamos un balanceador de carga externo basado en TCP que respalde el protocolo PROXY para distribuir el tráfico a través de los nodos. Considera estas configuraciones del balanceador de carga:
- Los puertos TCP (que se muestran a continuación) se deberán reenviar a los nodos que ejecutan el servicio
web-server
. Estos son los únicos nodos que sirven a las solicitudes de clientes externos. - Las sesiones pegajosas no deberían habilitarse.
Warning
Cuando se termina una conexión HTTPS en un equilibrador de carga, en las solicitudes de este hacia GitHub Enterprise Server también es necesario usar HTTPS. Bajar la conexión de categoría a HTTP no es compatible.
Manejar información de conexión de clientes
Dado que las conexiones de clientes con el agrupamiento provienen del balanceador de carga, no se puede perder la dirección IP de cliente. Para capturar adecuadamente la información de la conexión de clientes, se requiere una consideración adicional.
Si tu balanceador de carga lo admite, es altamente recomendable implementar el protocolo PROXY. Cuando no está disponible el soporte de PROXY, también se puede equilibrar la carga de los puertos HTTP y HTTPS mediante el encabezado X-Forwarded-For
.
Caution
Cuando está habilitada la compatibilidad con PROXY o el reenvío HTTP, es muy importante que ningún tráfico externo pueda llegar directamente a los dispositivos de GitHub Enterprise Server. Si el tráfico externo no se bloquea correctamente, las direcciones IP de origen se pueden falsificar.
Habilitar el soporte PROXY en GitHub Enterprise Server
Recomendamos firmemente habilitar el soporte PROXY para tu instancia y el balanceador de carga.
Note
GitHub Enterprise Server es compatible con PROXY Protocol V1, que no es compatible con los equilibradores de carga de red de AWS. Si utilizas balanceadores de carga de red de AWS con GitHub Enterprise Server, no habilites la compatibilidad con el PROXY.
-
Para tu instancia, usa este comando:
ghe-config 'loadbalancer.proxy-protocol' 'true' && ghe-cluster-config-apply
-
Para el balanceador de carga, usa las instrucciones proporcionadas por tu proveedor.
Mapeos de puertos de protocolo TCP de PROXY
Puerto de origen | Puerto de destino | Descripción del servicio |
---|---|---|
22 | 23 | Git sobre SSH |
80 | 81 | HTTP |
443 | 444 | HTTPS |
8080 | 8081 | Consola de gestión HTTP |
8443 | 8444 | Consola de gestión de HTTPS |
9418 | 9419 | Git |
Habilitar el soporte X-Forwarded-For en GitHub Enterprise Server
Use el protocolo X-Forwarded-For
solo cuando el protocolo PROXY no esté disponible. El encabezado X-Forwarded-For
solo es compatible con HTTP y HTTPS. Para las conexiones de Git a través de SSH, la dirección IP indicada será la del equilibrador de carga. En algunos entornos, las direcciones IP de cliente del registro de auditoría de la instancia pueden aparecer incorrectamente como 127.0.0.1
.
Para habilitar el encabezado X-Forwarded-For
, use este comando:
ghe-config 'loadbalancer.http-forward' 'true' && ghe-cluster-config-apply
Mapeos de puertos de protocolo TCP para usar sin soporte de PROXY
Puerto de origen | Puerto de destino | Descripción del servicio |
---|---|---|
22 | 22 | Git sobre SSH |
25 | 25 | SMTP |
80 | 80 | HTTP |
443 | 443 | HTTPS |
8080 | 8080 | Consola de gestión HTTP |
8443 | 8443 | Consola de gestión de HTTPS |
Configurar la revisión de estado
Las comprobaciones de estado permiten que un balanceador de carga deje de enviar tráfico a un nodo que no responde si una comprobación preconfigurada falla en ese nodo. Si un nodo de agrupación falla, las revisiones de estado emparejadas con nodos redundantes brindan alta disponibilidad.
Configura el equilibrador de carga para comprobar la siguiente dirección URL.
http(s)://HOSTNAME/status
El punto de conexión devolverá el código de estado 200
(correcto) si el nodo es correcto y está disponible para responder a las solicitudes del usuario final. Para obtener más información, vea «Supervisión de una configuración de alta disponibilidad».
Note
Cuando el dispositivo está en modo de mantenimiento, la dirección URL https://HOSTNAME/status
devolverá el código de estado 503
(servicio no disponible). Para obtener más información, vea «Habilitar y programar el modo de mantenimiento».
Requisitos de DNS
Las búsquedas DNS para el nombre del host de GitHub Enterprise Server se deben resolver con el balanceador de carga. Es recomendable que habilites el aislamiento de subdominio. Si el aislamiento de subdominios está habilitado, un registro comodín adicional (*.HOSTNAME
) también se debería resolver en el equilibrador de carga. Para obtener más información, vea «Habilitar el aislamiento de subdominio».