По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Добро пожаловать в статью, посвященную началу работы с виртуализацией Xen на CentOS. Xen - это гипервизор с открытым исходным кодом, позволяющий параллельно запускать различные операционные системы на одной хост-машине. Этот тип гипервизора обычно называют гипервизором №1 в мире виртуализации. Xen используется в качестве основы для виртуализации серверов, виртуализации настольных ПК, инфраструктуры как услуги (IaaS) и встраиваемых/аппаратных устройств. Возможность работы нескольких гостевых виртуальных машин на физическом хосте может значительно повысить эффективность использования основного оборудования. Передовые возможности Xen гипервизора Xen не зависит от операционной системы – основным стеком управления (который называется domain 0 (домен 0)) может быть Linux, NetBSD, OpenSolaris и так далее. Возможность изоляции драйвера - Xen может разрешить основному системному драйверу устройства работать внутри виртуальной машины. Виртуальная машина может быть перезагружена в случае отказа или сбоя драйвера без воздействия на остальную часть системы. Поддержка паравиртуализации (Paravirtualization - это тип виртуализации, в котором гостевая операционная система перекомпилируется, устанавливается внутри виртуальной машины и управляется поверх программы гипервизора, работающей на ОС хоста.): это позволяет полностью паравиртуализированным хостам работать гораздо быстрее по сравнению с полностью виртуализированным гостем, использующим аппаратные расширения виртуализации (HVM). Небольшие размеры и интерфейс. В гипервизоре Xen используется микроядерное устройство, размер которого составляет около 1 МБ. Этот небольшой объем памяти и ограниченный интерфейс гостя делают Xen более надежным и безопасным, чем другие гипервизоры. Пакеты Xen Project Пакеты Xen Project состоят из: Ядро Linux с поддержкой Xen Project Сам гипервизор Xen Модифицированная версия QEMU - поддержка HVM Набор пользовательских инструментов Компоненты Xen Гипервизор Xen Project отвечает за обработку процессора, памяти и прерываний, поскольку он работает непосредственно на оборудовании. Он запускается сразу после выхода из загрузчика. Домен/гость - это запущенный экземпляр виртуальной машины. Ниже приведен список компонентов Xen Project: Гипервизор Xen Project работает непосредственно на оборудовании. Гипервизор отвечает за управление памятью, процессором и прерываниями. Он не знает о функциях ввода-вывода, таких как работа в сети и хранение. Область контроля (Домен 0): Domain0 - специальная область, которая содержит драйверы для всех устройств в хост-системе и стеке контроля. Драйверы управляют жизненным циклом виртуальной машины - созданием, разрушением и конфигурацией. Гостевые домены/виртуальные машины - гостевая операционная система, работающая в виртуализированной среде. Существует два режима виртуализации, поддерживаемых гипервизором Xen: Паравиртуализация (PV) Аппаратная поддержка или полная виртуализация (HVM) Toolstack и консоль: Toolstack - это стек управления, в котором Domain 0 позволяет пользователю управлять созданием, конфигурацией и уничтожением виртуальных машин. Он предоставляет интерфейс, который можно использовать в консоли командной строки. На графическом интерфейсе или с помощью стека облачной оркестрации, такого как OpenStack или CloudStack. Консоль - это интерфейс к внешнему миру. PV против HVM Паравиртуализация (PV - Paravirtualization ) Эффективная и легкая технология виртуализации, которая была первоначально представлена Xen Project. Гипервизор предоставляет API, используемый ОС гостевой виртуальной машины Гостевая ОС должна быть изменена для предоставления API Не требует расширений виртуализации от центрального процессора хоста. Гостям PV и доменам управления требуется ядро с поддержкой PV и драйверы PV, чтобы гости могли знать о гипервизоре и могли эффективно работать без эмуляции или виртуального эмулируемого оборудования. Функции, реализованные в системе Paravirtualization, включают: Сигнал прерывания и таймеры Драйверы дисков и сетевые драйверы Эмулированная системная плата и наследуемый вариант загрузки (Legacy Boot) Привилегированные инструкции и таблицы страниц Аппаратная виртуализация (HVM - Hardware-assisted virtualization ) - полная виртуализация Использует расширения виртуальной машины ЦП от ЦП хоста для обработки гостевых запросов. Требуются аппаратные расширения Intel VT или AMD-V. Полностью виртуализированные гости не требуют поддержки ядра. Следовательно, операционные системы Windows могут использоваться в качестве гостя Xen Project HVM. Программное обеспечение Xen Project использует Qemu для эмуляции аппаратного обеспечения ПК, включая BIOS, контроллер диска IDE, графический адаптер VGA, контроллер USB, сетевой адаптер и так далее Производительность эмуляции повышается за счет использования аппаратных расширений. С точки зрения производительности, полностью виртуализированные гости обычно медленнее, чем паравиртуализированные гости, из-за необходимой эмуляции. Обратите внимание, что можно использовать PV драйверы для ввода-вывода, чтобы ускорить гостевой HVM Драйверы PVHVM - PV-on-HVM Режим PVH сочетает в себе лучшие элементы HVM и PV Позволяет виртуализированным аппаратным гостям использовать PV диск и драйверы ввода-вывода Никаких изменений в гостевой ОС Гости HVM используют оптимизированные драйверы PV для повышения производительности - обходят эмуляцию дискового и сетевого ввода-вывода, что приводит к повышению производительности в системах HVM. Оптимальная производительность на гостевых операционных системах, таких как Windows. Драйверы PVHVM требуются только для гостевых виртуальных машин HVM (полностью виртуализированных). Установка Xen в CentOS 7.x Чтобы установить среду Xen Hypervisor, выполните следующие действия. 1) Включите репозиторий CentOS Xen sudo yum -y install centos-release-xen 2) Обновите ядро и установите Xen: sudo yum -y update kernel && sudo yum -y install xen 3) Настройте GRUB для запуска Xen Project. Поскольку гипервизор запускается перед запуском ОС, необходимо изменить способ настройки процесса загрузки системы: sudo vi /etc/default/grub Измените объем памяти для Domain0, чтобы он соответствовал выделенной памяти. RUB_CMDLINE_XEN_DEFAULT="dom0_mem=2048M,max:4096M cpuinfo com1=115200,8n1 console=com1,tty loglvl=all guest_loglvl=all" 4) Запустите скрипт grub-bootxen.sh, чтобы убедиться, что grub обновлен /boot/grub2/grub.cfg bash `which grub-bootxen.sh` Подтвердите изменение значений: grep dom0_mem /boot/grub2/grub.cfg 5) Перезагрузите свой сервер sudo systemctl reboot 6) После перезагрузки убедитесь, что новое ядро работает: # uname -r 7) Убедитесь, что Xen работает: # xl info host : xen.example.com release : 3.18.21-17.el7.x86_64 machine : x86_64 nr_cpus : 6 max_cpu_id : 5 nr_nodes : 1 cores_per_socket : 1 threads_per_core : 1 ......................................................................... Развертывание первой виртуальной машины На этом этапе вы должны быть готовы к началу работы с первой виртуальной машиной. В этой демонстрации мы используем virt-install для развертывания виртуальной машины на Xen. sudo yum --enablerepo=centos-virt-xen -y install libvirt libvirt-daemon-xen virt-install sudo systemctl enable libvirtd sudo systemctl start libvirtd Установка HostOS в Xen называется Dom0. Виртуальные машины, работающие через Xen, называются DomU. virt-install -d --connect xen:/// --name testvm --os-type linux --os-variant rhel7 --vcpus=1 --paravirt --ram 1024 --disk /var/lib/libvirt/images/testvm.img,size=10 --nographics -l "http://192.168.122.1/centos/7.2/os/x86_64" --extra-args="text console=com1 utf8 console=hvc0" Если вы хотите управлять виртуальными машинами DomU с помощью графического приложения, попробуйте установить virt-manager sudo yum -y install virt-manager
img
Git – это популярная система контроля версий. Благодаря Git разработчики могут сотрудничать и без проблем работать над проектами совместно. Git позволяет отслеживать изменения, которые вы вносите в проект с течением времени. Помимо этого, он позволяет вернуться к предыдущей версии, если вы вдруг решили не вносить изменение. Git работает по следующему принципу: вы размещаете файлы в проекте с помощью команды git add, а затем фиксируете (коммитите) их с помощью команды git commit. При совместной работе над проектами могут возникнуть ситуации, когда вы не захотите, чтобы какие-то файлы или части проекта были видны всем участникам команды. Иными словами, вы не захотите включать и фиксировать эти файлы в основной версии проекта. Вот почему вы можете не захотеть использовать разделитель (точку) с командой git add, так как в этом случае каждый отдельный файл будет размещен в текущем каталоге Git. Когда вы используете команду git commit, то каждый отдельный файл фиксируется – это также добавляет файлы, которые не нужно. Вы можете, наоборот, захотеть, чтобы Git игнорировал определенные файлы, но для такой цели не существует команды git ignore. Итак, как же сделать так, чтобы Git игнорировал и не отслеживал определенные файлы? С помощью файла .gitignore. В этой статье вы узнаете, что такое файл .gitignore, как его создать и как использовать для игнорирования некоторых файлов и папок. Также вы узнаете, как можно заставить Git игнорировать уже закоммиченый файл. Что такое файл .gitignore? Для чего он нужен? Каждый из файлов в любом текущем рабочем репозитории Git относится к одному из трех типов: Отслеживаемые – это все файлы и каталоги, о которых знает Git. Это файлы и каталоги, которые были недавно размещены (добавлены с помощью git add) и зафиксированы (закоммичены с помощью git commit) в главном репозитории. Неотслеживаемые – это новые файлы и каталоги, которые созданы в рабочем каталоге, но еще не размещены (или добавлены с помощью команды git add). Игнорируемые – это все файлы и каталоги, которые полностью исключаются и игнорируются, и никто о них в репозитории Git не знает. По сути, это способ сообщить Git о том, какие неотслеживаемые файлы так и должны остаться неотслеживаемыми и не должны фиксироваться. Все файлы, которые должны быть проигнорированы, сохраняются в файле .gitignore. Файл .gitignore – это обычный текстовый файл, который содержит список всех указанных файлов и папок проекта, которые Git должен игнорировать и не отслеживать. Внутри файла .gitignore вы можете указать Git игнорировать только один файл или одну папку, указав имя или шаблон этого конкретного файла или папки. Используя такой же подход, вы можете указать Git игнорировать несколько файлов или папок. Как создать файл .gitignore Обычно файл .gitignore помещается в корневой каталог репозитория. Корневой каталог также известен как родительский или текущий рабочий каталог. Корневая папка содержит все файлы и другие папки, из которых состоит проект. Тем не менее, вы можете поместить этот файл в любую папку в репозитории. Если на то пошло, но у вас может быть несколько файлов .gitignore. Для того, чтобы создать файл .gitignore в Unix-подобной системе, такой как macOS или Linux, с помощью командной строки, откройте приложение терминала (например, в macOS это Terminal.app). Затем для того, чтобы создать файл .gitignore для вашего каталога, перейдите в корневую папку, которая содержит проект, и при помощи команды cd введите следующую команду: touch .gitignore Файлы, перед именем которых стоит точка ., по умолчанию скрыты. Скрытые файлы нельзя просмотреть, используя только команду ls. для того, чтобы иметь возможность просмотреть все файлы, включая скрытые, используйте флаг -a с командой ls следующим образом: ls –a Что добавлять в файл .gitignore В файл .gitignore должны быть добавлены файлы любого типа, которые не нужно фиксировать. Вы можете не хотеть их фиксировать из соображений безопасности или потому, что они нужны только вам и не нужны другим разработчикам, работающим над тем же проектом, что и вы. Вот некоторые файлы, которые могут быть включены: Файлы операционной системы. Каждая операционная система, будь то macOS, Windows или Linux, создает системные скрытые файлы, которые не нужны другим разработчикам, так как их система создает такие же файлы. Например, в macOS Finder создает файл .DS_Store, который содержит пользовательские настройки внешнего вида и отображения папок, такие как размер и положение иконок. Файлы конфигурации, создаваемые такими приложениями, как редакторы кода и IDE (Integrated Development Environment – интегрированная среда разработки). Эти файлы настроены под вас, ваши конфигурации и ваши настройки, например папка .idea. Файлы, которые автоматически генерируются языком программирования или средой разработки, которую вы используете для своего проекта, и в процессе компиляции специфичных для кода файлов, такие как файлы .o. Папки, созданные диспетчерами пакетов, например, папка npm node_modules. Это папка, которая используется для сохранения и отслеживания зависимостей для каждого пакета, который вы устанавливаете локально. Файлы, которые содержат конфиденциальные данные и личную информацию. Примерами таких файлов могут послужить файлы с вашими учетными данными (имя пользователя и пароль) и файлы с переменными среды, такие как файлы .env (файлы .env содержат ключи API, которые должны оставаться защищенными и закрытыми). Файлы среды выполнения, такие как файлы .log. Они предоставляют информацию об использовании операционной системы и ошибках, а также историю событий, произошедших в рамках ОС. Как игнорировать файл или папку в Git Если вы хотите игнорировать только один конкретный файл, то вам необходимо указать полный путь к файлу из корневой папки проекта. Например, если вы хотите игнорировать файл text.txt, который расположен в корневом каталоге, то вы должны сделать следующее: /text.txt А если вы хотите игнорировать файл text.txt, который расположен в папке test корневого каталоге, вы должны сделать следующее: /test/text.txt Вы можете это записать иначе: test/text.txt Если вы хотите игнорировать все файлы с определенным именем, то вам нужно написать точное имя файла. Например, если вы хотите игнорировать любые файлы text.txt, то вы должны добавить в .gitignore следующее: text.txt В таком случае вам не нужно указывать полный путь к конкретному файлу. Этот шаблон будет игнорировать все файлы с таким именем, расположенные в любой папке проекта. Для того, чтобы игнорировать весь каталог со всем его содержимым, вам нужно указать имя каталога со слешем в конце: test/ Эта команда позволит игнорировать любой каталог (включая другие файлы и другие подкаталоги внутри каталога) с именем test, расположенный в любой папке вашего проекта. Стоит отметить, что если вы напишете просто имя каталога без слеша, то этот шаблон будет соответствовать как любым файлам, так и любым каталогам с таким именем: # соответствует любым файлам и каталогам с именем test test Что делать, если вы хотите игнорировать любые файлы и каталоги, которые начинаются с определенного слова? Допустим, вы хотите игнорировать все файлы и каталоги, имя которых начинается с img. Для этого вам необходимо указать имя, а затем селектор подстановочного символа *: img* Эта команда позволит игнорировать все файлы и каталоги, имя которых начинается с img. Но что делать, если вы хотите игнорировать любые файлы и каталоги, которые заканчиваются определенным набором символов? Если вы хотите игнорировать все файлы с определенным расширением, то вам необходимо будет использовать селектор подстановочного знака *, за которым последует расширение файла. Например, если вы хотите игнорировать все файлы разметки, которые заканчиваются расширением .md, то вы должны в файл .gitignore добавить следующее: *.md Этот шаблон будет соответствовать любому файлу с расширением .md, расположенному в любой папке проекта. Мы разобрали, как игнорировать все файлы, которые оканчиваются одинаково. Но что делать, если вы хотите сделать исключение для одного из этих файлов? Допустим, вы добавили в свой файл .gitignore следующее: .md Этот шаблон позволит игнорировать все файлы, оканчивающиеся на .md, но вы, например, не хотите, чтобы Git игнорировал файл README.md. Для этого вам нужно будет воспользоваться шаблоном с отрицанием (с восклицательным знаком), чтобы исключить файл, который в противном случае был бы проигнорирован, как и все остальные: # игнорирует все файлы .md .md # не игнорирует файл README.md !README.md Учитывая эти два шаблона в файле .gitignore, все файлы, оканчивающиеся на .md будут игнорироваться, кроме файла README.md. Стоит отметить, что данный шаблон не будет работать, если вы игнорируете весь каталог. Допустим, что вы игнорируете все каталоги test: test/ И допустим, внутри папки test у вас есть файл example.md, который вы не хотите игнорировать. В этом случае вы не сможете сделать исключение для файла внутри игнорируемого каталога следующим образом: # игнорировать все каталоги с именем test test/ # попытка отрицания файла внутри игнорируемого каталога не сработает !test/example.md Как игнорировать ранее закоммиченый файл Лучше всего создать файл .gitignore со всеми файлами и различными шаблонами файлов, которые вы хотите игнорировать, при создании нового репозитория, до его коммита. Git может игнорировать только неотслеживаемые файлы, которые еще не были зафиксированы в репозитории. Что же делать, если вы уже закоммитили файл, но хотели бы, чтобы он все-таки не был закоммичен? Допустим, что вы случайно закоммитили файл .env, в котором хранятся переменные среды. Для начала вам необходимо обновить файл .gitignore, чтобы включить файл .env: # добавить файл .env в .gitignore echo ".env" >> .gitignore Теперь, вам нужно указать Git не отслеживать этот файл, удалив его из перечня: git rm --cached .env Команда git rm вместе с параметром --cached удаляет файл из репозитория, но не фактический файл. Это значит, что файл остается в вашей локальной системе и в вашем рабочем каталоге в качестве файла, который игнорируется. Команда git status покажет, что файла в репозитории больше нет, в ввод команды ls покажет, что файл существует в вашей локальной файловой системе. Если вы хотите удалить файл из репозитория и вашей локальной системы, то не используйте параметр --cached. Затем добавьте .gitignore в область подготовленных файлов с помощью команды git add: git add .gitignore И наконец, закоммитте файл .gitignore с помощью команды git commit: git commit -m "update ignored files" Заключение Вот и все – теперь вы знаете, как игнорировать файлы и папки в Git.
img
MongoDB представляет собой универсальную структурированную и документно-ориентированную распределенную базу данных, созданную для современных приложений. Почему MongoDB? MongoDB NoSQL является базой данных с открытым исходным кодом, хотя, для корпоративных версий, придется покупать лицензии. MongoDB использует масштабируемую архитектуру на основе документов, которая хранит данные в формате JSON. Она обладает такими функциями, как совместное использование, кластеризация, репликация, агрегирование, формат BSON, индексирование, коллекции ограниченного объема и хранение файлов. Для хранения и извлечения данных из базы данных используется механизм wiredTiger, которая намного быстрее по сравнению с другими СУБД. Есть и другие полезные функции, которые включает в себя MongoDB, например, функция многодокументных ACID транзакций. В зависимости от варианта использования, у нас могут быть два аспекта, на которых необходимо обратить внимание при выборе хостинга на платформе MongoDB. Первым из них будет цена, а вторым возможности, которые она предлагает. Если говорить о ценообразовании, во-первых, нужно проверить хостинг провайдеры, которые предоставляют либо бесплатные, либо пробные версии. Как только мы воспользуемся этой схемой, будет легче принять решение. После использования бесплатной или пробной версии, мы можем сравнить и поискать другие более дешевые варианты. Говоря о функциях, ниже приведены ключевые особенности, которые необходимо принять во внимание, прежде чем выбирать для MongoDB хостинг платформу. Насколько хороша производительность? Размышляя о производительности, мы рассматриваем такие факторы, как время безотказной работы, например, скорость скачки и скорость закачки. Насколько хороша поддержка? Поддержка является очень важной частью при выборе платформы. Так как если возникнет какая-либо проблема, необходимо иметь надежную систему поддержки, которая может вовремя подключиться и быстро устранить проблемы. Насколько хороши методы резервного копирования? Каждая хостинговая компания имеет различные методы и процедуры резервного копирования. Некоторые компании берут дополнительную плату за хранение резервных копий и ставят ограничения на размер резервных копий. Это также важно, поскольку для резервного копирования базы данных требуется остановка системы или перезапуск. Существует два способа арендования хостингов MongoDB. Self-hosted Буквально переводится как самоуправляемый. Вы получаете облачную виртуальную машину и сами заботитесь об установке, настройке, мониторинге и администрировании. Это хорошо, если вы технически подкованный человек и у вас есть время заниматься всей этой кропотливой работой. Это может обойтись немного дешевле, но вы соглашаетесь на трату своего времени (а может и бессонные ночи). Managed В данном варианту вся забота настройки и текущего обслуживания лежит на персонале хостинг провайдера, и вы оплачиваете то, что используете. Ниже приведены некоторые из популярных платформ для размещения MongoDB. В этом материале постараемся рассмотреть их. 1. Atlas Atlas - облачный сервис баз данных компании MongoDB. Он имеет упрощенный пользовательский интерфейс для настройки баз данных и управления ими, а также многие другие функции, такие как совместное использование, кластеризация, репликация и т.д. Имеется возможность размещения на AWS, GCP или Azure. Такие компании, как eharmony, InVision, SEGA, KPMG, 7-ELEVEN широко используют облачный Atlas. Вы можете начать пользоваться им БЕСПЛАТНО, чтобы изучить платформу. Бесплатная версия предоставляет вам следующее. 512 МБ памяти Общая ОЗУ Наборы точных копий высокой надежности, сквозное шифрование, автоматические исправления, REST API Кроме того, при запуске выделенного кластера получите доступ к следующему: 10 ГБ или более ресурсов хранения Выделенная ОЗУ Инструменты оптимизации производительности Резервное копирование и восстановление на определенный момент времени Функции корпоративной безопасности, включая управление ключами шифрования, интеграцию LDAP и выборочный аудит баз данных Глобальные кластеры 2. Kamatera Kamatera является глобальным поставщиком облачных услуг и предоставляет инфраструктуру корпоративного уровня для малых и крупных предприятий. Центры обработки данных Kamatera расположены в Америке, Европе, Азии и на Ближнем Востоке. Инфраструктуру приложений можно легко расширить, добавив подсистему балансировки нагрузки, хранилище, сетевой брандмауэр и частные сети. Она может масштабироваться до большего количества серверов за считанные секунды и обеспечивает гарантированное время безотказной работы в 99,95%. Он предоставляет 30-дневный бесплатный пробный период, который можно использовать в качестве демонстрации для тестирования производительности. А после можно выбрать подходящий тарифный план, цены на которых начинаются с 4 долларов в месяц. 3. A2 Hosting A2 Хостинг популярен для WordPress, Joomla, Magento, Drupal и т.д. Но знаете ли вы, вы также можете получить хостинг MongoDB? Ну, теперь знаете. A2 предлагает множество удобных для разработчиков и ориентированных на производительность функций. Наряду с MongoDB можно разместить и другие базы данных, такие как MariaDB и SQLite. 4. ScaleGrid ScaleGrid - это полностью управляемое решение DBaaS (Database as-a-service). Поддерживает различные платформы баз данных, включая PostgreSQL, MySQL, Redis и MongoDB. На выбор предлагается два варианта. Вы можете либо мигрировать свое уже существующую облачную инфраструктуру, как AWS, DigireOcean, Azure или же завести тут выделенное облако. Они также предлагают локальное управление базами данных для предприятия. При заказе сервера можно выбрать автономный или с набором реплик. 5. Scalingo Scalingo полностью управляется и обеспечивает готовую к производству среду для MongoDB. Он предоставляет кластер MongoDB по запросу. Начальная цена базового пакета составляет $3,6, что дает нам 256MB ОЗУ и 1.25GB емкость хранения. В Scalingo экземпляр MongoDB будет находиться в контейнере Docker, поэтому он будет изолирован от других экземпляров, работающих на сервере. Вы получаете метрики и логи в реальном времени, которые могут помочь в устранении неполадок и планировании емкости. 6. ObjectRocket ObjectRocket решает проблемы масштабируемости и производительности, которые возникали до сих пор у экспертов по базам данных благодаря неограниченному доступу к DBA MongoDB и Fanatical Support. Он отслеживает более 250 метрик в минуту на каждом экземпляре базы данных и предпринимает действия для поддержания оптимальной производительности среды. Особенности: Мониторинг и оповещения Миграция базы данных Балансировка экземпляра Масштабирование ресурсов и управление ими Масштабирование и анализ запросов Проектирование схемы MongoDB Консультации по архитектуре и проектированию Аудит базы данных производственного уровня Белый список SSL и IP 7. IBM IBM Cloud предлагает гибридную облачную платформу следующего поколения с возможностями BigData и AI. Он имеет множество функций, таких как масштабирование без сервера и автоматическое резервное копирование. С помощью IBM Cloud разработчики могут сосредоточиться на создании приложений, а не на решении таких задач инфраструктуры, как безотказность, резервное копирование, ведение журналов, мониторинг, масштабирование и исправление программного обеспечения. Полностью управляемая база данных IBM MongoDB обеспечивает готовую интеграцию с IBM Identity and Access Management и IBM Activity Tracker для расширенного контроля доступа и аудита. Заключение Надеюсь, приведенный выше список дал лучшее представление о хостинг-платформе MongoDb. Почти каждая платформа предлагает пробную версию, поэтому стоит попробовать и посмотреть, что больше подходит под ваши требования.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59