Difference between revisions of "CNM Bureau Farm"
(→Backup server) |
|||
Line 1: | Line 1: | ||
[[CNM Bureau Farm]] (formerly known as [[CNM EndUser Farm]]; hereinafter, the ''Farm'') is the [[CNM Farms|CNM farm]] that hosts [[CNM Social]], [[CNM Talk]], and [[CNM Venture]]. | [[CNM Bureau Farm]] (formerly known as [[CNM EndUser Farm]]; hereinafter, the ''Farm'') is the [[CNM Farms|CNM farm]] that hosts [[CNM Social]], [[CNM Talk]], and [[CNM Venture]]. | ||
− | Technically, the ''Farm'' is a collection of software. [[End-user]]s work with [[#End-user applications]] that are installed in [[#Virtual environments (VE)]] that are, consequently, installed on [[#Node OS]], which is node-root-level [[operating system]] ([[operating system|OS]]), that is installed on the [[#Infrastructure]], which consists of infrastructure-level [[#Bridges]] and hardware, which includes [[# | + | Technically, the ''Farm'' is a collection of software. [[End-user]]s work with [[#End-user applications]] that are installed in [[#Virtual environments (VE)]] that are, consequently, installed on [[#Node OS]], which is node-root-level [[operating system]] ([[operating system|OS]]), that is installed on the [[#Infrastructure]], which consists of infrastructure-level [[#Bridges]] and hardware, which includes [[#Backup server]] and [[#Bare-metal servers]]. |
To eliminate a [[single point of failure]], the ''Farm'' includes three ''Nodes'', which are coordinated by [[#High availability (HA)]] tools. Any ''Farm's'' node (hereinafter, the ''Node'') is one of those hardware servers with all of software installed on the top of it. | To eliminate a [[single point of failure]], the ''Farm'' includes three ''Nodes'', which are coordinated by [[#High availability (HA)]] tools. Any ''Farm's'' node (hereinafter, the ''Node'') is one of those hardware servers with all of software installed on the top of it. | ||
Line 151: | Line 151: | ||
==Infrastructure== | ==Infrastructure== | ||
− | The infrastructure of the ''Farm'' consists of hardware, [[#Bare-metal servers]] and [[# | + | The infrastructure of the ''Farm'' consists of hardware, [[#Bare-metal servers]] and [[#Backup server]], as well as [[#Bridges]] rented from the [[#Service provider]]. |
===Service provider=== | ===Service provider=== |
Revision as of 03:09, 3 August 2023
CNM Bureau Farm (formerly known as CNM EndUser Farm; hereinafter, the Farm) is the CNM farm that hosts CNM Social, CNM Talk, and CNM Venture.
Technically, the Farm is a collection of software. End-users work with #End-user applications that are installed in #Virtual environments (VE) that are, consequently, installed on #Node OS, which is node-root-level operating system (OS), that is installed on the #Infrastructure, which consists of infrastructure-level #Bridges and hardware, which includes #Backup server and #Bare-metal servers.
To eliminate a single point of failure, the Farm includes three Nodes, which are coordinated by #High availability (HA) tools. Any Farm's node (hereinafter, the Node) is one of those hardware servers with all of software installed on the top of it.
Contents
End-user applications
The Farm's end-user applications (hereinafter, the Apps) are those with which end-users of the Farm interact. The Apps can be deployed utilizing two models:
- Using containers; they already contain operating systems tailored specifically to the needs of the App.
- In virtual machines (VM), without containers. In that model, the App is installed on the operating system of its VM.
HumHub
- CNM Social, which is the end-user instance of CNM HumHub.
Odoo
- CNM Venture, which is the end-user instance of CNM Odoo.
Jitsi
Virtual environments (VE)
On one side, virtual environments (VEs) are installed on #Node OS, which require "physical" #Bare-metal servers. On another side, VEs allow for containers and virtual machines be installed and work.
Choice of VE COTS
- As its software for VEs, the Farm utilizes CNM ProxmoxVE. Besides ProxmoxVE, CNMCyber Team tried OpenStack and VirtualBox. The first required more hardware resources, the second didn't allow for required sophistication than the chosen COTS.
Node OS
- The interaction between CNM ProxmoxVE instances and the #Infrastructure is carried out by Debian operating system that comes in the same "box" as ProxmoxVE and is specially configured for that interaction.
High availability (HA)
High availability (HA) of the Farm assumes that no failure of any App or its database management system (DBMS) can cause the failure of the Farm as a whole. HA tools are based on:
- A principle of redundancy; that is why the Farm is built on three Nodes, not one. Every App is installed at least twice on different Nodes as described in the #HA at the App level section. Every object, block, or file is stored at least twice on different Nodes as described in the #HA at the DBMS level section.
- Management of redundant resources as described in the #HA management section. In plain English, the Farm needs to put into operations those and only those resources that are in operational shapes.
Generally speaking, HA comes with significant costs. So does HA of the Farm. For example, running three Nodes is more expensive than running one. The cost cannot exceed the benefit, so high availability cannot be absolute availability.
HA at the App level
- When one App fails, its work continues its sister App installed on the second Node. If another App fails, its work continues its sister App installed on the third Node. If the third App fails, the Farm cannot provide its users with the App services any longer.
- To ensure that, the Farm utilizes tools that comes with ProxmoxVE. Every virtual machine (VM) or container is kept on at least two Nodes. When the operational resource, VM or container, fails, CNM ProxmoxVE activates another resource and creates the third resource as a reserve. As a result, VM or container "migrates" from one Node to another Node.
HA at the DBMS level
- When one DBMS fails, its work continues its sister DBMS installed on the second Node. When another DBMS fails, its work continues its sister DBMS installed on the third Node. If the third DBMS fails, the Farm can no longer provide the App with the data it requires to properly work.
- To ensure that, the Farm utilizes the #Storage platform. Every object, block, or file is kept on at least two Nodes. When any stored resource fails, #Storage platform activates another resource and creates the third resource as a reserve. As a result, any stored resource "migrates" from one Node to another Node.
HA management
- To manage redundant resources, the Farm:
- Monitors its resources to identify whether they are operational or failed as described in the #Monitoring section.
- Fences those resources that are identified as failed. As a result, non-operational resources are withdrawn from the list of available.
- Tries to restore those resources that are fenced. The #Backup and recovery supports that feature, while constantly creating snapshots and reserve copies of the Farm and its parts in order to make them available for restoring when needed.
DNS architecture
Communication channels
- The Farm's communication channels are built on the Nodes and #Bridges. Currently, the Farm uses three communication channels, each of which serves one of the network as follows:
- Public network that uses external, public IPv4 addresses to integrate the Farm into the Internet. The public network is described in the #DNS entry point section of this wikipage.
- Node network that uses internal, private IPv6 addresses to integrate the Nodes into one network cluster. This network cluster is described in the #Virtual environments section of this wikipage.
- Storage network that uses internal, private IPv6 addresses to integrate storage spaces of the Nodes into one storage cluster. This storage cluster is described in the #Storage platform section of this wikipage.
- These channels are build using #Bridges.
DNS entry point
- load balancer on a public web address
with external Internet-accessible IP addresses distribute requests from the Internet between the Nodes and return the Nodes' responses to requests back to the Internet.
storage platform that provides object storage, block storage, and file storage built on a common distributed cluster foundation.
Three Nodes are involved, united into single networks by Connectors. Two of the three Nodes are "bearers"; their bases are synchronized and a change in one base entails an automatic change in another. Of the two carriers, one is the primary. The Third Node is a requirement for the ProxmoxVE software used to create virtual environments to provide quorum.
In normal mode, the user's web browser accesses the IP address of the Hetzner vSwitch, which sends the user to the primary Node. If the primary Node is unable to serve clients, the virtual environment isolates it and fails clients over to a second host, working Node.
- Задействуются три Узла, объединённые в единые сети Соединителями. Два из трёх Узлов являются "несущими"; их базы синхронизованы и изменение в одной базе влечёт автоматическое изменение в другой. Из двух несущих, одно является основным. Третий Узел -- это требование используемого для создания виртуальных сред программного обеспечения ProxmoxVE для обеспечения кворума.
- В обычном режиме, веб-просмотрщик (web browser) пользователя обращается к IP адресу Hetzner vSwitch, который отправляет пользователя к основному Узлу.
- Если основной Узел неспособен обслуживать клиентов, виртуальная среда изолирует его и переключает клиентов на второй несущий, работающий Узел.
DNS zone
- Для связи с сетью Интернет, следующие записи созданы в зоне DNS:
Resource record Type Data Comment (not a part of the record) pm1.bskol.com AAAA 2a01:4f8:10a:439b::2 Node 1 pm2.bskol.com AAAA 2a01:4f8:10a:1791::2 Node 2 pm3.bskol.com AAAA 2a01:4f8:10b:cdb::2 Node 3 pbs.bskol.com AAAA 2a01:4f8:fff0:53::6 Backup server pf.bskol.com AAAA 2a01:4f8:fff0:53::6 pfsense pf.bskol.com A 88.99.71.85 npm1.bskol.com A 88.99.218.172 Node 1 NGINX npm2.bskol.com A 88.99.71.85 Node 2 NGINX npm3.bskol.com A 94.130.8.161 Node 3 NGINX talk.cnmcyber.com A 2a01:4f8:fff0:53::2 CNM Talk (Jitsi) corp.cnmcyber.com A 2a01:4f8:fff0:53::3 CNM Corp (Odoo) social.cnmcyber.com A 2a01:4f8:fff0:53::4 CNM Social (HumHub)
IP addresses
- В сетях ProxmoxVE, мы задействуем три типа IP адресов:
- Для управления средами ProxmoxVE, мы используем IPv4 адреса и IPv6 адреса отдельных Желез.
- Для внутренней сети из трёх Желез, собранной на одном Hetzner vSwitch, задействуется частный IP адрес. Эта сеть не доступна из сети Интернет; прежде всего, через неё синхранизуются хранилища Желез. Для этой сети, выбран адрес с типом "/24" .
- Внешняя сеть требует покупки дополнительных IP адресов, причём IPv4 адреса дороги, а IPv6 адреса, возможно, могут не обеспечивать стабильной работы. В данный момент, мы купили один IPv6 адрес и тестируем его. Этот IPv6 адрес будет присваиваться всем VM и контейнерам, которые будут создаваться в инфраструктуре. Чтобы работать с ресурсами Фермы, пользователи будут запрашивать именно этот адрес. Эта сеть также собрана на тех же Железах другим Hetzner vSwitch.
Web servers
Storage platform
- Для хранения данных, каждый Узел использует платформу распределённого хранилища CNM Ceph. Хранилища отдельныx Узлов синхранизуются через внутреннюю сеть инфраструктуры.
- Таким образом, всё хранилище Фермы включает специально-зарезервированные дисковые пространства Желез и программное обеспечение, работа которого распределена по всем Узлам. Благодаря этому обеспечению, хранилища отдельных Узлов синхранизованы между собою, чтобы исключить единую точку отказа.
Deployment model
- synchronization of resources of common individual nodes, at least databases.
Physical location
Security
Monitoring
- Сейчас не используется специальные функции.
- Предложения кандидатов:
- Стек -- prometheus + node-exporter + grafana
- Prometheus to monitor VMs, Influx to monitor Pve nodes , Grafana for Dashbord
- (M) grafana + influxdb + telegraf, а также zabbix. Для мониторинга веб-сайта использовать uptimerobot
Firewalls
- iptables as a firewall
- For security, we use Fail2ban because it operates by monitoring log files (e.g. /var/log/auth.log, /var/log/apache/access.log, etc.) for selected entries and running scripts based on them. Most commonly this is used to block selected IP addresses that may belong to hosts that are trying to breach the system's security. It can ban any host IP address that makes too many login attempts or performs any other unwanted action within a time frame defined by the administrator. Includes support for both IPv4 and IPv6.
Backup and recovery
- OpenZFS или RAID создаёт резервные копии и может быть задействовано для восстановления данных Железа в случае аварий. Жёсткие диски каждого Железа сдвоены, как, например, 2x SSD SATA 512 GB. RAID или OpenZFS копирует данные основного диска Железа на резервный диск. Если основной диск теряет данные из-за сбоя, резервный диск будет использован для восстановления данных на основной диск. RAID или OpenZFS устанавливается непосредственно на Железо.
Accesses
Administrative
- Администраторский доступ к Железу, а также к соединителям Hetzner vSwitch осуществляется через административную панель и администраторские консоли. Они предоставлены непосредственно Hetzner заказчику; заказчик лично может предоставить доступы ответственным администраторам.
- Администраторский доступ к виртуальным средам ProxmoxVE и, далее, файлам пользовательских приложений, осуществляется через привязанные к Железу IP адреса. Данные доступов засекречены и хранятся в Брацкой Крынке.
- Администраторские доступы к пользовательским приложениям осуществляются через привязанные к приложениям IP адреса. В данный момент, доступы предоставляются бюрократами Оплёта вручную.
End-user access
- Те пользователи, которые администраторами не являются, не должны иметь доступ к Железу и Средам.
- Доступы тех пользователей, которые администраторами не являются, к пользовательским приложениям осуществляются через привязанные к приложениям IP адреса. Доступы предоставляются Оплётом автоматически и, бюрократами Оплёта, вручную.
Infrastructure
The infrastructure of the Farm consists of hardware, #Bare-metal servers and #Backup server, as well as #Bridges rented from the #Service provider.
Service provider
- Hetzner has been serving as CNMCyber Team's Internet service provider (ISP) and lessor of the #Infrastructure since 2016. Offers from other potential providers, specifically, Contabo and DigitalOcean, have been periodically reviewed, but no one else has offered any better quality/price rate on a long-term basis.
Choice of bare-metal
- Due to the lower cost, #Bare-metal servers were purchased via #Service provider's auction -- https://www.hetzner.com/sb?hdd_from=500&hdd_to=1000 -- based on the following assumptions:
- Hard drives:
- The hard drive storage capacity for any Node shall be 512Gb at least.
- Because Ceph is selected to power the #Storage platform, any hard-drive of the Farm shall be both SSD and NVMe.
- Processors:
- The processor frequency for two Nodes of the Farm shall be 32Gb at least. Processor frequency requirements to the third Node may be lower because of ProxmoxVE's characteristics.
- Those servers that deploys Intel Xeon E3-1275v5 processors are preferable over those servers that deploys Intel Core i7-7700 ones.
- Location: At least two Nodes shall be located in the same data center. Although the #Service provider does not charge for internal traffic, this circumstance increases the speed of the whole Farm. If no nodes are available in the same data center, they shall be looked for in the same geographic location.
- Hard drives:
- The hardware characteristics of the chosen Nodes are presented in #Bare-metal servers.
Bridges
Сеть каждого Узла использует мост по выбираемой по умолчанию в Network Configuration модели.
- Hetzner vSwitches (hereinafter, the Bridges) serve as bridges for #Communication channels to connect the Nodes in networks and switch from one Node to another one. The #Service provider provides CNMCyber Team with the Bridges; the team can order up to 5 connectors to be connected to one Node. The Bridges come with the lease of the Nodes.
- The Farm utilizes two Bridges:
- Internal Bridge serves as the hub for node and storage networks. It is located on an internal, private IPv6 address to provide for data transfer between the Nodes and their storage spaces.
- External Bridge serves as the hub for the public network, the Internet. It is located on external, public IPv4 address to provide for data transfer between the Farm's publicly-available and other Internet resources.
- The Farm cannot support high availability of the Bridges. Resiliency of the Bridges is the courtesy of their owner, #Service provider.
Backup server
Storage box
Bare-metal servers
Работа Фермы обеспечивается тремя Узлами. Каждый Узел представляет собой отдельное Железо, приводимoe в действие несколькими видами программного обеспечения (ПО).
As the result of #Choice of bare-metal, the following bare-metal servers were selected:
Node 1 hardware
- 1 x Dedicated Root Server "Server Auction"
- Intel Xeon E3-1275v5
- 2x SSD M.2 NVMe 512 GB
- 4x RAM 16384 MB DDR4 ECC
- NIC 1 Gbit Intel I219-LM
- Location: FSN1-DC1
- Rescue system (English)
- 1 x Primary IPv4
Node 2 hardware
- 1 x Dedicated Root Server "Server Auction"
- Intel Xeon E3-1275v5
- 2x SSD M.2 NVMe 512 GB
- 4x RAM 16384 MB DDR4 ECC
- NIC 1 Gbit Intel I219-LM
- Location: FSN1-DC1
- Rescue system (English)
- 1 x Primary IPv4
Node 3 hardware
- 1 x Dedicated Root Server "Server Auction"
- Intel Xeon E3-1275v5
- 2x SSD M.2 NVMe 512 GB
- 4x RAM 16384 MB DDR4 ECC
- NIC 1 Gbit Intel I219-LM
- Location: FSN1-DC1
- Rescue system (English)
See also
Related lectures
Useful recommendations
- https://www.informaticar.net/how-to-setup-proxmox-cluster-ha/ (using Ceph without Hetzner vSwitch)
- https://community.hetzner.com/tutorials/hyperconverged-proxmox-cloud (using Ceph with Hetzner vSwitch)
- https://pve.proxmox.com/wiki/High_Availability (general ProxmoxVE HA functionality)
- https://docs.hetzner.com/robot/dedicated-server/network/vswitch/ (general Hetzner vSwitch functionality)
Общее описание
Общепринятые понятия
- На данной вики-странице, используются следующие термины для общепринятых понятий:
- A record. Та DNS запись, которая определяет соответствующий доменному имени (domain name) IPv4 адрес. Когда пользователь Всемирной Паутины набирает доменное имя, например, "bskol.com", веб-просмотрщик ищет в зоне DNS тот IPv4 адрес, к которому это доменное имя привязано. Буква "А" в названии записи, так называемый тип записи, пришла в название от первой буквы английского слова "address" (адрес).
- AAAA record. Та DNS запись, которая определяет соответствующий доменному имени (domain name) IPv6 адрес. Когда пользователь Всемирной Паутины набирает доменное имя, например, "bskol.com", веб-просмотрщик (web browser) ищет в зоне DNS тот IPv6 адрес, к которому это доменное имя привязано. Четыре буквы "A" в типе этой записи символизируют тот факт, что максимальное количество адресов протокола IPv6 (128 бит) в четыре раза превышает максимальное количество адресов протокола IPv4 (32 биты).
- IP address. Адрес компьютерного устройства, соответствующий либо протоколу IPv4, либо протоколу IPv6. Доступные в сети Интернет адреса куплены у поставщика услуг размещения.
- IPv4 address. IP адрес, соответствующий протоколу IPv4. Эти адреса представляют собою 4 группы цифр, разделённых точками. Например, 88.99.71.85 -- это один из адресов Фермы. Часть адресов зарезервированы для частных сетей и не могут появляться в сети Интернет. Количество адресов IPv4 ограничено 4.3 триллионами, что на момент разработки казалось достаточным числом. Протокол IPv4 был разработан в 1981. Чтобы разрешить проблему ограничения, в 1995 году был разработан протокол IPv6, однако на лето 2022 года, 62% Интернета продолжает пользоваться протоколом IPv4. В DNS зоне, этот адрес указывается в "A" записи.
- IPv6 address. IP адрес, соответствующий протоколу IPv6. Эти адреса представляют собою несколько групп цифр и букв, разделённых двоеточиями. Некоторые группы могут быть пустыми. Например, 2a01:4f8:fff0:53::2 -- это один из адресов Фермы и группы между сдвоенными двоеточиями пусты. В DNS зоне, этот адрес указывается в "AААА" записи.
- DNS (Domain Name System) -- иерархическая и децентрализованная система доменных имён, которая была изначально создана для привязки человечески-разпознаваемым доменных имён к машинно-обрабатываемым адресам протокола Интернет (IP адресам), а позже стала использоваться для определения других данных этих имён и адресов. Например, в текстовые записи может быть добавлен открытый ключ к подписи почты. DNS записи содержатся в так называемых DNS зонах, которые предоставляют поставщики услуг Интернета (Internet service provider или ISP).
- DNS record. Привязка стандартизованных данных к конкретному доменному имени. Запись состоит из типа (type), например , "AAAA" в AAAА записи, названия (resource record), например, jitsi.bskol.com, и привязанных к названию данных (data). Вместе, записи составляют DNS зону.
- DNS zone. Ta часть системы доменных имён (DNS), которая управляется отвечающим в системе за конкретное доменное имя поставщиком услуг Интернета (Internet service provider или ISP) и которая определяет данные, связанные с этим доменным именем. Эти данные представлены в виде DNS записей, таких, как A запись или AAAA запись.
- Virtual machine (VM). Виртуальное компьютерное устройство, имитирующее компьютер, создаваемое виртуальной средой. Аналогично обычному компьютеру, на VM устанавливается операционная система, обычно, из коробки, и, на неё, -- пользовательские приложения.
- High availability (HA). Свойство системы иметь более высокую продолжительность исправного состояния (uptime) по сравнению с идентичной системой, которая не использует инструментов и методик высокой доступности. Ни одна система и ни одна часть системы не могут быть полностью защищены от угрозы нештатной работы или аварийной ситуации. Высокую доступность можно описать как продолжение предоставления услуг системой на каком-то "исправном" уровне при сбое её определённой части с одновременным восстановлением той самой части, которая пострадала от сбоя. Инструменты высокой доступности включают дублирующие части, готовые взять на себя роль основных, устройства мониторинга для обнаружения случаев отказа, а также управляющие устройства, которые огораживают (fencing) неработающие части и перенаправляют запросы на работающие. Требование "исправного", пускай и аварийного, состояния отличает высокую доступность от концепции отказоустойчивости (failure tolerance), которая стремится к тому, чтобы обычный пользователь системы отказа её части и не заметил.
- Domain name (hostname). Воспринимаемое людьми название веб-сайта или иного ресурса, особенно в сети Интернет, например, "bskol.com". Веб-просмотрщики и другие устройства работают с IP адресами, но эти адреса трудны для запоминания и воспроизведения людьми; для них, созданы доменные имена. В зонах DNS, доменные имена привязаны либо к IPv4 адресу, либо к IPv6 адресу, либо к обоим.
- Контейнер. Виртуальное компьютерное устройство, имитирующее компьютер с установленной операционной системой и пользовательскими приложениями, создаваемое виртуальной средой. Как правило, контейнеры задействуют облегчённую операционную систему, заточенную исключительно под работу установленных приложений.
- Операционная система (operating system или OS). Программное обеспечение, которое, с одной стороны, взаимодействует либо с железным, либо с виртуальным компьютерным устройством и, с другой стороны, может взаимодействовать с пользовательскими приложениями.
- Отказоустойчивость (failure tolerance) -- это концепция такой работы системы, в которой конечный пользователь системы не может заметить отказа её части от штатной работы. Некоторые инструменты и методики отказоустойчивости аналогичны инструментам и методикам высокой доступности (high availability), которые способствуют предоставлению услуг системой при сбое её определённой части с одновременным восстановлением той самой части, которая пострадала от сбоя. Однако никакой набор не гарантирует, что любое восстановление будет моментальным и 100% полным. Потому "отказоустойчивость" -- это всё же концепция, к которой можно стремиться, но не конечная точка, которую можно достичь.
- Поставщик услуг Интернета (Internet service provider или ISP). Организация, авторизованная администрацией сети Интернет на предоставление доменных имён и других услуг Интернета. С некоторыми исключениями, поставщики услуг Интернета предоставляют доступ к сети напрямую конечным пользователям или посредникам. Многие поставщики услуг Интернета являются также и поставщиками услуг размещения.
Специальные термины
- На данной вики-странице, используются следующие термины, которые специфичны для этой страницы:
- Железo (bare-metal server). "Физический, железный" сервер, арендуемый у поставщика услуг размещения и описанный в Инфраструктуре.
- Пользовательское приложение. Одна из установленных на Ферме деловых прилад.
- Поставщик услуг размещения. Поставщик услуг Интернета (Internet service provider или ISP), предоставляющий свои подключённые к сети Интернет "железные" сервера в аренду для размещения Фермы.
- Соединитель. Коммутационное устройство предоставляемое поставщиком услуг размещения Фермы и описанное в Соединителях.
- Среда (virtual environment). Виртуальнaя среда на базе программного обеспечения ProxmoxVE, описанная в Виртуальных средах.
- Узел (node). Комбинация одного Железа и установленного на нём программного обеспечения, представленная в сети и описанная в Узлах Фермы.
- Ферма. Делова Ферма, для описания которой предназначена данная вики-страница.
- Хранилище. Система для хранения объектов, блоков и файлов, которые Ферма либо обрабатывает, либо предоставляет пользователям без обработки. Термины "хранилище Узла" или, во множественном числе, "хранилища", подразумевают системы хранения на отдельном Узле. Система описана в Хранилищах Узлов.