Мы все знаем, что все больше и больше серверов работают под ОС Linux. Мы также знаем, что благодаря таким открытым проектам, как, например, Eucaliptus и OpenStack ОС, Linux все активнее используется в сфере облачных вычислений. Чего мы не знали — так это то, что архитектура Amazon Elastic Compute Cloud (EC2) включает в себя почти полмиллиона серверов, которые уже работают под Red Hat Linux.

Хан Лю, отвечающий за исследования в лаборатории Accenture Technology и имеющий степень магистра в области электроинженерии, посвятил много времени исследованиям облачных вычислений. Он проанализировал инфраструктуру EC2 и обнаружил, что в настоящее время она состоит из 454 400 серверов.

Хотя Amazon никогда официально не признавалась в использовании определенной операционной системы в качестве базовой системы EC2, всем известно, что в основе серверов лежит кастомизированная версия Red Hat Enterprise Linux (RHEL). Поверх нее Amazon использует гипервизор Xen для хостинга Linux, OpenSolaris, Solaris, Windows 2003 и 2008, а также экземпляры виртуальных машин FreeBSD и NetBSD.

Amazon также не разглашает количество серверов в своей облачной архитектуре, и Хан должен был выяснить это самостоятельно. Он объясняет это так: “Выяснить масштабы EC2 — непростая задача. Частично это обусловлено тем, что ЕС2 предоставляет вам виртуальные машины, а выяснить, сколько виртуальных машин активировано на одном физическом хосте, очень сложно. Таким образом, даже если мы узнаем, сколько имеется виртуальных машин, мы все равно не можем вычислить количество физических серверов. Вместо того чтобы концентрировать усилия на выяснении количества серверов, мы использовали нашу методологию, чтобы узнать количество серверных стоек”.

Хан подчеркнул: “Вычисление количества серверных стоек поначалу кажется труднее. К счастью, EC2 использует обычный принцип присвоения IP-адресов, который можно соотнести с количеством серверных стоек. Мы заметили эту взаимосвязь, просмотрев строение EC2, проанализировав множество элементов, между которыми отслеживали маршруты трафика”.

“Поняв суть принципа, можно определить количество стоек. В частности, если мы знаем о существовании виртуальной машины, расположенной по определенному IP-адресу (например, 10.2.13.243), то мы также понимаем, что есть стойка, использующая диапазон адресов /22 (например, это может быть стойка 10.2.12.x/22). Если предположить, что мы знаем IP-адрес хотя бы одной виртуальной машины в каждой стойке, мы можем посчитать все стойки в “облаке” EC2”.

Само собой, этого недостаточно. Можно попробовать просканировать порты и выяснить количество серверов, но это нарушает условия обслуживания Amazon. Таким образом, предполагая, что реализация каждого веб-сервиса Amazon “также имеет внешний IP-адрес… мы можем использовать трансляцию DNS для распознания внутреннего IP-адреса”.

Имея такие данные, Хан смог вычислить количество серверных стоек. Затем он просто умножил это число на количество физических серверов в каждой стойке. “К сожалению, мы не знаем достоверно, сколько физических серверов находится в каждой стойке, поэтому сделаем предположение, что у Amazon плотная среда серверов, где в каждой стойке имеется четыре шасси форм-фактора 10U, а каждое шасси поддерживает 16 блейд-серверов; следовательно, в одной стойке 64 блейд-сервера”.

Таким образом Хан выяснил, сколько серверов в EC2. Для него это важное достижение, а для нас — еще одно подтверждение того, насколько важна Linux для серверов и облаков.