Брацки Фермы — различия между версиями

Материал из Брацка Правки
Перейти к: навигация, поиск
(Стойкость)
(Развитие)
 
(не показаны 33 промежуточные версии 3 участников)
Строка 26: Строка 26:
 
При том, что отказоустойчивость на является глобальным требованием ко всем частям инфраструктуры, любая часть жизнеспособного прототипа инфраструктуры должна быть:<ol type="a"><li>наблюдаемым средствами мониторинга,</li><li>восстанавливаемым в случае проблем,</li><li>связанным воедино, в частности, средствами SSO, и</li><li>обеспечивающим CDN и Geocast для основных приложений.</li></ol>
 
При том, что отказоустойчивость на является глобальным требованием ко всем частям инфраструктуры, любая часть жизнеспособного прототипа инфраструктуры должна быть:<ol type="a"><li>наблюдаемым средствами мониторинга,</li><li>восстанавливаемым в случае проблем,</li><li>связанным воедино, в частности, средствами SSO, и</li><li>обеспечивающим CDN и Geocast для основных приложений.</li></ol>
  
===Идеи===
+
==Компоненты Ферм==
Предварительные идеи по архитектуре таковы:
 
#Один железный сервер с относительно небольшой производительностью (32-64Gb) и относительно большим объёмом диска (2-3Tb) будет служить платформой для [[Опытно Облако|Опытна Облака]]. Eго виртуализация поддержит эксперименты при том, что отказоустойчивость для них не принципиальна.
 
#Один-два отказоустойчивых высокопроизводительных кластера и/или небольшое облако для основных приложений.
 
#Несколько VPS в разных частях света, идельно, поддерживаемых CDN и с базами, завязанными в кластеры. Теоретически, их отказоустойчивость может достигаться либо отказоустойчивостью баз, либо дополнительными услугами, типа Floating IP у [[DigitalOcean]], предоставляемыми компаниями сдающими в аренду виртуальные серверы.
 
#Общественные облака. Уже куплена связка [[Google Cloud Platform]] и [[Cloudflare]] под [[Брацка Вебка|Брацку Вебку]]. Как минимум, планируется рассмотреть:
 
#*облако Hetzner для тренингов (которое можно разворачивать перед тренингом и сворачивать после).
 
#*что-то отдельное для [[Брацки Жици|Брацкиx Жиц]].
 
  
==Материальная часть==
+
===Кампусна Ферма===
Требования к материальной части изложены на https://pve.proxmox.com/wiki/System_Requirements
+
:''Основная вики-страница: [[Кампусна Ферма]]''
  
===Железо 1===
+
:[[Кампусна Ферма]], отказоустойчивый кластер для основных приложений [[Брацки Кампус|Брацка Кампуса]], включая [[Брацка Учебка|Брацку Учебку]], [[Брацка Правка|Брацку Правку]].
:Железный сервер ([[bare metal]]) арендован на [[Hetzner]]. Он имеет такие характеристики:
 
:*Dedicated Root Server SB35
 
:*Intel Core i7-3930
 
:*2x HDD SATA 3,0 TB
 
:*8x RAM 8192 MB DDR3
 
:*NIC 1 Gbit - Intel 82579LM
 
:*Location: FSN1 (Falkenstein/Vogtland, Germany) -- DC7
 
:*Rescue system (English)
 
  
:Основной IP адрес ''Железа'' -- <span style="background-color:black">наш-IP</span> . На начало февраля 2022, ''Железо'' использует один дополнительный IP адрес 4-го протокола ([[IPv4]]):
+
:Несколько VPS в разных частях света, идельно, поддерживаемых CDN и с базами, завязанными в кластеры. Теоретически, их отказоустойчивость может достигаться либо отказоустойчивостью баз, либо дополнительными услугами, типа Floating IP у [[DigitalOcean]], предоставляемыми компаниями сдающими в аренду виртуальные серверы.
:*IP: 5.9.40.133
 
:*Gateway: 5.9.40.129
 
:*Netmask: 255.255.255.224
 
:Не предпринималось попыток работать с IP адресами 6-го протокола ([[IPv6]]).
 
  
:Два инструмента задействованы для виртуализации:
+
===Опытна Ферма===
:#На уровне основного сервера, виртуализация выполнена средствами [[RAID]], то есть два жёстких диска HDD SATA действуют как один диск на 3,0 TB, обеспечивая сохранение данных в случае отказа одного из дисков.
+
:''Основная вики-страница: [[Опытна Ферма]]''
:#Для создания виртуальных машин и работы с контейнерами, установлена среда [[ProxmoxVE]].
+
:Один железный сервер с относительно небольшой производительностью (32-64Gb) и относительно большим объёмом диска (2-3Tb) будет служить платформой для [[Опытно Облако|Опытна Облака]]. Eго виртуализация поддержит эксперименты при том, что отказоустойчивость для них не принципиальна.
  
===Железо 2===
+
===Делова Ферма===
:Характеристики второго ([[bare metal]]) сервера:
+
:''Основная вики-страница: [[Делова Ферма]]''
:*Dedicated Root Server
 
:*Intel Xeon E3-1245
 
:*2x HDD SATA 3,0 TB Enterprise
 
:*4x RAM 8192 MB DDR3 ECC
 
:*NIC 1 Gbit Intel 82574L
 
:*RAID Controller 4-Port SATA PCI-E LSI MegaRAID SAS 9260-4i
 
:*Location: FSN1 (Falkenstein/Vogtland, Germany) -- DC7
 
:*Rescue system (English)
 
  
На основном сервере используется либо локальный IP, либо частный диапазон IP с DHCP. Если не возникнет особых проблем, мы планируем использовать 2 адреса IPv4. Мы также открыты для изучения IPv6. Если мы используем адреса About ipv4, нам нужно 5 ips: один для основного сервера, два для шлюза, три для любого vps или контейнера и четыре для Wordpress vps, и 5 для любого другого, который нам понадобится в будущем.
+
:[[Делова Ферма]], отказоустойчивый высокопроизводительный кластер или небольшое облако для основных приложений [[Делово Бюро|Делово Бюро]].
  
ProxmoxVE поставляется с OpenZFS, поэтому мы настоятельно рекомендуем использовать его. Также будут обсуждаться другие реализации программных RAID на различных уровнях. На данном этапе мы не рассматриваем аппаратные решения, чтобы избежать зависимости от проприетарных карт RAID.
+
===Другие идеи===
 +
Предварительные идеи по другим компонентам таковы:
 +
:#Отказоустойчивый высокопроизводительный кластер или небольшое облако под Мастерские.
 +
:#Общественные облака. Уже куплена связка [[Google Cloud Platform]] и [[Cloudflare]] под [[Брацка Вебка|Брацку Вебку]]. Как минимум, планируется рассмотреть:
 +
:#*облако Hetzner для тренингов (которое можно разворачивать перед тренингом и сворачивать после).
 +
