Рубрики
Uncategorized

Концепции устойчивости Node.js: восстановление и самовосстановление

В идеальном мире, где мы достигли 100% тестового покрытия, наша обработка ошибок была безупречна, и все наши F … помечены JavaScript, Node, Security, Devops.

В идеальном мире, где мы достигли 100% тестового покрытия, наша обработка ошибок была безупречна, и все наши неудачи были обработаны изящно — в мире, где все наши системы достигли совершенства, у нас не было бы этого обсуждения.

Тем не менее, вот мы. Земля, 2020. К тому времени, когда вы прочитаете это предложение, кто-то сервер не удался в производстве. Момент молчания для процессов, которые мы проиграли.

В этом посте я пройду несколько концепций и инструментов, которые сделают ваши серверы более устойчивыми и повысить свои навыки управления процессами.

Узел index.js.

Начиная с Node.js — особенно если вы новичок в работе с серверами — вы, вероятно, захотите запустить ваше приложение на удаленном сервере производства, то же самое, что вы запускаете его в разработке.

Установите Node.js, клонировать репо, дайте ему NPM установить и а Узел index.js (или NPM начать ), чтобы закрутить все это.

Я помню, что это, кажется, как пуленепробиваемый план для меня. Если это работает, зачем это исправить, верно?

Мой код будет работать в ошибках во время разработки, что привело к сбою, но я исправил эти ошибки на месте — поэтому код на сервере не связан. Это не может сбиться. Как только он запускается, этот сервер должен оставаться до теплой смерти вселенной.

Ну, как вы, наверное подозреваете, что это было не так.

Я сталкивался с двумя основными проблемами, которые не перешли на голову тогда:

  • Что произойдет, если VM/Host перезапускается?
  • Серверы Crash … Вот как, их второй самый популярный атрибут. Если бы они не были Обслуживание Что-нибудь, мы бы назвали их Crashers.

Росомахи против Т-1000

Восстановление может быть решено во многих различных способах. Существуют удобные решения для перезапуска нашего сервера после сбоев, и существует более сложные подходы, чтобы сделать его неразрушимым в производстве.

Как росомаха, и T-1000 могут взять на себя хорошую избиение, но их сложность и скорость восстановления очень разные.

Мы ищем отдельных качеств, основанных на окружающей среде, в которой мы работаем. Для развития цель — это удобство. Для производства это обычно устойчивость.

Мы собираемся начать с самой простой формы восстановления, а затем медленно работайте на пути к разработке решений для оркестрации.

Вам решать, сколько усилий вы хотели бы инвестировать в вашу реализацию, но никогда не повредит большим количеством инструментов в вашем распоряжении, поэтому, если это шипает ваш интерес, закрепите ремень безопасности, и давайте погрузимся в!

Решение проблем, как они возникают

Вы кодируете, разрабатывая свой удивительный сервер.

После каждой пары строк вы переключаете вкладки и подталкиваете его с Узел индекс или NPM Start. . Этот цикл постоянного переключения и подтяжки становится значительно утомительным через некоторое время.

Разве это не было бы неплохо, если бы просто перезапустите самостоятельно после того, как вы изменили код?

Это где легкие пакеты, такие как Номемон и node.js Руководитель вступают в игру. Вы можете установить их с помощью одной строки кода и начать использовать их с помощью следующего.

Чтобы установить Nodemon, просто введите команду ниже в свой терминал.

npm install -g nodemon

После установки просто замените Узел Команда, которую вы использовали С новым Номемон Команда, которую у вас сейчас есть доступ.

nodemon index.js

Вы можете установить Node.js Supervisor с аналогичным подходом, введя команду ниже.

npm install -g supervisor

Аналогично, после установки вы можете просто использовать руководитель префикс для запуска вашего приложения.

supervisor index.js

