Ваш старый ноутбук — ваш новый сервер баз данных

Пару недель назад я почти случайно нашел в своей квартире старый ноутбук, который только собирал пыль: Lenovo Thinkpad T440s, который я купил в 2014 году.

Технические характеристики:

  • Intel® Core™ i7
  • 8 ГБ DDR3L-SDRAM
  • 256 ГБ SSD

Он выглядел хорошим кандидатом на роль постоянно доступного сервера; машины, к которой я мог подключиться в любое время и установить любое серверное программное обеспечение, которое могло понадобиться мне при разработке приложений. Во времена контейнеров Docker настроить машину для запуска серверного ПО очень просто. В этой статье я покажу вам, как использовать преимущества старого ноутбука, установив на него Ubuntu Server, Docker и базу данных MariaDB со всеми необходимыми конфигурациями, чтобы она всегда была доступна и всегда включена.

Подождите, но зачем?

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

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

Перед началом работы

Прежде чем начать работу, убедитесь, что у вас есть резервная копия всех важных файлов, которые вы хотите сохранить. Ищите документы, фотографии, видео, все в этом роде. Потратьте час или около того на поиск ценного содержимого на жестком диске. Лучше перестраховаться, чем потом жалеть! Используйте внешний диск или облачного провайдера, например Google Drive или Dropbox, чтобы переместить файлы. Или, если они уже настроены, перенесите файлы со старого ноутбука на новый, используя локальную сеть.

В зависимости от того, как вы планируете использовать ноутбук, вы можете зашифровать его содержимое или безопасно стереть конфиденциальные данные с помощью таких программ, как File Shredder, Eraser или CCleaner.

Установка серверной операционной системы

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

У вас есть много вариантов. Вот лишь некоторые из них:

  • Red Hat Enterprise Linux
  • Ubuntu Server
  • Windows Server Core

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

Я выбрал Ubuntu Server, которая, на мой взгляд, является самой простой в установке и использовании. Я не буду подробно описывать, как его установить. Вы можете найти множество онлайн-ресурсов, которые подробно объяснят, как это сделать. Вкратце, вам понадобится USB-накопитель, скачайте ISO-образ Ubuntu Server и используйте программу типа Etcher или Rufus для создания загрузочного USB-накопителя. Затем вы подключаете этот USB-накопитель к ноутбуку и загружаетесь с него. На моем Thinkpad мне пришлось нажать клавишу F11 при запуске ноутбука, чтобы войти в меню загрузки и выбрать USB-накопитель. Дальше все просто, следуйте инструкциям.

Также не забудьте установить SSH-сервер (Ubuntu Server включает его по умолчанию).

Установка статического IP-адреса

При настройке сетевого подключения установите статический IP-адрес, чтобы вы могли подключаться к серверу с других машин (например, с вашей машины для разработки программного обеспечения). В Ubuntu Server это можно сделать после процесса установки, изменив файл /etc/netplan/00-installer-config-wifi.yaml следующим образом:

network:
  version: 2
  wifis:
    wlp3s0:
      access-points:
        YOUR_WIFI_CONNECTION_NAME:
          password: YOUR_WIFI_PASSWORD
      dhcp4: false
      addresses: [192.168.1.200/24]
      routes:
        - to: default
          via: 192.168.1.1
Войти в полноэкранный режим Выйти из полноэкранного режима

Используйте имя, пароль и шлюз вашего Wi-Fi-соединения. В примере выше я назначил статический IP-адрес 192.168.1.200. Вы можете перезагрузить конфигурацию, используя:

sudo netplan apply
Войти в полноэкранный режим Выйти из полноэкранного режима

Отключение спящего режима при закрытой крышке

Вы, вероятно, хотите, чтобы ваш сервер продолжал работать даже при закрытой крышке. Чтобы запретить Ubuntu Server спать или переходить в приостановленный режим, отредактируйте файл /etc/systemd/logind.conf следующим образом.

Убедитесь, что следующие строки не закомментированы и что их значения соответствуют указанным:

HandleLidSwitch=lock
LidSwitchIgnoreInhibited=no
Войти в полноэкранный режим Выйти из полноэкранного режима

Готово! Закройте крышку и разместите сервер в любом месте вашего дома. Я разместил его в углу своего кабинета:

Подключение к серверу через SSH

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

ssh alejandro@192.168.1.200
Войти в полноэкранный режим Выйти из полноэкранного режима

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

Даже если вы можете использовать IP-адрес для подключения к серверу, вы можете настроить имя хоста на вашей машине разработки, которое будет соответствовать IP-адресу сервера. Просто добавьте запись в файл /etc/hosts на Linux-подобных машинах или c:WindowsSystem32driversetchosts на Windows:

192.168.1.200 thinkpad.local
Вход в полноэкранный режим Выход из полноэкранного режима

Укажите IP-адрес вашего сервера и используйте любое имя хоста. Хорошей практикой является добавление .local в конце, чтобы помнить, что имя хоста является локальным для вашей сети и не видно из внешнего мира. В macOS вам придется добавить также адрес IPv6, если вы хотите избежать долгого поиска DNS, который замедляет процесс подключения. Например:

fe80::2ab2:bdff:fea2:17dc thinkpad.local
Войти в полноэкранный режим Выход из полноэкранного режима

Теперь вы можете подключиться к серверу, используя что-то вроде:

ssh alejandro@thinkpad.local
Войти в полноэкранный режим Выйти из полноэкранного режима

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

Установка Docker

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