:#*что-то отдельное для [[Брацки Жици|Брацкиx Жиц]].
  
 
==VPS ресурсы==
 
==VPS ресурсы==
Строка 82: Строка 60:
 
|rowspan="2"|Проблем нет; это -- один из двух активно используемых дроплетов на данный момент -- Backups are currently enabled
 
|rowspan="2"|Проблем нет; это -- один из двух активно используемых дроплетов на данный момент -- Backups are currently enabled
 
|-
 
|-
|NYC1, 2GB, 50GB disk, IP 159.89.230.212, $10 в месяц||Новый дроплет под систему для работы с [[Оплёт]]ом||colspan="2" style="text-align:left;"|
+
|NYC1, 2GB, 50GB disk, IP 159.89.230.212, $10 в месяц||Дроплет под систему для работы с [[Оплёт]]ом||colspan="2" style="text-align:left;"|
*Инсталляция Redmine -- она стоит отдельно от всего для использования исключительно администраторами.
+
*На данный момент не используется вообще.
*Инсталляция [[Moodle]] на https://wiki.ksacerts.com
 
 
|}
 
|}
  
Строка 115: Строка 92:
 
===Мониторинг===
 
===Мониторинг===
 
:Мониторинг систем включает мониторинг работы как вычислительных серверов, так и приложений.
 
:Мониторинг систем включает мониторинг работы как вычислительных серверов, так и приложений.
:#Для мониторинга систем, установлен [[Nagios Core]]. Используя агентов слежения, он отслеживает работу всех серверов системы, включая:<ul><li>Доступность сетевых услуг ([[SMTP]], [[POP3]], [[HTTP]], [[NNTP]], [[ICMP]], [[SNMP]], [[FTP]], [[SSH]]).</li><li>Использование ресурсов (processor load, disk usage, system logs, количество активных пользователей).</li><li>Доступность баз данных (в настоящее время -- [[MariaDB Server]], в перспективе -- отслеживание и других услуг кластеров).</li><li>Состояние сертификатов SSL. Для отслеживания  сертификатов, несколько инструментов не подошли, показывали срок действия один на все домены. Выбор был остановлен на check_ssl_cert. Отслеживаемые домены были объеденены в host groups и единую сервисную группу. Результат удовретворительный. Нужно будет подобавлять все нужные домены.</li></ul>Мониторинг осуществляется как через админовский интерфейс, так и через почтовые уведомления. Также был установлен [[Zabbix]], но его пока не получилось подключить к базам данных. Планируется далее продолжить просмотр других специализированных приложений.
+
:#Для мониторинга систем, установлен [[Nagios Core]]. Используя агентов слежения, он отслеживает работу всех серверов системы, включая:<ul><li>Доступность сетевых услуг ([[SMTP]], [[POP3]], [[HTTP]], [[NNTP]], [[ICMP]], [[SNMP]], [[FTP]], [[SSH]]).</li><li>Использование ресурсов (processor load, disk usage, system logs, количество активных пользователей).</li><li>Доступность баз данных (в настоящее время -- [[MariaDB Server]], в перспективе -- отслеживание и других услуг кластеров).</li><li>Состояние сертификатов SSL. Для отслеживания  сертификатов, несколько инструментов не подошли, показывали срок действия один на все домены. Выбор был остановлен на check_ssl_cert. Отслеживаемые домены были объеденены в host groups и единую сервисную группу. Результат удовретворительный. Нужно будет подобавлять все нужные домены.</li></ul>Мониторинг осуществляется как через админовский интерфейс, так и через почтовые уведомления. Также был установлен [[Zabbix]], но его не получилось подключить к базам данных и если осуществлять повторную попытку, то необходимо заново устанавливать[[Zabbix]]. Планируется далее продолжить просмотр других специализированных приложений.
 
:#Для мониторинга отдельных приложений и баз данных, помимо систем сетевого мониторинга, планируется использовать их внутренние функции, а также другие существующие решения.
 
:#Для мониторинга отдельных приложений и баз данных, помимо систем сетевого мониторинга, планируется использовать их внутренние функции, а также другие существующие решения.
  
Строка 146: Строка 123:
 
===Базы данных===
 
===Базы данных===
 
:''Облако'' задействует большой спектр систем управления базами данных, некоторые из которых структурированы, а некоторые ориентированы на документы.
 
:''Облако'' задействует большой спектр систем управления базами данных, некоторые из которых структурированы, а некоторые ориентированы на документы.
:#Наибольшая часть пользовательских приложений использует базы управления данными на основе [[MariaDB Server]]. Администраторское приложение [[PhpMyAdmin]] используется для администрирования каждого из них.
+
:#Наибольшая часть пользовательских приложений использует базы управления данными на основе [[MariaDB Server]].
 
:#Отдельные приложения, например, [[Брацка Крынка]] и [[Брацка Справа]], задействуют базы управления данными на основе [[PostgreSQL]].
 
:#Отдельные приложения, например, [[Брацка Крынка]] и [[Брацка Справа]], задействуют базы управления данными на основе [[PostgreSQL]].
 
:#Обособленная установка [[MariaDB Server]], отличная от той, что поддерживает большую часть пользовательских приложений,  также вовлечена в управление пользователями [[Оплёт]]а.
 
:#Обособленная установка [[MariaDB Server]], отличная от той, что поддерживает большую часть пользовательских приложений,  также вовлечена в управление пользователями [[Оплёт]]а.
:#Идентификационный сервер [[Оплёт]]а, то есть та его часть, которая работает с другими приложениями, построен на базе сервера [[WSO2 IS]] и задействует три базы [[H2 DBMS]].
+
:#Идентификационный сервер [[Оплёт]]а, то есть та его часть, которая работает с другими приложениями, работает на базе сервера [[OpenLdap]] и задействует три базы [[H2 DBMS]]. Была попытка с [[WSO2 IS]], но полностью внедрить не вышло. Удалось настроить [[WSO2 IS]] для [[Wordpress]], но все застопорилось на настройке для Moodle.
 
:#[[NoSQL]] и структурированные распределённые базы будут задействованы в работу будущей интеграционной платформы [[Оплёт]]а.
 
:#[[NoSQL]] и структурированные распределённые базы будут задействованы в работу будущей интеграционной платформы [[Оплёт]]а.
  
Строка 250: Строка 227:
 
===Общественное облако===
 
===Общественное облако===
 
Общественное облако типа [[AWS]] должно быть использовано первым из-за меньших расходов по его вводу в эксплуатацию.
 
Общественное облако типа [[AWS]] должно быть использовано первым из-за меньших расходов по его вводу в эксплуатацию.
 +
 +
==Веб-доступность==
 +
Content delivery network; CDN; reverse proxy
 +
 +
===Географическая доступность===
 +