Nodemon и Supervisor так же полезны, поскольку они популярны, при этом главное отличие того, что Nodemon потребуется, чтобы вы внесли изменения в файл, чтобы перезапустить процесс, когда Supervisor может перезапустить свой процесс, когда он сбивает.

Ваш сервер находится на правильном пути. Скорость развития кваррована.

Эти пакеты делают большую работу охватывающего охватывающего очки развития, и они также довольно настраиваются. Но трудности, которые мы сталкиваемся в развитии, редко перекрывают те, которые мы сталкиваемся с производством.

Когда вы развертываете на удаленный сервер, он чувствует себя, как отправка вашего ребенка в колледж в качестве непокрытого родителя. Вы хотите знать, что ваш сервер здоров, безопасен, и ест все свои овощи.

Вы хотели бы знать, какую проблему он столкнулся, когда она разбилась — если это разбилось. Вы хотите, чтобы это было в хороших руках.

Ну, хорошие новости! Вот где менеджеры процессов вступают в картину. Они могут быть нями на ваш сервер в производстве.

Управление процессом

Когда вы запустите свое приложение, A процесс создано.

При запуске его разработки вы обычно открываете окно терминала и введите команду там. А передний план Процесс создан, и ваше приложение работает.

Теперь, если вы закроете это окно терминала, ваше приложение закрывается с ним. Вы также заметите, что окно терминала заблокировано. Вы не можете ввести другую команду, прежде чем закрыть процесс с Ctrl + C Отказ

Недостаток состоит в том, что приложение привязано к окну терминала, но вы также можете прочитать все журналы и ошибки, которые процесс бросается. Так что это стакан наполовину полный.

Однако на вашем производственном сервере вы захотите бегать на заднем плане, но вы потеряете удобство видимости. Разочарование гарантировано.

Управление процессами утомительно.

К счастью, у нас есть менеджеры процессов! Это процессы, которые управляют другими процессами для нас. Так что мета! Но смешно удобно.

PM2.

Самый популярный менеджер процессов для Node.js называется PM2 , И это так популярно для очень хорошей причины. Это великолепно!

Это такое фантастическое программное обеспечение, которое потребовало бы у меня отдельная статья, чтобы описать свою удивительность полностью, и сколько удобных функций. Поскольку мы сосредоточены на самовосстановлении, я обсужу основы ниже, но я настоятельно рекомендую вам прочитать его более подробно и проверить все его удивительные функции.

Установка PM2 так же просто, как установка пакетов, которые мы обсуждали выше. Просто введите следующую строку в вашем терминале.

npm install -g pm2

Запуск вашего приложения тоже не ракету науки. Просто введите команду ниже, где index.js это ваш главный файл сервера.

pm2 start index.js

На этот раз вы можете заметить что-то другое. Похоже, ничего не произошло, но если вы продолжете посетить конечную точку в ваше приложение, вы заметите, что он работает и работает.

Помните, когда мы обсуждали запуск процесса на заднем плане? Это именно то, что происходит. PM2 начал свой сервер в качестве фонового процесса, и теперь его управляется для вас.

В качестве дополнительного удобства вы также можете использовать - Учет Флаг, чтобы убедиться, что PM2 наблюдает за вашими файлами для изменений и перезагружает ваше приложение, чтобы убедиться, что он всегда в курсе.

Для этого вы можете использовать точную команду выше, но с флагом, добавленным к концу.

pm2 start index.js --watch

Теперь PM2 смотрит наши файлы и перезапускает процесс в любое время, когда файлы изменяются или сбои процесса. Идеально! Это именно то, что мы после.

Делает большую работу, управляю нашим сервером за кулисами, но отсутствие видимости — вызывающее беспокойство. Что, если вы хотите увидеть журналы вашего сервера?

PM2 вы покрыли. Их CLI действительно мощный! Я перечислю несколько команд ниже, чтобы начать.

Перечислите ваши приложения с помощью команды ниже.

