что мне делать, когда у меня есть облачный сервер

внешний интерфейс Эксплуатация и техническое обслуживание

Если эта статья может помочь вам, вы можете помочь мне вshfshanyue/op-noteнажмите на звезду

Если вы новичок, вы можете нажатьСсылка на сайтКупить

Предварительное исследование

В начале исследования сервера рендеринга и написания демки меня просто интересовала поэзия, поэтому я сделал сайт о поэзии, чем больше я писал, тем демка становилась ДЕМО, и в целом это было очень просто. Просто завис на сервере.

Стек технологий 👉 Next.js + React + ApolloClient + Docker + Docker Compose

URL-адрес выглядит следующим образом 👉Поэзия и струны

Позже я повесил свой блог 👉Блог Ямадзуки

Бэкэнд поддержка

С фронтендом естественно требуется поддержка на стороне сервера.По принципу простоты, удобства и простоты использования я сделал прямой выбор между parse-server и graphql, и в итоге выбрал graphql. И сделал полуфабрикаты строительных лесов. Поддерживаются следующие функции

Полуфабрикат вывешен на githubGitHub.com/Шаншанюэ/…

  • N+1 query
  • Загрузка полей базы данных по запросу
  • Промежуточное ПО для кэширования определенных полей
  • Часовой доступа
  • Доступ к Consul kev/value store
  • jwt для аутентификации
  • Структурированные сообщения об ошибках и предупреждения с помощью sentry
  • Структурированная информация журнала для легкого анализа лосей
  • Докер и Докер Compose
  • Traefik балансирует нагрузку (и не делает) с обратным прокси

У этих лесов есть живой пример здесьtodos.xiange.tech/playgroundСначала вам нужно использовать shanyue/shanyue для входа в систему с учетной записью и паролем.Мутация для входа в систему — createUserToken

В то время я написал полу-полу-полу-полузаконченные леса на переднем конце.shfshanyu/react-apollo-starter, я не знаю, смогу ли я бегать сейчас...

Стек технологий 👉 Graphql + ApolloServer + Sequelize + Docker + JWT + (Traefik + Sentry + Consul)

graphql

Docker

При развертывании используйте docker + docker-compose, чтобы получить код и перезапустить его, чтобы решить эту проблему. Также часто делайте на нем некоторые докер-тесты

база данных

Серверная часть зависит от данных, поэтому Redis и Postgres развертываются с помощью Docker.

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

VPN

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

GitHub.com/okaymanna/…

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

служба конфигурации

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

Прямая установка и загрузка на «голое железо»

consul agent -data-dir=/consul/data -config-dir=/consul/config -server -data-dir=/consul/data -advertise 172.17.68.39 -bootstrap-expect=1 -node=consul-server -bind=0.0.0.0 -client=0.0.0.0 -ui

система сбора ошибок

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

Sentry зависит от redis и postgres, и я напрямую указываю зависимости от redis и postgres, общие для моего сайта. Во-первых, миграция — это проблема в будущем, а во-вторых, слишком много журналов ошибок может даже привести к взрыву базы данных. Но не смотря ни на что, мой сайт - это только я как пользователь, нет ошибки, если им никто не пользуется, и нет проблемы, если ошибки нет.

обратный прокси

Фронт и бекенд должен быть обратным прокси.Выбранный случайно траефик имеет как минимум более красивые интерфейсы, чем nginx, более удобную настройку сервисов и сервисное открытие.Минус в том, что мало документов.

Traefik также устанавливается непосредственно на «голое железо», метка настраивается непосредственно из докера, а номер порта прокси-сервера напрямую используется в файле. Позже я написал статью с кратким описанием

Запуск Traefik и простая настройка

traefik

Что касается того, почему на графике так много запросов, это потому, что gitlab runner запрашивает gitlab каждую секунду.

лог-система

Построить лося. Но учитывая, что тремя самыми посещаемыми друзьями являются Google Spider, Baidu Spider и я, я не использовал его с момента его создания.

Эталонная сборка:GitHub.com/Деви Энтони/…

Так же может быть потребность в файловых битах, но я пока не делал

репозиторий кода

Некоторым личным кодам, учебным записям и некоторым моим собственным заметкам о пейзажах и цветах нужно место для размещения, и gitlab построен, но gitlab съел более двух G моей памяти...

Обратите внимание на отключение зависимостей типа prometheus от gitlab, иначе будет кушать много памяти

CI

После сборки gitlab для поддержки gitlab был создан gitlab-runner для CI/CD.

Однако в настоящее время к CI подключены только блоги, потому что только блоги создаются после CI, и я чувствую, что проекты front-end и back-end, которые были запущены первыми, будут отменены...

DNS server

Есть так много сервисов, но некоторые вещи не так просто выложить в публичную сеть, такие как консул, редис, постгрес и гитлаб, и я не могу вспомнить номер порта, поэтому я настроил dns-сервер для облегчения локального доступа

yum install dnsmasq

Редактирование файлов и управление окнами

vim и tmux являются стандартными для linux для повышения эффективности работы на сервере, для компиляции и установки рекомендуется использовать исходный код. Даже если yum настроен с помощью epel, установленная версия пакета слишком низкая и не имеет многих функций. Например, vim, чтобы открыть каталог файлов. Ниже приведена моя собственная конфигурация vim и tmux.

tmux

Автоматизированная эксплуатация и техническое обслуживание

В первые дни использования серверов часто приходилось переустанавливать систему, а у меня два сервера, поэтому автоматическая работа и обслуживание имеют важное значение. Как правило, я использую ansible для предварительной настройки некоторых серверов и установки некоторых необходимых инструментов, таких как docker, git, vim, tmux, jq и auto-jump.

Поскольку все мои серверы - Centos, книга написана немного плохо.

Однако большинство сервисов на сервере управляется docker-compose, а небольшое количество инструментов управляется ansible role, поэтому нет необходимости писать ansible-playbook.

Если у вас есть новый сервер, вы можете выполнить следующие действия.

  1. Предоставление среды с ansible-role
  2. Если у вас нет ansible-role, напишите свой собственный ansible-playbook
  3. Установить с помощью докера для некоторых сервисов
  4. Если ни один из вышеперечисленных способов не решает проблему, установите его вручную.

монитор

использоватьprometheus + node-exporter + cadvisorДля мониторинга хостов и контейнеров используйтеgrafanaвизуализировать

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

  1. Найдите панель инструментов с более чем одной звездой в grafana
  2. Внесите небольшие изменения по мере необходимости

grafana

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

Суммировать

Короче говоря, сервер все еще в основном тестируется, изучается и практикуется, и в будущем следует добавить k8s.


Обратите внимание на публичный аккаунтГорная Луна Путешествие, зафиксируйте мой технический рост, добро пожаловать в общение

欢迎关注公众号山月行,记录我的技术成长,欢迎交流