:''Облако'' распределено по нескольким континентам с тем, чтобы пользователь работал с тем приложением, которое более доступно для этого пользователя. Для этого будут планироваться [[DNS Anycast]], [[DNS Geocast]] и аналогичные распределительные системы. Есть план отправлять пользователя на тот сервер, который наиболее доступен конкретному пользователю. Усилия по улучшению географической доступности являются частью [[#Доменные проекты|Доменных проектов]].
 +
 +
===Доменные имена===
 +
:Усилия по улучшению доменных имён являются частью [[#Доменные проекты|Доменных проектов]]. Хотя планируется использование десайтков доменных имён, речь пока идёт о двух основных:
 +
:#cnmcyber.com -- некоммерческий сайт для англоязычных пользователей; на коммерческой стороне, он должен поддерживаться сайтом vit4all.com;
 +
:#bskol.com -- некоммерческий сайт для русскоязычных пользователей; на коммерческой стороне, он должен поддерживаться сайтом vsemka.com.
 +
:Доменные имена зарегистрированы на [[GoDaddy]]; [[nameserver]]s расположены там. Записи делались спонтанно  не подвергались ревизии. Планируется:
 +
:*Проверить существующие и создать нехватающие [[DNS]].
 +
:*Рассмотреть добавку новых [[DNSSEC]] записей. [[DNSSEC]] не является критичной -- может быть отлажено только для какой-то части зон [[DNS]]. Проект ''Школы'' -- учебный, нам важно иметь разные вещи для того, чтобы показывать ученикам.
 +
:*Изучить возможность [[Dynamic DNS]] ([[DDNS]]) или виртуальных [[DNS]].
 +
 +
===Нахождение в Паутине===
 +
:Говоря об IP адресах, в данный момент используется [[IPv4]], но есть план разобраться с более новым протоколом. Судя по некоторым публикациям, [[IPv6]] решит проблему отказоустойчивости в части перенаправления трафика.
 +
 +
:В дополнение, есть план разобраться с виртуальными адресами ([[virtual IP address]]). [[Digitalocean]] предлагает [[floating IP address]], который можно устанавливать на те дроплеты ([[VPS]]), которые расположены в одном датацентре. То есть, мы этой возможностью не воспользуемся. [[Hetzner|Hetzner.de]] предлагает [[failover IP]], хотя с ними надо разобраться. Не похоже, что [[Contabo]] предлагает что-то вроде этого.
 +
 +
:Усилия по улучшению нахождения ''Облака'' в Паутине являются частью [[#Доменные проекты|Доменных проектов]].
  
 
==Разработка Ферм==
 
==Разработка Ферм==
Строка 255: Строка 254:
  
 
===Подключение консультантов===
 
===Подключение консультантов===
Для оценки существующей разработки и её документации, мы организуем консультации с экспертами. На данный момент, их двое. Никто по-русски не говорит, документацию для них надо перевести хотя бы в каком-то объёме.
+
Для оценки существующей разработки и её документации, мы организуем консультации с экспертами. На данный момент, их двое. Никто по-русски не говорит, поэтому документация по отказоустойчивому кластеру была переведена, найти её можно https://setka.bskol.com/index.php?r=file%2Ffile%2Fdownload&guid=96c35fd8-4363-406f-86a5-22a7f096b0db&hash_sha1=807ace8f.
 
 
===Поиск подрядчиков===
 
Для ускорения проекта, мы ищем подрядчиков на новый кластер или пару их. Объявление на разовую работу опубликовано на upwork, Каролина назначена рекрутером, заявки приходят.
 
  
Если кластер из существующего железа собрать невозможно, я думаю отказаться от второго сервера и хранилища, оставив первый сервер на Опытно Облако (где отказоустойчивость не обязательна, так как мы будем использовать его для экспериментов). Подрядчики соберут один или два меньших кластера на железе, куда мы поставим основные приложения, ну а отказоустойчивости остальных мы будем добиваться на VPS-ках.
+
===Подключение разработчиков===
 +
:Для ускорения разработок, мы ищем подрядчиков. Для каждой разработки подрядчиками:
 +
:#Заказчик договаривается с одним из координаторов о работе над разработкой.
 +
:#Координатор документирует на отдельной вики-странице задание подрядчику и план его поиска.
 +
:#Заказчик принимает, отклоняет или предлагает доработать документацию и план.
 +
:#Если задание и план приняты, заказчик и координатор отрабатывают план -- заказчик размещает объявление, назначает координатора рекрутером, координатор проводит отбор подрядчика.
 +
:#В процессе найма подрядчика, потенциальный подрядчик и координатор уточняют задание и разрабатывают план исполнения этого задания на той же вики-странице.
 +
:#При наличии плана работы и по представлению координатора, заказчик нанимает подрядчика, с которым координатор работает вплоть до исполнения задания.
  
 
===Подключение интересующихся===
 
===Подключение интересующихся===
 
На базе сообщества на Сетке, мы планируем организовать еженедельные встречи интересующихся этим проектом. Объявления мы можем поставить на rabota.ua/work.ua -- из-за войны, многие системные администраторы в Украине просто не знают, чем заняться. На встречи мы будем готовить 2-3 доклада о наших достижениях и задачах.
 
На базе сообщества на Сетке, мы планируем организовать еженедельные встречи интересующихся этим проектом. Объявления мы можем поставить на rabota.ua/work.ua -- из-за войны, многие системные администраторы в Украине просто не знают, чем заняться. На встречи мы будем готовить 2-3 доклада о наших достижениях и задачах.
  
Эти мероприятиями мы воспользуемся для рекрутинга экспертов, подрядчиков и координаторов.
+
Этими мероприятиями мы воспользуемся для рекрутинга экспертов, подрядчиков и координаторов.
  
 
;Потенциальное объявление
 
;Потенциальное объявление
Строка 289: Строка 292:
 
:По итогам технического собеседования, Вас могут пригласить на обсуждение условий сотрудничества.
 
:По итогам технического собеседования, Вас могут пригласить на обсуждение условий сотрудничества.
  
==Инциденты с сетью==
+
==Развитие==
 +
:''Основная вики-страница: [[Работы над Bskol]]''
  
===Стандартные сообщения===
+
==Связанные лектио==
:<blockquote><p>We have detected that your server is using different MAC addresses from those allowed by your Robot account. Please take all necessary measures to avoid this in the future and to solve the issue. Please visit our FAQ here, if you are unsure how to proceed: https://docs.hetzner.com/robot/dedicated-server/faq/error-faq/#mac-errors</p></blockquote>
+
*[[Структура Облака]]
 
+
*[[Что Есть Фермы]]
===Работа с сетью===
+
*[[Политика Приватности]]
:Были попытки разрешить проблемы с сетью; однако, сообщения продолжаются.
+
*[[Новые Технологии]]
 
 
==Инциденты с портами==
 
В середине декабря, немецкая национальная служба по авариям уведомила hetzner.de о проблемах с разметкой портов ''Железа''.
 
 
 
===Сообщение от 15 декабря===
 
:<blockquote><p>Dear Sir or Madam, the Portmapper service (portmap, rpcbind) is required for mapping RPC requests to a network service. The Portmapper service is needed e.g. for mounting network shares using the Network File System (NFS). The Portmapper service runs on port 111 tcp/udp.</p><p>In addition to being abused for DDoS reflection attacks, the Portmapper service can be used by attackers to obtain information on the target network like available RPC services or network shares.</p><p>Over the past months, systems responding to Portmapper requests from anywhere on the Internet have been increasingly abused DDoS reflection attacks against third parties.</p><p>Please find below a list of affected systems hosted on your network. The timestamp (timezone UTC) indicates when the openly accessible Portmapper service was identified.</p><p>We would like to ask you to check this issue and take appropriate steps to secure the Portmapper services on the affected systems or notify your customers accordingly.</p><p>If you have recently solved the issue but received this notification again, please note the timestamp included below. You should not receive any further notifications with timestamps after the issue has been solved.</p><p>Additional information on this notification, advice on how to fix reported issues and answers to frequently asked questions: https://reports.cert-bund.de/en/</p><p>Affected systems on your network:</p><ul><li>Format: ASN | IP | Timestamp (UTC) | RPC response</li><li>24940 | <span style="background-color:black">наш-IP</span> | 2021-12-14 15:24:55 | 100000 4 111/udp; 100000 3 111/udp; 100000 2 111/udp; 100000 4 111/udp; 100000 3 111/udp; 100000 2 111/udp;</li></ul></blockquote>
 
 
 
===Решение проблемы===
 
:Проблема решена посредством установления данных фильтров:
 
:<p>-A INPUT -s <span style="background-color:black">наш-IP</span>/24 -p udp -m udp --dport 111 -j ACCEPT</p><p>-A INPUT -s 127.0.0.1/32 -p udp -m udp --dport 111 -j ACCEPT</p><p>-A INPUT -p udp -m udp --dport 111 -j DROP</p>
 
:Много переделывали и на сервере возникла блокировка данного порта. Возникла из-за того, что у [[Hetzner]] есть своя специфика, нужно просто не забывать о ней.
 
 
 
==Инциденты атак==
 
В конце января, похоже, что роботы внедрились в среду [[ProxmoxVE]], стали захватывать виртуальные машины и использовать их для атак на другие узлы сети Интернет.
 
 
 
===Сообщение от 24 января===
 
<blockquote><p>An attempt to brute-force account passwords over SSH/FTP by a machine in your domain or in your network has been detected. Attached are the host who attacks and time / date of activity. Please take the necessary action(s) to stop this activity immediately. If you have any questions please reply to this email.</p><ul><li>Host of attacker: <span style="background-color:black">наш-IP</span> => static.<span style="background-color:black">&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;</span>.clients.your-server.de => your-server.de</li><li>Responsible email contacts: abuse@hetzner.de, abuse@hetzner.com</li><li>Attacked hosts in our Network: 77.75.251.49, 37.228.156.186, 77.75.251.92</li></ul><p>Logfile entries (time is CE(S)T):</p><ul><li>Mon Jan 24 13:37:16 2022: user: root service: ssh target: 77.75.251.49 source: <span style="background-color:black">наш-IP</span></li><li>Mon Jan 24 13:36:09 2022: user: root service: ssh target: 37.228.156.186 source: <span style="background-color:black">наш-IP</span></li><li>Mon Jan 24 13:35:58 2022: user: root service: ssh target: 77.75.251.92 source: <span style="background-color:black">наш-IP</span></li></ul><p>The recipient address of this report was provided by the Abuse Contact DB by abusix.com. Abusix provides a free proxy DB service which provides the abuse@ address for all global RIRs. Abusix does not maintain the core DB content but provides a service built on top of the RIR databases. If you wish to change or report a non-working abuse contact address, please contact the appropriate RIR responsible for managing the underlying data. If you have any further questions about using the Abusix Abuse Contact DB, please either contact abusix.com directly via email (info@abusix.com) or visit the URL here: https://abusix.com/contactdb. Abusix is neither responsible nor liable for the content or accuracy of this message.</p></blockquote>
 
 
 
===Попытка запрета на выход===
 
:В качестве реакции, была предпринята первая попытка запрета на исходящий траффик:
 
:<nowiki>:INPUT DROP [1:40]</nowiki><br><nowiki>:FORWARD DROP [54:2844]</nowiki><br><nowiki>:OUTPUT DROP [27:13812]</nowiki>
 
 
 
===Сообщения от 24 и 26 января===
 
:<table border="1"><caption>Netscan detected from host <span style="background-color:black">наш-IP</span></caption><tr><th>time</th><th>protocol</th><th>src_ip</th><th>src_port</th><th>&nbsp;</th><th>dest_ip</th><th>dest_port</th></tr><tr><td>Wed Jan 26 05:16:08 2022</td><td>TCP</td><td><span style="background-color:black">наш-IP</span></td><td>49896</td><td>=></td><td>192.168.0.1</td><td>22</td></tr><tr><td>Wed Jan 26 05:16:08 2022</td><td>TCP</td><td><span style="background-color:black">наш-IP</span></td><td>35838</td><td>=></td><td>192.168.0.2</td><td>22</td></tr><tr><td>Wed Jan 26 05:16:08 2022</td><td>TCP</td><td><span style="background-color:black">наш-IP</span></td><td>52894</td><td>=></td><td>192.168.0.3</td><td>22</td></tr></table><p>Чтобы сохранить место, только верхние линии таблицы опубликованы. Аналогичные атаки повторились 26-го января.
 
 
 
===Обновлённая попытка запрета===
 
:В качестве реакции, была предпринята новая попытка запрета на исходящий траффик:
 
:<nowiki>-A FORWARD -p tcp -m tcp --dport 22 -j LOG</nowiki><br><nowiki>-A FORWARD -o vmbr0 -p tcp -m tcp --dport 22 -j DROP</nowiki><br><nowiki>-A OUTPUT -p tcp -m tcp --dport 22 -j LOG</nowiki><br><nowiki>:OUTPUT DROP</nowiki>
 
 
 
===Сообщение от 27 января===
 
<blockquote><p>We have received information regarding spam and/or abuse from botnet.tracker@gmail.com. Please would you take all necessary measures to avoid this in the future:</p><p>This is a notification of unauthorized uses of systems or networks.</p><p>On January 26, 2022, a total of 29 IP addresses from your networks
 
probed my servers for TCP open ports.  Due to their dubious behavior, they are suspected to be compromised botnet computers.</p><p>The log of TCP port scans is included below for your reference (time zone is UTC).  To prevent this mail from getting too big in size, at most 5 attempts from each attacker IP are included.  Those connection attempts have all passed TCP's 3-way handshake, so you can trust the source IP addresses to be correct.</p><p>If you regularly collect IP traffic information of your network, you will see the IPs listed connected to various TCP ports of my server at the time logged, and I suspect that they also connected to TCP ports of many other IPs.</p><p>If a Linux system was at the attacker's IP, you might want to use the command "netstat -ntp" to list its active network connections. If there is still some suspicious connection, find out what PID/program/user ID they belong to. You might find something to help you solve this problem.</p><p>Please notify the victims (owners of those botnet computers) so that they can take appropriate action to clean their computers, before even more severe incidents, like data leakage, DDoS, and the rumored NSA spying through hijacked botnets, arise.  This also helps prevent botnets from taking up your network bandwidth.</p><p>Daily Botnet Statistics</p><ul><li>(time in UTC)=2022-01-26T21:50:03 (attacker's IP)=<span style="background-color:black">наш-IP</span> (IP being scanned)=140^238^215^81 (TCP port being scanned)=4234</li><li>(time in UTC)=2022-01-26T23:39:58 (attacker's IP)=<span style="background-color:black">наш-IP</span> (IP being scanned)=61^61^170^210 (TCP port being scanned)=10056</li><li>(time in UTC)=2022-01-26T23:56:33 (attacker's IP)=<span style="background-color:black">наш-IP</span> (IP being scanned)=172^245^241^177 (TCP port being scanned)=6240</li><li>(time in UTC)=2022-01-26T23:56:55 (attacker's IP)=<span style="background-color:black">наш-IP</span> (IP being scanned)=185^219^132^53 (TCP port being scanned)=1001</li><li>(time in UTC)=2022-01-26T23:57:45 (attacker's IP)=<span style="background-color:black">наш-IP</span> (IP being scanned)=185^219^132^53 (TCP port being scanned)=10081</li></ul></blockquote>
 
 
 
===Отключение машин===
 
:Изучение логов показало, что изначальные проблемы связаны с той виртуальной машиной, на которой была установка WordPress. Эта машина была отключена. Далее в логах показалась машина с установкой Moodle. После этого, было решено отключить все машины до выяснения причин и нахождения средств защиты. Фактически, заражённое ''Железо'' отправлено на карантин.
 
 
 
==Перечень проектов==
 
 
 
===Доменные проекты===
 
:Доменные проекты -- это усилия по улучшению [[#Веб-доступность|Веб-доступности]].
 
 
 
:{|class="wikitable" width=100% style="text-align:center;"
 
|+Профинансированные проекты доменов
 
|Работы
 
![[CDN для Вебки|CDN]]!!DNSSEC!!IPv6!!Переадресация!!Ревизия&nbsp;DNS
 
|-
 
![[Запрос на разработку|Запрос]]
 
|Достаточно||Достаточно||Достаточно||Достаточно
 
|-
 
![[Требования к изделию|Требования]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Архитектура изделия|Архитектура]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Концептуальная модель|Модель]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Прототип изделия|Прототип]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Заказ на создание изделия|Заказ]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Производство нового изделия|Производство]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Конфигурация изделия|Конфигурация]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Усовершенствование изделия|Усовершенствование]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|}
 
 
 
===Проекты кластеров баз===
 
:Проекты кластеров баз -- это усилия по построению [[#Кластеры|Кластеров]].
 
:{|class="wikitable" width=100% style="text-align:center;"
 
|+Профинансированные проекты кластеров баз данных
 
|Работы
 
![[Кластер MariaDB|MariaDB]]!![[Кластер PostgreSQL|PostgreSQL]]!![[Устойчивость для Жици|Жици]]!![[Кластер Оплёта|Оплёта]]
 
|-
 
![[Запрос на разработку|Запрос]]
 
|Достаточно||Достаточно||Достаточно||Достаточно
 
|-
 
![[Требования к изделию|Требования]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Архитектура изделия|Архитектура]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Концептуальная модель|Модель]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Прототип изделия|Прототип]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Заказ на создание изделия|Заказ]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Производство нового изделия|Производство]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Конфигурация изделия|Конфигурация]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Усовершенствование изделия|Усовершенствование]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|}
 
 
 