PM2 списка Перечисляет ваши приложения. Вы увидите числовой идентификатор, связанный с приложениями, управляемыми PM2. Вы можете использовать этот идентификатор в командах, которые вы хотели бы выполнить.
PM2 журналы Проверяет журналы вашего приложения.
PM2 остановка Останавливает ваш процесс. (Просто потому, что процесс остановлен, это не значит, что он остановился. Если вы хотите полностью удалить процесс, вам придется использовать удаление)
PM2 Удалить Удаляет процесс. (Вам не нужно останавливаться и удалять отдельно, вы можете просто пойти прямо для удаления, что остановится и удалит процесс для вас)

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

Разочарую, я знаю. Но почему? Я слышу, как вы спрашиваете.

Помните, насколько удобно установить PM2? Мы установили его с помощью The Node.js Package Manager. Подмигивание… Пистолет палец. Подмигиваю.

Ждать. Мы используем Node.js для мониторинга Node.js?

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

Так, что дальше? Ну, давайте рассмотрим.

Systemd.

Если вы планируете запустить в хорошем добром Linux VM, я думаю, что это стоит упомянуть Systemd Перед прыжками на глубокий конец контейнеров и оркестраторов.

В противном случае, если вы планируете запускаться в условиях управляемого приложения (например, Azure Appсервис, AWS Lambda, App apps Engine, Heroku и т. Д.) Это не будет иметь отношение к вашему случаю использования, но это может не повредить знание об этом.

Так предполагая, что это только вы, ваше приложение и Linux VM, давайте посмотрим, что Systemd могу сделать для вас.

SystemD может запустить, остановить и перезапустить процессы для вас, что именно то, что нам нужно. Если ваш VM перезагрузится, SystemD гарантирует, что ваше приложение снова запускается.

Но сначала давайте убедитесь, что у вас есть доступ к SystemD на вашу VM.

Ниже приведен список систем Linux, которые используют SystemD:

  • Ubuntu Xenial (или новее)
  • CentOS 7/RHEL 7
  • Debian Jessie (или новее)
  • Fedora 15 (или новее)

Давайте будем реалистичными, вы, вероятно, не используете систему Linux перед большим наводнением, поэтому вы, вероятно, будете иметь системный доступ.

Второе, что вам нужно, это пользователь с Sudo привилегии. Я собираюсь ссылаться на этого пользователя просто как Пользователь Но вы должны заменить его своим собственным.

Поскольку наш пользователь называется Пользователь И, для этого примера, я использую Ubuntu, Я буду ссылаться на ваш домашний каталог как /дом/Пользователь/ И я пойду с предположением, что Ваш index.js Файл находится в вашем домашнем каталоге.

Системный файл обслуживания

Файл SystemD — это полезный маленький файл, который мы можем создавать в системной области, которая содержит конфигурацию на наш сервис. Это действительно просто и просто, поэтому давайте попробуем установить один вверх.

Все файлы Systemd расположены под каталогом, перечисленным ниже.

/lib/systemd/system

Давайте создадим новый файл там с редактором по вашему выбору и заполните его с некоторым контентом. Не забудьте использовать Sudo. как префикс к вашей команде! Все здесь принадлежит пользователю root.

Хорошо, давайте начнем с помощью системного каталога.

cd /lib/systemd/system

Создайте файл для вашего обслуживания.

sudo nano myapp.service

И давайте заполним его с некоторым контентом.

# /lib/systemd/system/myapp.service

[Unit]
Description=My awesome server
Documentation=https://awesomeserver.com
After=network.target

[Service]
Environment=NODE_PORT=3000
Environment=NODE_ENV=production
Type=simple
User=user
ExecStart=/usr/bin/node /home/user/index.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

Если вы смотрите через конфигурацию, это довольно просто и самоуверенно, по большей части.

Два настроек вам могут понадобиться подсказки на После и Тип Отказ

