Все началось с небольшого эксперимента по установке сервера обмена сообщениями Synapse на смартфон с операционной системой Ubuntu Touch , и завершилось созданием небольшого домашнего дата-центра на 5 ARM-мини-серверах (Raspberry Pi и ODROID-XU4), основной функцией которого является обеспечение работы системы обмена сообщениями/вызовами по протоколу Matrix и WebRTS для 10 пользователей.
Matrix — открытый протокол обмена мгновенными сообщениями (на основе децентрализованных серверов), который позволяет пользователям обмениваться текстовыми сообщениями и файлами, совершать голосовые и видеозвонки, создавать каналы чата и т. д.
Самый известный клиент сети Matrix — Riot.im, реализованный в виде мобильного, веб- или настольного приложения.
По функциональности он не уступает клиентам современных мессенджеров Slack/Telegram/WhatsApp. Итак, после установки на смартфон (сервером сложно пользоваться, когда он находится в кармане и постоянно меняет адрес и способ подключения — WiFi/3G/4G), следующим шагом стал перенос системы на один Raspberry Pi. Фронтенд - реализация Серверы Synapse на Python , back-end — база данных PostgreSQL из стандартного дистрибутива Raspbian for Raspberry Pi. Подключение к Интернету осуществляется через переадресацию портов (порт 8448) на домашнем модеме vDSL со статическим внешним IP-адресом.
Все работало, но иногда со "скрипом" - были периодические задержки - подключение клиентов занимало несколько секунд, таймауты при подключении к сторонним каналам/комнатам matrix.org. После переноса базы данных PostgreSQL на второй Raspberry Pi производительность заметно улучшилась, но я все равно иногда испытывал 100%-ную нагрузку на одно из ядер процессора в течение нескольких минут (на фронтенд-стороне).
Чтобы улучшить ситуацию, переднюю часть перенесли на безвентиляторный вариант. Одроид-XU4 (8 ядер ARM, 2 Гб ОЗУ, цена сервера — $59), а затем база данных PostgreSQL была перенесена на второй ODROID-XU4.
Был добавлен USB-переключатель Ethernet (20 долларов США) для подключения серверов по витой паре, внешний USB-накопитель емкостью 2 ТБ, а также 6-портовое зарядное устройство USB для питания 3 Raspberry Pi и коммутатора Ethernet.
Освобожденные Raspberry Pi были преобразованы: межсетевой экран для обеспечения DMZ, сервер Zabbix для мониторинга, сервер горячего резерва для базы данных PostgreSQL (находится в другой комнате).
Был добавлен еще один Raspberry Pi с модулем мобильного доступа в Интернет, чтобы обеспечить второй канал связи через модуль 4G для Raspberry Pi.
Кроме того, был добавлен источник бесперебойного питания UPS.
При установке система выглядела так (размещается внутри электрокамина):
Размер серверной базы данных Synapse за шесть месяцев вырос на ~325 Мб:
Размер базы данных системы мониторинга Zabbix вырос до 1,25 Гб и скоро стабилизируется:
Нагрузка внешней сети (график за 7 дней):
Загрузка внутренней сети (график за 7 дней):
График фронтальной нагрузки за 3 дня:
При включенном шифровании на клиентах данные хранятся в базе данных в зашифрованном виде, поэтому даже физический доступ к серверу не приведет к утечке данных.
Все вышеперечисленное можно реализовать на недорогом VPS в любом дата-центре, но если оно надежно работает дома, то почему бы не сделать это на домашнем оборудовании? Теги: #arm #Raspberry Pi #Системное администрирование #postgresql #мессенджеры #Социальные сети и сообщества #Настройка Linux #Matrix #Системы обмена сообщениями #odroid #synapse #Ubuntu Touch
-
Новая «Девятка» Samsung.
19 Oct, 24 -
Во Франции Биткойны — Это Не Деньги
19 Oct, 24 -
Go: Два Года В Производстве
19 Oct, 24