===Сетевые проекты===
 
:Сетевые проекты -- это усилия по построению [[#Брацки Фермы (инфраструктура)|Сетевой инфраструктуры ''Облака'']], включая [[#Данные в Облаке|Данные в Облаке]]. Усилия по построению [[#Кластеры|Кластеров]] выделены в [[#Кластерные проекты|Кластерные проекты]].
 
 
 
:{|class="wikitable" width=100% style="text-align:center;"
 
|+Профинансированные проекты сетей инфраструктуры
 
|Работы
 
!Восстановление!!Копирование!!Мониторинг!!Отказоустойчивость!!Склад
 
|-
 
![[Запрос на разработку|Запрос]]
 
|Достаточно||Достаточно||Достаточно||Достаточно
 
|-
 
![[Требования к изделию|Требования]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Архитектура изделия|Архитектура]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Концептуальная модель|Модель]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Прототип изделия|Прототип]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Заказ на создание изделия|Заказ]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Производство нового изделия|Производство]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Конфигурация изделия|Конфигурация]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|-
 
![[Усовершенствование изделия|Усовершенствование]]
 
|&nbsp;||&nbsp;||&nbsp;||&nbsp;
 
|}
 

Текущая версия на 13:03, 30 сентября 2022

Брацки Фермы (здесь и далее по тексту -- Фермы) -- это инфраструктура Брацка Облака (здесь и далее по тексту -- Облака). Архитектура облачной инфраструктуры не определена. Скорее всего, когда работа Школы войдёт в привычный режим, инфраструктура должна состоять из некой комбинации частного и общественных облаков.