После = network.target означает, что он должен ждать сетевой части сервера, который будет работать и работает Потому что нам нужен порт. Простой тип просто означает не делать ничего сумасшедшего, просто начать и запустить.

Запуск вашего приложения с SystemCTL

Теперь, когда наш файл был создан, давайте скажем Systemd Чтобы забрать изменения из вновь созданного файла. Вам придется сделать это каждый раз, когда вы делаете изменение в файл.

sudo systemctl daemon-reload

Это так просто, как это. Теперь, когда он знает о нашем сервисе, Мы должны быть в состоянии использовать SystemCTL Команда начать и остановить ее. Мы будем ссылаться на это по имени сервиса.

sudo systemctl start myapp

Если вы хотите остановить его, вы можете заменить Начать Команда с Стоп Отказ Если вы хотите перезапустить его, введите рестарт вместо.

Теперь, на часть, о которой мы заботимся больше всего. Если вам нравится ваше приложение, чтобы начать автоматически, когда VM загружается, вы должны выполнить команду ниже.

sudo systemctl enable myapp

Если вы хотите, чтобы это поведение остановилось, просто замените включить с запрещать .

Это так просто, как это!

Итак, теперь у нас есть другая система, управляющая нашим процессом, которое не является самим Node.js. Отлично! Вы можете с гордостью дать себе высокий пять или, возможно, неловкий локонный удар в зависимости от пандемических правил, прочитав эту статью.

Наше путешествие здесь не останавливается. По-прежнему довольно много земли, оставленного, поэтому давайте медленно начать погружение в мир контейнеров и оркестров.

Что такое контейнеры?

Чтобы иметь возможность двигаться вперед, вам нужно понять, какие контейнеры и как они работают.

Существует множество контейнерных средов выполнения, таких как Mesos, Coreos, LXC и OpenVZ, Но одно имя, которое действительно синонимично контейнерами, является Докер Отказ Это составляет более 80% используемых контейнеров и когда люди упоминают Контейнеры, безопасно думать, что говорят о Docker.

Итак, какие эти контейнеры делают все равно?

Ну, контейнеры содержат. У них очень простое и описательное имя в этом смысле.

Теперь остается вопрос, что они содержать ?

Контейнеры содержат ваше приложение и все его зависимости. Не больше, не меньше. Это просто ваше приложение и все, что нужно ваше приложение.

Подумайте о том, что необходимо выполнить ваш Node.js Server:

  • Node.js (duh ‘)
  • Ваш файл index.js.
  • Вероятно, ваши пакеты NPM (зависимости)

Итак, если мы создаем контейнер, мы хотели бы убедиться, что эти вещи присутствуют и содержатся.

Если бы у нас был такой контейнер готов, то это может быть развернуто через двигатель контейнера (E.g. Docker).

Контейнеры против VMS и итальянской кухни

Даже если вы не работали много с виртуальными машинами, я думаю, у вас есть общая идея о том, как они работают. Вы, наверное, видел, как ваш друг запущен в Windows Machine с Linux, установленным на нем, или MacOS с дополнительной установкой Windows и т. Д.

Таким образом, идея есть, что у вас есть ваша физическая машина и операционная система сверху, которая затем содержит ваше приложение и его зависимости.

Давайте представим, что мы делаем пиццу.

  • Машина — это таблица
  • ОС — это тесто для пиццы
  • И ваше приложение вместе с его зависимостями являются ингредиенты сверху

Теперь, скажем, вы хотели бы поесть 5 типов пиццы, что вы должны сделать?

Ответ заключается в том, чтобы сделать 5 разных пиццеров на одной таблице. Это ответ VM.

Но вот приходит докер и он говорит: «Эй, это много отходов! Вы не будете есть 5 пицц, и заставить тесто тяжело работать. Как насчет использования одного теста?

Возможно, вы думаете, эй, это неплохая идея на самом деле — но я не хочу отвратительный аромат ананаса моего друга (извините, не извините) переливая в мою вкусную 4 сыр. Ингредиенты противоречивы!

