Облачный хостинг: основы работы с серверами

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

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

Читайте также: Введение в облачный хостинг

Облачное программное обеспечение

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

Сначала рассмотрим операционные системы. Чтобы настроить облачный сервер, в первую очередь необходимо установить операционную систему. Сегодня почти все облачные клиенты используют ОС на базе Linux (например, Ubuntu или Rocky Linux) – эти системы очень популярны благодаря широкой поддержке, бесплатному или гибкому лицензированию и постоянному применению их в области серверных вычислений.

Читайте также: Как выбрать дистрибутив Linux

Серверное программное обеспечение – это класс программного обеспечения, предназначенного для работы в облачной среде на машинах, к которым не подключена среда рабочего стола или дисплей. Обычно такое ПО устанавливается и настраивается через интерфейс командной строки, а затем обычные пользователи обращаются к нему через веб-браузер или другое приложение. Хотя типы ПО и инструментов, которые вы устанавливаете на свой облачный сервер, могут сильно различаться, вам все же следует понимать несколько ключевых моментов, чтобы иметь возможность подготовиться к планированию и настройке собственного облачного сервера.

Веб-сервер – это серверное программное обеспечение, которое позволяет облачному серверу взаимодействовать с пользователями или приложениями в интернете по протоколу HTTP. Такое серверное ПО, как веб-сервер, должно четко определенным образом реагировать на определенные типы запросов от клиентов или клиентского ПО. Например, когда пользователь вводит URL-адрес в веб-браузер, веб-браузер (который в данном случае является клиентом) отправляет запрос на сервер. В ответ сервер извлекает HTML-документ и отправляет его обратно в браузер, где документ загружается как веб-страница. Если вы настраиваете облачный сервер с нуля и хотите разместить на нем веб-сайт или веб-приложение, вам нужно установить и настроить веб-сервер. Nginx и Apache HTTP – наиболее популярные варианты.

API-сервер — это тип программного посредника, который позволяет приложениям взаимодействовать друг с другом. Веб-сервер — это тип API-сервера, который реализует API-интерфейсы HTTP. Существует много различных типов API, которые позволяют облачным серверам отправлять или получать данные из внешних приложений и ресурсов данных (например, извлекать данные о погоде, информацию о рейсах или другие типы данных для приложения). Отдельные реализации API также иногда называют конечными точками API или (просто конечными точками).

Серверы баз данных (или просто базы данных, БД) – это еще один тип серверов API. В отличие от веб-серверов, доступ к которым можно получить через веб-браузер и которые обычно отображают HTML-интерфейс, доступ к серверам баз данных обычно осуществляется через API запросов. Некоторые развертывания баз данных бывают открытыми для внешнего доступа и могут реализовывать свои собственные веб-интерфейсы для всех, кому необходимо взаимодействовать с ними в браузере, в то время как другие БД доступны только внутри облачной среды.

Примечание: Запуск Linux без какой-либо виртуализации на выделенной физической машине, которая не используется совместно с другими арендаторами, обычно называется частным хостингом (bare-metal hosting). Частные серверы сегодня предлагают относительно немногие облачные провайдеры. Наиболее распространенным современным эквивалентом частного сервера является запуск Linux на Raspberry Pi (обычно для небольших проектов).

Облачные серверы и другие продукты

Как видите, облачный сервер фактически является целым виртуальным компьютером. Давайте рассмотрим другие продукты облачной среды. Например, некоторые облачные провайдеры предлагают выделенный веб-хостинг или выделенный хостинг БД. Любой продукт, который предоставляет базу данных или веб-сервер сам по себе, фактически абстрагируется от реального облачного сервера. Существуют различные способы отделить этот сервер: как правило, для этого по-прежнему используются кластеры виртуализированных серверов, но принцип остается неизменным. Основное различие заключается в том, что облачный сервер (иногда называемый VPS или виртуальным частным сервером) можно настроить для запуска любого программного обеспечения любым способом, в то время как меньшие и более сфокусированные облачные предложения фактически являются оптимизированными и, как следствие, ограниченными подмножествами функций сервера.

Рынок этих предложений значительно изменился за последние несколько десятилетий. До того, как виртуализация стала широко доступной, существовал рынок веб-хостов, которые предоставляли веб-серверы типа Nginx или Apache для поддержки десятков разных пользователей с их уникальными наборами привилегий и предлагали хостинг для каждого пользователя на индивидуальных основах. В теории это было удобно, поскольку от пользователей не требовалось выполнять какие-либо обязанности по управлению сервером, но на практике это облако ограничивалось поддержкой только статических веб-сайтов (HTML, CSS и javascript, без серверного движка) или простых PHP-приложений, которые не имели никаких зависимостей, кроме веб-сервера.