Содержание

Цели и задачи

Цели

Целью разработки является создание инфраструктур:

  1. Основных пользовательских приложений, которые должны быть высоко доступны. На данный момент, к основным приложениям мы относим Брацку Правку, Брацку Учебку, Брацку Сетку.
  2. Курсовых и эксперементальных приложений, для которых требование отказоустойчивости не принципиально.
  3. Оплётa как системы услуг федерации.

Задачи

  1. До определения и реализации новой архитектуры, поддерживать те технологические ресурсы, которые имеются в наличии, а также развивать их документацию -- общую на Правке и детальную на Крынке.
  2. Исследовать существующие и существовавшие Инциденты с сетью, Инциденты с портами, Инциденты атак и найти пути устранения проблем.
  3. Создать архитектуру Ферм и задокументировать её на вики-страницах, связанных с этой страницей.
  4. Разбить проект на несколько разработок в секции Перечень проектов.
  5. Под каждую разработку определить ответственного координатора, который или которая далее сформирует список консультантов и разработчиков, а также организует сообщество на Сетке и периодические видеоконференции, на которые будут приглашаться все заинтересованные в разработке. С одним из разработчиков должен быть заключён контракт на разработку. Как минимум с одним из консультантов должен быть заключён контракт на консультации и/или участие в видеоконференциях.

Архитектура

Требования к архитектуре

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

  1. отказоустойчивость и высокая доступность основных приложений.
  2. минимальная стоимость.
  3. максимально-возможноe разнообразиe в рамках требования по минимальной стоимости.

