У меня есть приложение Meteor, развернутое с использованием Kubernetes в Google Cloud, настроенное с помощью Nginx, действующего как завершение SSL. Все работает нормально.Запуск приложения Meteor с прокси-сервером Nginx SSL на Kubernetes
Однако, похоже, что если два разных клиента подключаются к двум различным контейнерам SSL, обновления не отображаются в соответствующих приложениях на срок до 10 секунд, из-за чего кажется, что веб-узлы не работают, но опрос вступление в силу. Я подтвердил, что все клиенты связаны с Websockets, но поскольку обновления не распространяются немедленно, возможно, Nginx не настроен правильно разговаривать с приложением Meteor.
Вот моя SSL/услуга Nginx:
apiVersion: v1 kind: Service metadata: name: frontend-ssl labels: name: frontend-ssl spec: ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 443 selector: name: frontend-ssl type: LoadBalancer loadBalancerIP: 123.456.123.456 sessionAffinity: ClientIP
А вот служба Метеора:
apiVersion: v1 kind: Service metadata: name: frontend labels: name: frontend spec: ports: - port: 3000 targetPort: 3000 selector: name: flow-frontend type: LoadBalancer loadBalancerIP: 123.456.123.456 sessionAffinity: ClientIP
Для прекращения SSL, я использую Kubernetes предложили раздвоенные установки SSL с дополнениями веб-сокетов https://github.com/markoshust/nginx-ssl-proxy
Вы указывая 123.456.123.456 на обоих служб (или это опечатка)? Я не знаком с метеоритом, но есть шанс, что ваша проблема не метеорная проблема. У вас должно быть как минимум 2 контейнера (желательно, 2 RC), и 2 службы, один для nginx и один для вашего приложения. Только служба nginx должна быть Type = Loadbalacer. –
Чтобы сузить неизвестные, вы можете заставить стручки приземлиться на том же узле с помощью селекторов узлов (https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/user-guide/node-selection/ README.md # шаг один прикрепить ярлык-к-узлу). Вы также можете указать экземпляр nginx непосредственно в службе с чем-то вроде 'proxy_pass http: //svcName.svcNamespace.svc.cluster.local: svcPort' в вашей конфигурации (при условии, что у вас работает DNS-кластер и вы можете разрешить свое имя службы, например Nslookup). Дайте мне знать, как это происходит. –
Nginx и Meteor имеют отдельные rcs и стручки. Я решил, что только nginx нужен Type = LoadBalancer, однако я не думаю, что на стороне метеора должно повлиять что угодно. Они живут на одном и том же IP-адресе, однако это просто делает доступными как общедоступные, так и каждый на своем собственном порту. –