Как ни огледало - компания блог Selektel

Как ни огледало - компания блог Selektel

Тя се нарича огледално копие на данни от един източник на информация за друг. Огледала се използват за осигуряване на достъп до копия на информация чрез различни източници. Чрез използването на огледала, например, се извършва най-разпространените дистрибуции * Никс-системи: съхранената копие на хранилището в няколко огледала, разположени в различни части на света. Използването на огледала позволява рационално разпределение на натоварването и да се осигури висока скорост за сваляне пакет.

Вашият огледало пакет, който съхранява копия от хранилища на популярните Linux-системи, има в нашата компания. В тази статия, ние бихме искали да дадат подробности за нейната структура.

Основното огледало избрахме mirror.yandex.ru, тъй като е тясно намира и съдържа всички необходими на нашите клиенти хранилище. В началото беше добре с нас. Но тогава се случи неочакваното. Броят на растенията нараства, инженери се облегна на тестване на модели; в крайна сметка, Yandex, възбуди огромно количество идентични въпроси, просто затворен достъп до огледалото за нашите подмрежи.

Започнахме да се търси решение, с което може да осигури стабилност и намаляване на риска от необичайни ситуации до минимум. Имахме следната идея: вземете Nginx като прокси сървър за множество огледала. Това решение ни се стори разумно и надеждно: дори и ако една от връзките нагоре падне, ние ще бъдем в състояние да изтеглите файлове от друга страна, без никакви проблеми. Въпреки това, ние веднага се сблъскват с проблема за разнородни огледала структурата: например, CentOS хранилище на човек може да бъде в ъплинк / CentOS, а от друга - в / CentOS, а третият - всичко това в / WWW / огледало / SRV / кръчма / CentOS.

Тъй като универсален огледало хранилището, съдържаща всички съответни дистрибуции нас (CentOS, Debian, Ubuntu, OpenSUSE) може да се разчита, за всеки един от дистрибуции трябваше да бъде отделен списък на огледала.

Поставянето на описаните по идеята за живот, ние сме изправени пред много по-сериозни проблеми:

  • скорост за качване е различна летливост: Много често се случва, че един и същи хост изпраща 5-10 Мб / с, а смяната вече няколко часа - не повече от 5-20 кб /. Тъй като инсталаторът ще изтегли този пакети по един, заради разликите в настройката на скоростта може да се забави за неопределено време;
  • някои покачващи могат да бъдат неправилно конфигурирани: това се е случило, че в отговор на искане, вместо на RPM-пакет, което получават HTML-страница «Тя работи!»;
  • някои покачващи право да отсъстват в тези пакети директория. Или пакети са присъствали, но не са правилни контролни суми. Това би могло да се случи, например, поради нарушение на заповедта от sinhronizaztsii нагоре: първо, индексни файлове, а след това на пакети, а не обратното. Грешки могат да възникнат в резултат на неправилна настройка Rsync, който записва файлове на мястото, и не се запишете съдържанието на временен файл, последвано от атомната замяна.

Създай свой собствен огледало, ние сме решени всички проблеми, посочени по-горе. Сред предимствата, получени от собствената си огледало, вие също трябва да включва следното:

  • синхронизация с покачващи се връзки, без да прекъсва обслужването на клиентите и не влияе на работа екземпляр, дадено им;
  • синхронизирано копие замества ток, само ако всички нови пакети събират контролни суми;
  • ако в обратна посока по някаква причина не е наличен, или се връща неверни данни, огледало данни продължава да се даде на старите, но работното копие;
  • синхронизация за качване, разделено на разпределение: за някои дистрибуции може да се направи по-рядко, отколкото други. Налице е също така възможността за частично клонинг някои хранилища.

С това огледало се инсталира операционна система на специализирани сървъри.

Как са хранилища

Като правило, в хранилището се състои от две основни части: каталог (индекс) и басейн (пакет магазина).

Каталогът съдържа информация за всички налични в хранилище име, описание, архитектура, версия, шах пакети, а в някои случаи информация за зависимости, и съдържание на пакети. Каталогът също показва къде в басейна е файл на определена версия на всяка опаковка.

Самият басейн се съхранява пакетни файлове. Те могат да бъдат разширени в съответствие с йерархията или просто подредени в една директория.

RPM-хранилище