Жизнеспособность прототипов

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

  1. наблюдаемым средствами мониторинга,
  2. восстанавливаемым в случае проблем,
  3. связанным воедино, в частности, средствами SSO, и
  4. обеспечивающим CDN и Geocast для основных приложений.

Компоненты Ферм

Кампусна Ферма

Основная вики-страница: Кампусна Ферма
Кампусна Ферма, отказоустойчивый кластер для основных приложений Брацка Кампуса, включая Брацку Учебку, Брацку Правку.
Несколько VPS в разных частях света, идельно, поддерживаемых CDN и с базами, завязанными в кластеры. Теоретически, их отказоустойчивость может достигаться либо отказоустойчивостью баз, либо дополнительными услугами, типа Floating IP у DigitalOcean, предоставляемыми компаниями сдающими в аренду виртуальные серверы.

Опытна Ферма

Основная вики-страница: Опытна Ферма
Один железный сервер с относительно небольшой производительностью (32-64Gb) и относительно большим объёмом диска (2-3Tb) будет служить платформой для Опытна Облака. Eго виртуализация поддержит эксперименты при том, что отказоустойчивость для них не принципиальна.

Делова Ферма

Основная вики-страница: Делова Ферма
Делова Ферма, отказоустойчивый высокопроизводительный кластер или небольшое облако для основных приложений Делово Бюро.

Другие идеи

Предварительные идеи по другим компонентам таковы:

  1. Отказоустойчивый высокопроизводительный кластер или небольшое облако под Мастерские.
  2. Общественные облака. Уже куплена связка Google Cloud Platform и Cloudflare под Брацку Вебку. Как минимум, планируется рассмотреть:
    • облако Hetzner для тренингов (которое можно разворачивать перед тренингом и сворачивать после).
    • что-то отдельное для Брацкиx Жиц.

VPS ресурсы

DigitalOcean

Описание URL Технология Предназначение Проблемы
NYC1, 2GB, 50GB disk, IP 159.89.93.1, $10 в месяц Новый дроплет под Оплёт
  • Opplet на opplet.net -- самописанная на Yii система управления пользователями
Проблем нет; это -- один из двух активно используемых дроплетов на данный момент -- Backups are currently enabled
NYC1, 2GB, 50GB disk, IP 159.89.230.212, $10 в месяц Дроплет под систему для работы с Оплётом
  • На данный момент не используется вообще.

Contabo

Доступы

Администраторские

Управление виртуальными машинами и контейнерами производится через интерфейс ProxmoxVE. Остальные доступы организованы по SSH.

Пользовательские

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

Защита

Для предотвращения так называемых brute-force attack, то есть попыток подобрать пароли методом перебора множества вариантов, был установлен Fail2Ban.
При предоставлении доступа через SSH к тем машинам, на которых был установлен WordPress и Moodle, там постоянно что-то происходило, не давало зайти по SSH. Именно на этих 2-х машинах Fail2Ban был отключен первым.
Далее, Fail2Ban делал записи в iptables, из-за которых невозможно было получить доступ к серверам по SSH для Apache Guacomole. После этого Fail2Ban был заблокирован.

Инфраструктура Облака включает в себя виртуализованное Опытно Облако, используемое для экспериментов, и эксплуатационное облако, архитектура которого пока не определена. Ранее для эксплуатационного облака использовался OpenStack. Скорее всего, когда работа Школы войдёт в привычный режим, инфраструктура эксплуатационного облака должна состоять из некой комбинации частного и общественных облаков.

Вычислительные сервера

В настоящее время, используется пять виртуальных частных серверов (virtual private server; VPS):
  1. Три арендованы у Contabo; два сервера и отдельное дисковое пространство для резервных копий располагаются в Сент-Луисе, Миссури, США, один -- в Германии. Планов уезжать с Contabo нет, но есть план заменить один сервер в Сент-Луисе, Миссури на сервер в Сингапуре;
  2. Два VPS (они зовут их "дроплетами") арендованы у DigitalOcean; один располагается в Нью-Йорке, США, один -- во Франции. Планов уезжать с DigitalOcean нет.
Для создания собственных виртуальных серверов, скорее всего, будет арендован физический сервер (bare metal) у Hetzner в Германии.

Мониторинг

Мониторинг систем включает мониторинг работы как вычислительных серверов, так и приложений.
  1. Для мониторинга систем, установлен Nagios Core. Используя агентов слежения, он отслеживает работу всех серверов системы, включая:
    • Доступность сетевых услуг (SMTP, POP3, HTTP, NNTP, ICMP, SNMP, FTP, SSH).
    • Использование ресурсов (processor load, disk usage, system logs, количество активных пользователей).
    • Доступность баз данных (в настоящее время -- MariaDB Server, в перспективе -- отслеживание и других услуг кластеров).
    • Состояние сертификатов SSL. Для отслеживания сертификатов, несколько инструментов не подошли, показывали срок действия один на все домены. Выбор был остановлен на check_ssl_cert. Отслеживаемые домены были объеденены в host groups и единую сервисную группу. Результат удовретворительный. Нужно будет подобавлять все нужные домены.
    Мониторинг осуществляется как через админовский интерфейс, так и через почтовые уведомления. Также был установлен Zabbix, но его не получилось подключить к базам данных и если осуществлять повторную попытку, то необходимо заново устанавливатьZabbix. Планируется далее продолжить просмотр других специализированных приложений.
  2. Для мониторинга отдельных приложений и баз данных, помимо систем сетевого мониторинга, планируется использовать их внутренние функции, а также другие существующие решения.

Почтовый сервер

Команда планирует поднять highload мультидоменный почтовый сервер на основе существующего. На данный момент установлены чистые Postfix, Dovecot и Roundcube без каких-либо коробок. Они позволяют:
  1. Зарегестрироваться на opplet с почтовым адресом *@cnmcyber.com
  2. С этим адресом зайти на RoundCube
  3. Отправить почту себе на email
Настроены следующие DNS-записи:
  • DomainKeys Identified Mail (DKIM)
  • Sender Policy Framework (SPF)
  • Domain-based Message Authentication, Reporting and Conformance (DMARC)
Не известно, шифруется ли почта TLS протоколом. Количество пользователей не определено -- все, кто имеет право на почту, должен её иметь. В перспективе в Оплёте будет добавлено одно поле для корпоративного имейла. Проблемы с дисковыми пространствами будут решаться отдельно.
Требуется:
  • Выбрать, установить, настроить, провести нагрузочное тестирование, отмониторить продакшн и откоректировать параметры такого решение для почты, которое бы дружило с нашим WSO2 IS, через который идёт управление пользователями.
  • Добиться того, чтобы почта приходила не в спам, а во входящие.
  • Задокументировать работающие решения и настройки.