С тех пор предложения VPS — то есть полные облачные серверы — стали более доступными. Для запуска облачного сервера (особенно в производственном развертывании) требуется определенный объем знаний о передовых методах управления Linux: обычно при этом подразумеваются выделенные роли системного администратора (sysadmin) и DevOps для обеспечения безопасности, развертывания и так далее. Хорошо, если есть возможность время от времени выполнять эти роли, но это может быть непросто.

Стоит ли мне использовать облачный сервер?

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

Есть и другие современные предложения, которые можно приравнять к встраиваемым веб-хостам. Современные статические веб-сайты могут использовать новейшие функции javascript, которые в некоторых случаях позволяют полностью исключить необходимость в внутреннем сервере. Некоторые облачные провайдеры называют этот тип хостинга «headless CMS» и предоставляют другие инструменты разработки в качестве части более крупного предложения «программное обеспечение как услуга» (software-as-a-service).

В дополнение к этому некоторые провайдеры также поддерживают развертывание так называемых бессерверных (serverless) функций. Это одноразовые сценарии, которые могут использовать функциональность внутреннего сервера и развертываются в среде, которая может запускать их напрямую. При совмещении с развертыванием статического сайта этот подход иногда называют Jamstack.

Статические сайты и serverless развертывания обладают высокой портируемостью и, как и устаревший веб-хостинг, позволяют избежать почти всех проблем с безопасностью и обслуживанием, которые встречаются при полном развертывании. Однако они гораздо более ограничены по объему. Например, в рамках вашего стека вам может потребоваться контейнер Docker на веб-сервере Nginx, развернутый определенным образом: для этого или любой подобной конфигурации вам понадобится целый облачный сервер.

Как правило, любое программное обеспечение, которое можно развернуть на облачном сервере, также можно развернуть и на локальном компьютере. Хотя инструкции сообщают, что различия ощутимы — к примеру, многие люди не используют Linux на своих локальных компьютерах, а серверное программное обеспечение считается неподготовленным для работы непосредственно в macOS или Windows — на практике различия невелики. Это основная ценность облачного сервера: это во всех смыслах целый полноценный компьютер, с которым вы можете делать все, что угодно.

Как определить необходимые параметры сервера?

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

Облачные серверы обычно оцениваются по количеству доступных ядер ЦП, общей доступной памяти (ОЗУ) и подключенному дисковому хранилищу. Скорость диска и процессора в реальных условиях обычно различаются, но большинство облачных провайдеров стандартизировали среднюю скорость диска (примерно уравняв с твердотельными накопителями (SSD)) и скорость процессора (уравняв с ядром Intel Xeon). Некоторые провайдеры также ограничивают количество операций ввода-вывода на диск (IOPS) или допустимый сетевой трафик на облачных серверах более низкого уровня, что может стать узким местом для некоторого программного обеспечения.

Почти все облачные провайдеры позволяют приобрести дополнительное хранилище, – например блочное хранилище или хранилище объектов, – которое можно подключить к VPS в случае необходимости. Обычно рекомендуется не расширять базовый объем хранилища VPS, а использовать именно это дополнительное хранилище. Хранение всех данных в одном корневом разделе может усложнить масштабирование.

Чтобы ваш сервер был доступен в сети, ему следует присвоить внешний IP-адрес. Это может быть адрес IPv4 (по шаблону 123.123.123.123) или IPv6 (по шаблону 2001:0db8:0000:0000:0000:ff00:0042:8329). Почти все сетевое ПО может анализировать и получать доступ к этим IP-адресам напрямую, хотя в большинстве случаев IP-адреса серверов будут находиться за доменом (типа https://my_domain.com). Некоторые облачные провайдеры автоматически выделяют один IP-адрес для каждого VPS, в то время как другие требуют покупать IP-адреса и присваивать их серверам по отдельности. Такие адреса называются зарезервированными IP-адресами, это более гибкий вариант для крупных развертываний.

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

Доступ к облачному серверу

Для подключения и работы с облачными серверами вам необходимо знать, как работать в терминальной среде локально и удаленно. Подключения к удаленным терминалам в основном используют протокол SSH (или Secure Shell). Это один из наиболее часто используемых протоколов вместе с HTTP, хотя SSH, естественно, чаще используется администраторами, а не конечными пользователями. HTTP работает по порту 80 (443 для HTTPS). SSH обычно работает по порту 22.

Итоги

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

Tags: , , , , ,

Добавить комментарий