И вот где приходит Гений Докера: «Не волнуйся! Мы сдержим их. Ваша 4 сырная часть даже не знает о ананасовой части. «

Таким образом, магия Докера заключается в том, что он способен использовать такую же базовую физическую машину и операционную систему для проведения хорошо содержащихся приложений многих разных «ароматов» без них, когда они когда-либо конфликтуют друг с другом. И держать экзотические фрукты с вашей пиццы.

Хорошо, давайте перейдем к созданию нашего первого контейнера докера.

Создание контейнера докера

Создание контейнера Docker действительно легко, но вам нужно будет установить Docker на вашем компьютере.

Вы сможете установить Docker независимо от вашей операционной системы. Он имеет поддержку Linux, Mac и Windows, но я решительно советую придерживаться Linux для производства.

Как только у вас установлен Docker, пришло время создать контейнер!

Docker ищет определенный файл под названием Dockerfile и это будет использовать его для создания Рецепт вашего контейнера, который мы называем документ докера. Поэтому, прежде чем мы создадим контейнер, нам придется создать этот файл.

Давайте создадим этот файл в том же каталоге, у нас есть наш index.js файл и package.json Отказ

# Dockerfile

# Base image (we need Node)
FROM node:12

# Work directory
WORKDIR /usr/myapp

# Install dependencies
COPY ./package*.json ./

RUN npm install

# Copy app source code
COPY ./ ./

# Set environment variables you need (if you need any)
ENV NODE_ENV='production'
ENV PORT=3000

# Expose the port 3000 on the container so we can access it
EXPOSE 3000

# Specify your start command, divided by commas
CMD [ "node", "index.js" ]

Это умно использовать .Dockerignore Файл в том же каталоге, чтобы игнорировать файлы и каталоги, которые вы можете не захотеть скопировать. Вы можете думать об этом, как работает так же, как .gitignore.

# .dockerignore

node_modules
npm-debug.log

Теперь, когда у вас все настроилось, пришло время построить образа докера!

Вы можете подумать о изображении как рецепт вашего контейнера. Или, если вы достаточно взрослый, вы можете помнить, что имели диски для установщиков программного обеспечения. Это было не фактическое программное обеспечение, работающее на нем, но он содержал упакованные программные данные.

Вы можете использовать команду ниже, чтобы создать изображение. Вы можете использовать -t Флаг, чтобы назвать ваше изображение и Узнайте это легче позже. Кроме того, убедитесь, что вы открыли терминал в каталог, где ваш Dockerfile расположен.

docker build -t myapp .

Теперь, если вы перечислите свои изображения, вы сможете увидеть ваше изображение в списке.

docker image ls

Если у вас есть изображение готово, вы только одна команда вдали от вашего контейнера вверх и работает.

Давайте выполним команду ниже, чтобы раскрутить ее.

docker run -p 3000:3000 myapp

Вы сможете увидеть свой сервер запустить с контейнера и прочитал ваши журналы в процессе. Если вы хотите раскрутить его на заднем плане, используйте -d Флаг перед именем вашего изображения.

Кроме того, если вы используете контейнер на заднем плане, вы можете распечатать список контейнеров, используя команду ниже.

docker container ls

Все идет нормально! Я думаю, что у вас должна быть довольно хорошая идея о том, как работает контейнеры на данный момент, поэтому вместо того, чтобы погрузиться в детали, давайте перейдем вперед к теме, очень близко к выздоровлению: оркестровка!

Оркестровка

Если у вас нет опытных операций, шансов вы думаете о контейнерах как в некоторых волшебных сложных компонентах. И ты был бы прав, думая, что. Они волшебные и сложные. Но это не помогает иметь эту модель в наших умах, поэтому пришло время изменить это.

Лучше всего думать о них как самые простые компоненты нашей инфраструктуры, вроде блоков LEGO.