В основата на всяка хранилище е RPM-директория за файловете в директорията - repodata. Описание на всички раздели на каталога се съхранява във файл repomd.xml. Всеки раздел е представена от отделен файл в директорията на директория. В описанието на пътя към чек сумата на файла, съдържащ раздел, както и.

Съдържание repomd.xml файл може да изглежда така:

RPM-каталог включва следните раздели:

  • първична - съдържа описание на всички пакети, съхранени в архива, файловите пътеки на пакетите и техните проверка по сума;
  • filelists - съдържат списъци с файлове, включени във всяка опаковка;
  • група - съдържа описание на групи от пакети, които са инсталирани с помощта на Yum groupinstall;
  • друга - предоставя допълнителна информация (например, промяна трупи - changelogs).

Структуриране и групиране на пакети за различни операционни системи са организирани по различен начин. Например, CentOS съхранява всички пакетни файлове в директорията на пакети намира в основата на хранилището. В допълнение, за всеки един от съществуващата архитектура, създадена отделна хранилище.

OpenSUSE поддържа пакети за всички архитектури в едно хранилище с отделни басейни в i686 / x86_64 / и т.н. директории.

DEB-хранилище

На DEB-хранилища, всички пакети се съхраняват в общ басейн. Така се избягва дублирането на пакети, принадлежащи към различни версии. За всяко пускане в регистъра, създаден отделна директория.

Разбор директория започва с файл / dists / [разпределение] / Release (разпределение тук означава името на освобождаване код - свиване / хриптящ / Джеси). Той съдържа списък на компонентите на освобождаване, както и информация за размера и контролната сума на всички файлове с индекс. Release-файл podpicyvaetsya meyntenerami архив; Release.gpg подпис се съхранява във файла (понякога Освободете съдържание заедно с подписа може да се съхранява в InRelease на файл).

Описание на съдържанието на басейна е в индексни файлове на два типа на: Пакети (те са двоични пакети) и източници (източници, посочени в него).

Пътят към пакетите за файловете - / dists / [разпределение] / [компонент] / binary- [архитектура] / Пакети, и файлови Източници - / dists / [разпределение] / [Component] / източник / източници.

Забележка: понякога файловете на индекса са компресирани с софтуерна или bzip2 - в този случай, разширение .gz на името на файла или .bz2 добавят съответно. Някои клиенти подкрепят LZMA (.lzma), XZ (.xz) и LZIP (.lz).

Ето един примерен запис от файла Пакети:

Как ни огледало

Хранилище всеки разпределение на огледалото се съхранява в два екземпляра: сянка (фон) и работа (на преден план). И двете части са разположени на един LVM обем, което им позволява да отидат, за да добавите дисково пространство. В тестван копие огледалото работна част съхраняват, разпространяват го чрез Nginx. Частта на сянка е синхронизирано с нагоре-огледалото, а след това внимателно се проверява за валидност.

процедура за валидиране включва проверка каталога, неговият електронен подпис (ако е приложимо) и контролни суми на всички файлове с индекс. Проверете контролни всички пакети доста трудно: в някои басейни хранилища могат да се съхраняват пакети за десетки или дори стотици гигабайта. Ето защо, проверка по сума, се проверяват само при новите пакети, за които се "докосна» Rsync. След проверка на сянка и работата на обмен. Тази операция се извършва с помощта на проста СрН. По този начин е възможно да се осигури на практика смяна валентност (само три бързи СрН повикване, за да сменяте директория) и минимизиране на потенциалната престой. Даване на файлове се отварят по време на замяната не спира.

След двете части са обърнати, част от сянката на местно ниво, за да "наваксат" на текущото състояние на работното копие.

Mirror синхронизиране

В много от нашите услуги ние трябва редовно да предоставя на своите клиенти с различни статистически informatsiyu.Klientam отдаване под наем посветен сървъри изискват информация за потреблението на трафика. Потребителите на облачни сървъри трябва статистика за използването на хардуерни и мрежови ресурси и потребители на облак съхранение - Статистика свалят файлове.

Непрекъснатото нарастване на данните и да се повиши тяхната скорост на нарастване на обработка поколение и проблем за съхранение. Не е изненадващо, че темата за "големия данни» (Big Data) е една от най-обсъжданите в днешния ИТ общност. Материали за теорията на "големия данни" в специализирани списания и уебсайтове в днешно публикувани доста. Но теоретични публикации не винаги са ясни как да го използвате.