В качестве подходящего обеспечения рассматривались три варианта:
  1. Оставить чистые Postfix, Dovecot и Roundcube без каких-либо коробок.
  2. Переключить на пакет iRedMail, который включает в себя Postfix, Dovecot, Roundcube. Когда Облако строилось на OpenLDAP, был найден подрядчик, требования которого были: 1. Что бы у всех пользователей было заполнено поле mail 2. Новый пользователь vmail (пароль скажут после установки пакета iRedmail) 3. Поле для квоты. Также обсуждался безопасный тунель между сервером почты и сервером OpenLDAP. Найденный подрядчик считал, что лучшее решение -- это использование VPN, чтобы и OpenLDAP, и Dovecot виртуально были бы в одной сети. Авторизация почтового сервера идёт через Dovecot. Другой специалист называл такое решение идиотским. После решения о переходе с OpenLDAP на WSO2 IS подрячиков не искали.
  3. Добавить OnlyOffice, который включает в себя всё тот же iRedMail, но только с авторизацией уже на платформе OnlyOffice. Похоже,OnlyOffice предоставляет возможность синхронизации пользователей с LDAP, но пока не известно, как он интегрируется с WSO2 IS.
Почтовые ящики работают на основе построенного сервера.

Склад файлов

Данные в Облаке

Базы данных

Облако задействует большой спектр систем управления базами данных, некоторые из которых структурированы, а некоторые ориентированы на документы.
  1. Наибольшая часть пользовательских приложений использует базы управления данными на основе MariaDB Server.
  2. Отдельные приложения, например, Брацка Крынка и Брацка Справа, задействуют базы управления данными на основе PostgreSQL.
  3. Обособленная установка MariaDB Server, отличная от той, что поддерживает большую часть пользовательских приложений, также вовлечена в управление пользователями Оплёта.
  4. Идентификационный сервер Оплёта, то есть та его часть, которая работает с другими приложениями, работает на базе сервера OpenLdap и задействует три базы H2 DBMS. Была попытка с WSO2 IS, но полностью внедрить не вышло. Удалось настроить WSO2 IS для Wordpress, но все застопорилось на настройке для Moodle.
  5. NoSQL и структурированные распределённые базы будут задействованы в работу будущей интеграционной платформы Оплёта.

Интеграция данных

  1. Сейчас, база каждого пользовательского приложения установлена на трёх нодах и синхронизована через Кластерное копирование. Есть план сделать одну распределённую базу и интегрировать её в Оплёт с тем, чтобы базы приложений забирали данные оттуда. В качестве интеграционного решения серъёзно рассматривается WSO2 Enterprise Integrator. Этот интегратор работает и как ESB, и платформа для микросервисов. В качестве распределонной базы один специалист рекоммендовал NoSQL -- Apache Cassandra. Другой вариант -- распределённую SQL типа CockroachDB.
  2. Наиболее приоритетная задача -- создать архитектуру базы клиентов. Сейчас клиенты учитываются в нескольких независимых приложениях. Они имеют CRM модули, которые призваны учитывать работу с клиентами, которые могут является, но скорее всего не являются пользователями. Надо создать базу, в которую каждое приложение заливало новые данные и брало старые. Предложение заключалось в общей master базе, информация в которую может вбиваться с любого приложения, но отображаться в зависимости от её публичности.
  3. Есть также предложение создать собирать данные с различных приложений и хранить их в NoSQL базе. Ранее обсуждалась единая неосновная база данных для всей системы. Разговор шёл о комбинации Hadoop, ESB Mule и MongoDB. Идея была в сборе данных с разных приложений через ESB Mule, причёсывание их Hadoop'ом и размещение в MongoDB как дополнительной базе данных, откуда они могут браться для для личного кабинета (dashboard) пользователя. То есть, заходя в кабинет, пользователь мог бы в идеале видеть свою активность в разных приложениях и искать по всем системам сразу.
  4. Надо стабилизировать загрузку, хранение и использование картинок на MediaWiki. Сейчас они спорадически не загружаются или не отображаются. Например, 7 декабря картинки выбились, перестав отображаться. После клика на редактирование и сохранение, картинки появлялись -- этот сценарий повторялся на нескольких страницах. Затем всё само восстановилось. Аналогичные сбои происходили и раньше. Сама Википедия использует другую схему. Мы рассматриваем перенос картинок в хранилище.

Основные функции

Аварийное восстановление

Инструкция по восстановлению инфраструктуры после аварии должна позволить восстановить отдельные:

Связки баз данных

Архитектура Кластеров баз данных, то есть связок нескольких однотипных приложений или их баз данных с распределителями нагрузки между этими приложениями или базами, используется для обеспечения отказоустойчивости (high availability) Облака.

Ярус Название Основное ПО ПО базы данных Кластер
Связующее обеспечение Оплёт (ядро) Yii MariaDB Server Кластер Оплёта
Идентификация WSO2 IS H2 DBMS
Пользовательские приложения Бачка AVideo MariaDB Server Кластер MariaDB
Вебка WordPress
Жици Jitsi Отсутствует Устойчивость для Жици
Крынка GitLab PostgreSQL Кластер PostgreSQL
Пошта Roundcube
Правка MediaWiki MariaDB Server Кластер MariaDB
Связка SuiteCRM
Сетка HumHub
Справа Odoo PostgreSQL Кластер PostgreSQL
Учебка Moodle MariaDB Server Кластер MariaDB
  Арендованное обеспечение
Эксперементальные приложения Campus OpenEdX
  • MariaDB Server для данных пользователей;
  • MongoDB для непользовательских данных.
Agile Taiga software PostgreSQL
Project ProjecQtOr

Резервное копирование

В Облаке, к резервному копированию применяется несколько подходов. Копируются приложения и сервера; сохраняются базы и делаются снимки.
  • Изначально использовался rsync для копирования файлов, еженедельно полный бэкап и ежедневно incremental бэкап заливались на backup space на Contabo. Была идея использовать rsnapshot для снимков, но эту идею пока не получилось реализовать.
  • Весной-летом 2021 года, начались эксперименты с Veeam Agent for Linux, для которого был установлен VNC® Viewer. Это обеспечение позволило копировать полный сервер. Сервера копируются на себя, что вначале это вызывало проблему нехватки места. В настоящее время, копируются только новые данные (increment). Таким образом избегается дублирование и экономится место. Далее планируется научиться копировать сервера на backup space.
Надо создать:
  1. Подробное описание существующей системы.
  2. Процедуру проверки надёжности бэкапов.

Кластеры баз данных

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

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

Должна быть рассмотрена возможность переделки кластеров баз данных Ферм в отказоустойчивые (high-availability cluster) в дополнение к Стойкости Ферм.

Возможно, отказоустойчивости можно достичь, если направлять пользователя на распределитель нагрузки (load balancer) когда пользователь хочет обратиться к приложению. Распределитель нагрузки постоянно связывается со всеми установками приложений, чтобы знать, какие из них находятся в наличии. От распределителя нагрузки, пользователь перенаправляется к той установке, которая работоспособна и доступнее для конкретного пользователя. Если какая-то из установок выходит из строя, пользователь этого не должен заметить. Как только распределитель нагрузки замечает отсутствие какого-либо ресурса, он запускает механизм отладки.