В идеале, вы даже не хотите управлять этими блоками Lego индивидуально, потому что он слишком слишком громко. Вы хотите, чтобы другое сущность, которая обрабатывает их для вас, как диспетчер процессов, который мы обсуждали ранее.

Это где Оркестраторы вступают в игру.

Orchestrators поможет вам управлять и запланировать свои контейнеры, и они позволяют сделать это по нескольким ведущим контейнерам (VMS), распределенные по нескольким местам.

Функция Orchestrator, которая интересует нас большинство в этом контексте, это Репликация Действительно

Репликация и высокая доступность

Перезапуск нашего сервера, когда он вылетает, — это здорово, но что происходит в то время, когда наш сервер перезапускается? Должны ли наши пользователи ждать услуги, чтобы вернуться? Как они знают, что это вернется в любом случае?

Наша цель — сделать наш сервис Очень доступно , что означает, что наше Пользователи могут использовать наше приложение, даже если он сбивает.

Но как его можно использовать, если оно падает?

Простой. Сделайте копии вашего сервера и запустите их одновременно!

Это будет головная боль, чтобы настроить с нуля, но к счастью, у нас есть все, что нам нужно, чтобы включить этот механизм. Как только ваше приложение будет контейнерен, вы можете запустить как можно больше копий, как вы хотели бы.

Эти копии называются Реплики Отказ

Итак, давайте посмотрим на то, как мы настроили что-то вроде этого, используя двигатель оркестографии контейнера. Там есть довольно немало, но самый простой, чтобы начать работать с двигателем Orchestration Docker, Docker Rash.

Репликация в рору

Если у вас установлен Docker на вашем компьютере, вы только одна команда вдали от использования Docker Rash.

docker swarm init

Эта команда позволяет Docker Rame для вас, и он позволяет сформировать распределенный кластер, подключив другие виртуальные машины для рома. Для этого примера мы можем просто использовать одну машину.

Итак, с включенным докерным роем, у нас теперь есть доступ к компонентам под названием Услуги Отказ Это хлеб и масло архитектуры стиля микросервиса, И они облегчают нам создание реплик.

Давайте создадим услугу! Помните имя изображения, которое мы использовали, когда мы построили наш образ докера? Это то же самое изображение, которое мы собираемся использовать здесь.

docker service create --name myawesomeservice --replicas 3 myapp

Приведенная выше команда создаст услугу с именем Myawesomeservice И это будет использовать изображение назван MyApp Создать 3 одинаковых контейнера.

Вы сможете перечислить свои услуги с помощью команды ниже.

docker service ls

Вы можете увидеть, что есть сервис с указанным вами именем.

Чтобы иметь возможность увидеть созданные контейнеры, вы можете использовать следующую команду:

docker container ls

Теперь, когда наш сервер работает реплицирован, обслуживание обязательно перезагрузит контейнер, если он сбивает, и он может предложить доступ к здоровым контейнерам на протяжении всего процесса.

Если вы хотите настроить количество реплик службы, вы можете использовать команду ниже.

docker service scale =

Например:

docker service scale myapp=5

Вы можете запустить столько реплик, так как вы хотите, так же просто, как это.

Разве это не круто? Давайте посмотрим на один последний пример и посмотрим, как мы бы подошли к репликации в Куберане.

Репликация в Кубернетах

Трудно пропустить Кубернаны В дискуссии о оркестровке. Это золотой стандарт, когда дело доходит до оркестрации, и по праву так.

Я думаю, что Kubernetes имеет гораздо более крутое обучение кривой обучения, чем рой, поэтому, если вы просто начинаете с контейнерами, я предложил сначала взять рой. То, что сказал, не повредит общее понимание того, как это будет работать в мире K8S.

