Определите резервный сервис для приложения isomorphi c JavaScript - PullRequest
1 голос
/ 31 марта 2020

У меня есть приложение isomorphi c JavaScript, которое использует плагин SSR Vue, работающий на K8s. Это приложение может быть отрендерено на стороне сервера моим Express сервером с Node, или оно может быть подано прямо клиенту, как с Nginx, и отображено в браузере. В любом случае, он работает довольно безупречно.

Запуск его в Express с использованием SSR, однако, требует гораздо больших ресурсов, а Express более сложен и может привести к сбою, если я что-то неправильно настрою. С другой стороны, обслуживать его с помощью Nginx для визуализации на стороне клиента очень просто, и он едва использует все ресурсы в моем кластере.

Я хочу сделать несколько копий модуля, на котором запущен мой * Сервер 1016 *, который выполняет SSR, но если по каким-то причинам эти блоки go не работают, я хочу использовать резервный сервис на входе, который будет обслуживаться с резервной копии с помощью всего Nginx, обслуживающего код, который может быть передан клиенту.

Настройка модулей достаточно проста, но как я могу сказать входному серверу обслуживаться другим сервисом, отличным от обычного, если обычный сервис недоступен и / или слишком медленно отвечает на запросы?

1 Ответ

1 голос
/ 01 апреля 2020

Самый простой способ настроить NGINX Вход для удовлетворения ваших потребностей - использовать аннотацию default-backend .

Эта аннотация имеет форму nginx.ingress.kubernetes.io/default-backend: <svc name> для указания пользовательского бэкенда по умолчанию. Это <svc name> является ссылкой на службу в том же пространстве имен, в котором вы применяете эту аннотацию. Эта аннотация переопределяет глобальный бэкэнд по умолчанию.

Эта служба будет обрабатывать ответ, когда служба в правиле Ingress не имеет активных конечных точек. Он также будет обрабатывать ответы об ошибках, если задана и эта аннотация, и аннотация custom-http-errors .

Пример:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-app-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: "/"
    nginx.ingress.kubernetes.io/custom-http-errors: '404'
    nginx.ingress.kubernetes.io/default-backend: default-http-backend
spec:
  rules:
  - host: myapp.mydomain.com
    http:
      paths:
      - path: "/"
        backend:
          serviceName: custom-http-backend
          servicePort: 80

В этом Например, NGINX использует custom-http-backend в качестве основного ресурса, и в случае сбоя этой службы конечный пользователь будет перенаправлен на default-http-backend.

Подробнее об этом примере вы можете узнать здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...