Кластер Жици

Основная вики-страница: Устойчивость для Жици
Вместе с Брацкой Вебкой, наиболее критическое приложение для маркетинга всего проекта -- это Брацки Жици на Jitsi. Эта видео-конференционная система пока установлена вместе с пользовательскими системами. Возможно, для него должен быть построен отдельный кластер, задействующий все имеющиеся в наличии сервера. Также обсуждается план увести её отдельно на CDN типа Cloudflare или глобальные облачные решения -- Microsoft Azure или AWS -- участники конференций могут находиться на разных континентах и требование к качеству особо высокое.

Кластер MariaDB

Основная вики-страница: Кластер MariaDB

Кластер Оплёта

Основная вики-страница: Кластер Оплёта
Кластер Оплёта -- это связка ресурсов Облака, обеспечивающая отказоустойчивость Оплёта, а также распределителей нагрузки (load balancer) остальных кластеров.

Кластер PostgreSQL

Основная вики-страница: Кластер PostgreSQL

Облака

Частное облако

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

Общественное облако

Общественное облако типа AWS должно быть использовано первым из-за меньших расходов по его вводу в эксплуатацию.

Веб-доступность

Content delivery network; CDN; reverse proxy

Географическая доступность

Облако распределено по нескольким континентам с тем, чтобы пользователь работал с тем приложением, которое более доступно для этого пользователя. Для этого будут планироваться DNS Anycast, DNS Geocast и аналогичные распределительные системы. Есть план отправлять пользователя на тот сервер, который наиболее доступен конкретному пользователю. Усилия по улучшению географической доступности являются частью Доменных проектов.

Доменные имена

Усилия по улучшению доменных имён являются частью Доменных проектов. Хотя планируется использование десайтков доменных имён, речь пока идёт о двух основных:
  1. cnmcyber.com -- некоммерческий сайт для англоязычных пользователей; на коммерческой стороне, он должен поддерживаться сайтом vit4all.com;
  2. bskol.com -- некоммерческий сайт для русскоязычных пользователей; на коммерческой стороне, он должен поддерживаться сайтом vsemka.com.
Доменные имена зарегистрированы на GoDaddy; nameservers расположены там. Записи делались спонтанно не подвергались ревизии. Планируется:
  • Проверить существующие и создать нехватающие DNS.
  • Рассмотреть добавку новых DNSSEC записей. DNSSEC не является критичной -- может быть отлажено только для какой-то части зон DNS. Проект Школы -- учебный, нам важно иметь разные вещи для того, чтобы показывать ученикам.
  • Изучить возможность Dynamic DNS (DDNS) или виртуальных DNS.

Нахождение в Паутине

Говоря об IP адресах, в данный момент используется IPv4, но есть план разобраться с более новым протоколом. Судя по некоторым публикациям, IPv6 решит проблему отказоустойчивости в части перенаправления трафика.
В дополнение, есть план разобраться с виртуальными адресами (virtual IP address). Digitalocean предлагает floating IP address, который можно устанавливать на те дроплеты (VPS), которые расположены в одном датацентре. То есть, мы этой возможностью не воспользуемся. Hetzner.de предлагает failover IP, хотя с ними надо разобраться. Не похоже, что Contabo предлагает что-то вроде этого.
Усилия по улучшению нахождения Облака в Паутине являются частью Доменных проектов.

Разработка Ферм

Разработка Ферм ведётся в трёх направлениях. Через некоторое время, будет оценено, где удвоить усилия, а какие надежды отставить.

Подключение консультантов

Для оценки существующей разработки и её документации, мы организуем консультации с экспертами. На данный момент, их двое. Никто по-русски не говорит, поэтому документация по отказоустойчивому кластеру была переведена, найти её можно https://setka.bskol.com/index.php?r=file%2Ffile%2Fdownload&guid=96c35fd8-4363-406f-86a5-22a7f096b0db&hash_sha1=807ace8f.

Подключение разработчиков

Для ускорения разработок, мы ищем подрядчиков. Для каждой разработки подрядчиками:
  1. Заказчик договаривается с одним из координаторов о работе над разработкой.
  2. Координатор документирует на отдельной вики-странице задание подрядчику и план его поиска.
  3. Заказчик принимает, отклоняет или предлагает доработать документацию и план.
  4. Если задание и план приняты, заказчик и координатор отрабатывают план -- заказчик размещает объявление, назначает координатора рекрутером, координатор проводит отбор подрядчика.
  5. В процессе найма подрядчика, потенциальный подрядчик и координатор уточняют задание и разрабатывают план исполнения этого задания на той же вики-странице.
  6. При наличии плана работы и по представлению координатора, заказчик нанимает подрядчика, с которым координатор работает вплоть до исполнения задания.

Подключение интересующихся

На базе сообщества на Сетке, мы планируем организовать еженедельные встречи интересующихся этим проектом. Объявления мы можем поставить на rabota.ua/work.ua -- из-за войны, многие системные администраторы в Украине просто не знают, чем заняться. На встречи мы будем готовить 2-3 доклада о наших достижениях и задачах.

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

Потенциальное объявление

Сетевой администратор (ProxmoxVE)

Для устранения проблем, настройки и ведения железного сервера на hetzner.de, требуется специалист, администратор или консультант. Описание железа, его программного обеспечения и текущего положения дел опубликовано на ...

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

  • Узкие места построения этого железа и его программного обеспечения;
  • Архитектуру компьютерной сети и портов;
  • Оба инцидента и путей разрешения проблем;
  • Общие рекомендации по повышению безопасности этого железа и его программного обеспечения.

Мы планируем заключить годовой контракт на обслуживание.

Требования
  • Готовность и желание развиваться и учится
  • Желание работать с информационными системами и их безопасностью (кибербезопасностью).
  • Базовые знания современных сетевых технологий и, в частности, конфигурирования серверов на базе Linux
  • Опыт работы в должности системного администратора приветствуется.
Обязанности
Документирование. Разработка архитектуры. Обеспечение работы корпоративных сайтов и почтовых систем. Внедрение процессов безопасности, обеспечивающих надлежащую защиту ИТ и информационных активов. Контроль за их выполнением и отчетность. Снова документирование.
Условия работы
Работа в дружном коллективе. Удаленная. Уровень заработной платы устанавливается по результатам отбора
Порядок отбора
  1. Задайте любое количество вопросов.
  2. Когда вопросы окончены, в течение 20-25 минут опишите, что конкретное Вы можете сделать для проекта.
  3. Если Вас отберут для технического собеседования, установите TeamViewer, если он не установлен, и будьте готовы поработать вместе с нашим специалистом в течение 20-25 минут на реальных серверах.
По итогам технического собеседования, Вас могут пригласить на обсуждение условий сотрудничества.

Развитие

Основная вики-страница: Работы над Bskol

Связанные лектио