Если вы не чувствуете, что Установка Minikube Или вы не хотите возиться с облачными поставщиками, Есть легкая опция для кубернана в Kubernetes, используя Играть с Кубернетами Онлайн инструмент. Это дает вам 4-часовую сессию, которая должна быть более чем достаточно для небольших экспериментов.

Чтобы иметь возможность следовать этому упражнению, пожалуйста, убедитесь, что вы создали А Dockerhub Учетная запись и подтолкнул изображение докера к вашему репо!

Мы собираемся создать два компонента, создавая два .yml Файлы конфигурации:

  • Кластер IP-сервис — Это собирается открыть порт для нас, чтобы общаться с нашим приложением.
  • Развертывание — Что такое как услуга в Docker Rash, с немного более колокольчиками и свистками.

Давайте сначала начнем с Clusterip. Создать Cluster-IP.yml Файл и вставьте следующий контент в него.

# cluster-ip.yml

apiVersion: v1
kind: Service
metadata:
  name: cluster-ip-service
spec:
  type: ClusterIP
  selector:
    component: server
  ports:
    - port: 3000
      targetPort: 3000

Давайте также создадим развертывание. В пределах Развертывание .yml Файл, вы можете вставить следующий контент.

# deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: server-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      component: server
  template:
    metadata:
      labels:
        component: server
    spec:
      containers:
        - name: server
          image: your_docker_user/your_image
          ports:
            - containerPort: 3000

Вам нужно будет убедиться, что вы заменены your_docker_user/your_image С твоей Фактическое имя пользователя и изображения, и у вас есть это изображение, размещенное на вашем репо Docker.

Теперь, когда у нас есть эти два файла готовы, все, что нам нужно сделать, чтобы разрядить это, это выполнить команду ниже. Убедитесь, что вы выполняете его в каталоге, который содержит файлы.

kubectl apply -f .

Теперь вы можете проверить, работает ли ваш сервер и работает путем листинга Развертывание и Услуги Отказ

kubectl get deployments
kubectl get services

Если все разработало по плану, Вы должны быть в состоянии скопировать-вставить Ип и Порт от вашего Cluster-IP-Service в ваш Адресная строка браузера для доступа к вашему приложению.

Чтобы увидеть созданные реплики, вы можете использовать следующую команду:

kubectl get pods

Перечисленные PODS должны соответствовать количеству реплик, которые вы указали в вашем Развертывание .yml файл.

Чтобы очистить все компоненты, вы можете просто выполнить:

kubectl delete -f .

И просто так, мы узнали о репликации в Kubernetes.

Заключение

Итак, у нас есть приложение, которое восстанавливает и очень доступно. Это все есть к этому?

Нисколько. На самом деле, теперь, когда ваше приложение не «уходит», откуда вы знаете, какие проблемы это могут иметь?

Глядя на журналы? Будь честным. Если ваше приложение каждый раз, когда вы проверяете конечную точку, вы, вероятно, проверите журналы примерно в два раза в год. Есть более интересные вещи, чтобы посмотреть на социальные сети.

Итак, чтобы убедиться, что ваше приложение улучшится, вам придется начать думать о мониторинге, обработке ошибок и распространения ошибок. Вам придется убедиться, что вы знаете о проблемах, поскольку они возникают, и вы можете исправить их, даже если они не сохраняют свой сервер.

Это тема в другое время, хотя, я надеюсь, вам понравилась эта статья, и она смогла пролить свет на некоторые подходы, которые вы могли бы использовать, чтобы включить восстановление для вашего приложения Node.js.

Слияние Если вам понравилось этот пост, Подписаться на наш новый список борознов JavaScript Для ежемесячного глубокого погружения в более волшебные советы и трюки JavaScript.

P.P.S. Если вы будете любить ALL-in-One APM для Node.js или вы уже знакомы с Appsignal, Go и Проверьте Appsignal для Node.js .

Оригинал: «https://dev.to/appsignal/node-js-resiliency-concepts-recovery-and-self-healing-4a99»