Если вы предпочитаете иметь виртуальные машины вместо контейнеров, хорошим вариантом будет Vagrant. Vagrant позволяет автоматизировать создание и инициализацию виртуальных машин с помощью VirtualBox или других гипервизоров (в терминологии Vagrant они называются провайдерами). Я думаю, что виртуальные машины, запущенные на вашем старом ноутбуке, — это излишество. Запуск контейнеров обеспечивает хорошую изоляцию, а с точки зрения разработчика они выглядят так, как будто это виртуальные машины. По этой причине я предлагаю использовать вместо них Docker.

Вы также можете установить любое серверное программное обеспечение (например, базу данных) на пустой металл, прямо поверх Ubuntu Server; однако использование контейнеров дает вам возможность экспериментировать с различными опциями без необходимости деинсталляции и переустановки программного обеспечения. Вы просто запускаете контейнеры, которые хотите использовать, останавливаете или удаляете их, не изменяя базовую операционную систему. Более того, существует множество готовых к использованию образов Docker (образ — это как шаблон для создания контейнеров) для всех видов интересных приложений. Это упрощает процесс установки баз данных, веб-серверов и других инструментов.

Чтобы установить Docker, подключитесь к новому серверу с помощью SSH, как описано выше, и выполните следующую команду:

sudo apt-get install docker.io
Войти в полноэкранный режим Выйти из полноэкранного режима

Убедитесь, что демон Docker запущен:

sudo systemctl status docker
Войти в полноэкранный режим Выйти из полноэкранного режима

Вы должны увидеть надпись Active (работает).

Установка сервера базы данных

Если вы наберете в Google название базы данных плюс «docker image», вы найдете все необходимое для установки этой базы данных с помощью Docker. В этой статье я покажу, как установить MariaDB Community Server, продвинутый сервер баз данных SQL с открытым исходным кодом. Обратите внимание, что если у вас есть подписка на MariaDB, вы можете установить MariaDB Enterprise Server — улучшенную, усиленную и защищенную сборку MariaDB Community Server.

Загрузите образ MariaDB Community Server и запустите его с помощью Docker:

sudo docker run --detach --name mariadb --restart unless-stopped --env MARIADB_ROOT_PASSWORD='password' --publish '3306:3306/tcp' --expose '3306' mariadb:latest
Войдите в полноэкранный режим Выйти из полноэкранного режима

Это запустит сервер MariaDB в контейнере с именем mariadb. Контейнер запускается автоматически при перезагрузке машины, если вы не остановите контейнер вручную следующим образом:

docker container stop mariadb
Войти в полноэкранный режим Выйти из полноэкранного режима

Убедитесь, что контейнер запущен, проверив, что его статус Up:

docker container ls
Войти в полноэкранный режим Выход из полноэкранного режима

Скопируйте IPv4-адрес контейнера из вывода:

docker network inspect bridge
Войти в полноэкранный режим Выйти из полноэкранного режима

Используйте этот IP-адрес для подключения к серверу MariaDB с сервера (на котором запущен Docker). Например:

mariadb -h 172.17.0.2 -u root -p
Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь завершите сеанс SSH, чтобы отключиться от сервера:

exit
Войти в полноэкранный режим Выйти из полноэкранного режима

С вашей машины разработки подключитесь к базе данных MariaDB, используя имя хоста (или IP-адрес, если вы не настроили имя хоста). Например:

mariadb -h thinkpad.local -u root -p
Войти в полноэкранный режим Выйти из полноэкранного режима

Попробуйте выполнить SQL-запрос:

Поздравляем! Теперь ваш старый ноутбук — это ваш новый сервер баз данных.

Защита сервера базы данных

Возможно, вы захотите установить надежный пароль для пользователя root (интересный факт: MariaDB Enterprise Server не позволит вам использовать даже слабый пароль):

SET PASSWORD FOR 'root'@'%' = PASSWORD('Password123!');
Войдите в полноэкранный режим Выход из полноэкранного режима

Возможно, вы также захотите создать нового пользователя «почти root»:

CREATE USER 'user'@'%' IDENTIFIED BY 'Password123!';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';
Войти в полноэкранный режим Выйти из полноэкранного режима

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

DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
Войдите в полноэкранный режим Выход из полноэкранного режима

Что дальше?

Существует множество других вещей, которые вы можете установить на свой новый сервер. Серверы непрерывной интеграции, веб-серверы, серверы электронной почты и т.д. Docker Hub — это огромный каталог образов, которые вы можете безопасно опробовать в изолированных контейнерах Docker. Вы всегда можете запустить контейнеры и удалить их, когда закончите эксперименты. Например, вы можете удалить контейнер MariaDB следующим образом:

docker container stop mariadb
docker rm mariadb
Войти в полноэкранный режим Выйти из полноэкранного режима

Затем попробуйте использовать MariaDB с ColumnStore. ColumnStore — это механизм хранения данных для баз данных MariaDB, который повышает производительность специальных аналитических запросов без необходимости поддерживать индексы базы данных. Вы можете установить MariaDB с ColumnStore через Docker:

sudo docker run --detach --name mariadb-columnstore --restart unless-stopped --env MARIADB_ROOT_PASSWORD='password' --publish '3306:3306/tcp' --expose '3306' mariadb/columnstore:latest
Войти в полноэкранный режим Выйти из полноэкранного режима

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

CREATE TABLE some_table(
    ... column definitions here ...
) ENGINE=ColumnStore;
Войти в полноэкранный режим Выйти из полноэкранного режима

Наслаждайтесь вашим новым сервером баз данных!

Оцените статью
devanswers.ru
Добавить комментарий