По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
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
Компания Juniper является очень крупным производителем сетевого оборудования в мире - после Cisco and Huawei. После того как вы купили, установили и скоммутировали новое оборудование, возникает вопрос о его правильной настройке. Преимуществом коммутаторов от производителя Juniper, в основном, является возможность объединения до шести коммутаторов в одно единое устройство с надежным и удобным управлением портами, сохраняя стабильную и бесперебойную работу сети. Настройка сетевого интерфейса Настройка QoS (качество обслуживания) Virtual Chassis (объединение коммутаторов) Реализация возможности сброса до заводских настроек Настроив данные компоненты, вы сможете реализовать работу сети с использованием в ней большого количества устройств для осуществления передачи трафика. Настройка сетевого интерфейса Интерфейс коммутатора отвечает за реализацию передачи данных между сетью и пользователем, что и является главной задачей коммутатора. Его конфигурация осуществляется с помощью следующих строк кода: root> configure Entering configuration mode [edit] root# edit interfaces [edit interfaces] root# Конфигурация L3: [edit interfaces] root# set em0 unit 0 family inet address 100.0.0.1/30 Где: Em0 - физический интерфейс, а Family inet - позволяет выбрать протокол интерфейса. Команда "show" позволит из Configuration Mode проверить результат вашей настройки: [edit interfaces] root# show em0 { unit 0 { family inet { address 100.0.0.1/30; } } } [edit interfaces] Теперь примените настройки с помощью следующей команды: root# commit commit complete С помощью команды ping осуществим проверку конфигурации: root> ping 100.0.0.2 rapid PING 100.0.0.2 (100.0.0.2): 56 data bytes !!!!! --- 100.0.0.2 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.402/0.719/1.306/0.343 ms Конфигурация L2 root> configure Entering configuration mode [edit] root# edit interfaces em0 [edit interfaces em0] Необходимо задать дуплекс на интерфейсе: [edit interfaces em0] root# set link-mode full-duplex [edit interfaces em0] root# Примечание: L2 - устройства, работающие на канальном уровне, при этом коммутатором занимается фреймами. А L3 взаимодействуют с IP-адресами и осуществляют маршрутизацию. Конфигурация L3 включает большее число параметров за счет расширенного функционала. Настройка Virtual Chassis После правильной настройки интерфейса, следует перейти к объединению коммутаторов, которое позволит облегчить управление устройствами, а также повысить надежность работы сети, за счет взаимозаменяемости устройств. Следует отметить, что коммутаторы Juniper не имеют отдельным порт VCP, поэтому придется настраивать обычный интерфейс в качестве VCP. Конфигурация VCP вручную: Включите все коммутаторы, также вам понадобятся их заводская маркировка, которую следует записать. Для примера используем следующие: CT0216330172 CV0216450257 Включите коммутатор, который будет выполнять функцию master switch, после чего сделайте сброс настройка с помощью следующей строки кода: request system zeroize Перезагрузив систему, выполните следующие строки: ezsetup set system host-name sw_master set system domain-name metholding.int set system domain-search metholding.int set system time-zone Europe/Moscow set system root-authentication plain-text-password set system name-server 10.10.6.26 set system name-server 10.10.6.28 set system services ssh protocol-version v2 set system ntp server 10.10.1.130 version 4 set system ntp server 10.10.1.130 prefer set vlans Management description 10.10.45.0/24 set vlans Management vlan-id 100 set vlans Management l3-interface vlan.1 set interfaces vlan unit 1 family inet address 10.10.45.100/24 set routing-options static route 0.0.0.0/0 next-hop 10.10.45.1 set interfaces ge-0/0/47 unit 0 family ethernet-switching port-mode trunk set interfaces ge-0/0/47 unit 0 family ethernet-switching vlan members Management Активируем preprovisioned configuration mode: set virtual-chassis preprovisioned Вносим серийные номера оборудования: set virtual-chassis member 0 serial-number CT02/16330172 role routing-engine set virtual-chassis member 1 serial-number CV0216450257 role routing-engine set virtual-chassis no-split-detection Проверьте результат, с помощью следующей строки: root@sw-master> show virtual-chassis status Обнулите конфигурацию и включайте остальные коммутаторы: request system zeroize Раздел virtual-chassis в конфигурации должен быть пустой, а для подстраховки, используйте команду: delete virtual-chassis Настроим порты VCP для каждого коммутатора. Для данного примера, соедините коммутаторы портами ge-0/0/0 и ge-0/0/1 соответственно. Теперь задайте эти строки кода на каждом из коммутаторов: request virtual-chassis vc-port set pic-slot 0 port 0 request virtual-chassis vc-port set pic-slot 0 port 1 --------------------ВЫВОД---------------------------- root> show interfaces terse Interface Admin Link Proto Local Remote vcp-255/0/0 up up vcp-255/0/0.32768 up up vcp-255/0/1 up up vcp-255/0/1.32768 up up ge-0/0/2 up down ge-0/0/2.0 up down eth-switch Теперь два коммутатора объединились, проверить можно с помощью команды: show virtual-chassis status show virtual-chassis vc-port Если вы захотите добавить дополнительных участников к virtual-chassis, вам будет необходимо очистить конфигурацию нового коммутатора: show interfaces terse | match vcp Если есть, их надо удалить с командой: request virtual-chassis vc-port delete pic-slot 0 port 0 Внесите серийный номер дополнительного устройства: set virtual-chassis member 2 serial-number CT0217190258 role line-card Настройка портов VCP в новом коммутаторе, в котором мы соединяем следующими портами - ge-0/0/0 и ge-0/0/1: request virtual-chassis vc-port set pic-slot 0 port 0 request virtual-chassis vc-port set pic-slot 0 port 1 Теперь проверьте их наличие: show interfaces terse | match vcp НастройкаQoS Технология QoS используется для распределение используемого трафика и ранжирование на классы с различным приоритетом. Технология необходима для увеличения вероятности пропускания трафика между точками в сети. Сейчас мы рассмотрим деление потока трафика с приоритетом на ip-телефонию и видеоконференцсвязь на коммутаторе и использованием настроек по умолчанию class-of-service (CoS). Допустим, что ip-телефоны подключены к коммутатору, а для маркировки ip-пакетов от ip-PBX и других ip-телефонов используются следующие показания DSCP: 46 - ef - медиа (RTP) 24 - cs3 - сигнализация (SIP, H323, Unistim) 32 - cs4 - видео с кодеков (RTP) 34 - af41 - видео с телефона, софтового клиента, кодека (RTP) 0 - весь остальной трафик без маркировки. DSCP - является самостоятельным элементом в архитектуре сети, описывающий механизм классификации, а также Обеспечивающий ускорение и снижение задержек для мультимедийного трафика. Используется пространство поля ToS, являющийся компонентом вспомогательным QoS. Теперь требуется dscp ef и af отнести к необходимым внутренним классам expedited-forwarding и assured-forwarding. За счет конфигурации classifiers, появляется возможность создания новых классов. ex2200> show configuration class-of-service classifiers dscp custom-dscp { forwarding-class network-control { loss-priority low code-points [ cs6 cs7 ]; } forwarding-class expedited-forwarding { loss-priority low code-points ef; } forwarding-class assured-forwarding { loss-priority low code-points [ cs3 cs4 af41 ]; } } ex2200> show configuration class-of-service schedulers sc-ef { buffer-size percent 10; priority strict-high; } sc-af { shaping-rate 20m; buffer-size percent 10; } sc-nc { buffer-size percent 5; priority strict-high; } sc-be { shaping-rate percent 80; buffer-size { remainder; } } Наименования можно выбрать произвольно, но а процент выделенных буферов - в соответствии с необходимостью. Ключевым приоритетом работы QoS является определение трафика с ограничением пропускающей полосы в зависимости от потребности в ней. Шедулеры сопоставляются в соответствии с внутренними классами, в результате которого scheduler-map и classifier необходимо применяется ко всем интерфейсам, используя и описывая их в качестве шаблона. К интерфейсу возможно применять специфические настройки, подразумевающие возможность написания всевозможных scheduler и scheduler-maps для различных интерфейсов. Конечная конфигурация имеет следующий вид: ex2200> show configuration class-of-service classifiers { dscp custom-dscp { forwarding-class network-control { loss-priority low code-points [ cs6 cs7 ]; } forwarding-class expedited-forwarding { loss-priority low code-points ef; } forwarding-class assured-forwarding { loss-priority low code-points [ cs3 cs4 af41 ]; } } } host-outbound-traffic { forwarding-class network-control; } interfaces { ge-* { scheduler-map custom-maps; unit 0 { classifiers { dscp custom-dscp; } } } ae* { scheduler-map custom-maps; unit 0 { classifiers { dscp custom-dscp; } } } } scheduler-maps { custom-maps { forwarding-class network-control scheduler sc-nc; forwarding-class expedited-forwarding scheduler sc-ef; forwarding-class assured-forwarding scheduler sc-af; forwarding-class best-effort scheduler sc-be; } } schedulers { sc-ef { buffer-size percent 10; priority strict-high; } sc-af { shaping-rate 20m; buffer-size percent 10; } sc-nc { buffer-size percent 5; priority strict-high; } sc-be { shaping-rate percent 80; buffer-size { remainder; } } } Перед использованием данной настройки, проверьте командой commit check. А при наличии следующей ошибки, следует учесть следующее: [edit class-of-service interfaces] 'ge-*' One or more "strict-high" priority queues have lower queue-numbers than priority "low" queues in custom-maps for ge-*. Ifd ge-* supports strict-high priority only on higher numbered queues. error: configuration check-out failed В итоге мы не можем указать приоритет "strict-high" только для 5-ой очереди, когда у 7-ой останется приоритет "low". При этом можно решить проблему следующим образом: настроить для network-control приоритет "strict-high". Применив конфигурацию, определенный процент фреймов в очередях будет потеряна. Требуется обнулить счетчики, проверить счетчики дропов через некоторое время, где переменные значения не равны нулю. clear interfaces statistics all show interfaces queue | match dropped | except " 0$" При росте счетчиков дропа в конфигурации есть ошибка. Если вы пропустили описание в class-of-service interfaces шаблоном или в явном виде, то трафик в классах со стопроцентной вероятностью дропнется. Правильная работа выглядит следующим образом: ex2200> show interfaces queue ge-0/0/22 Physical interface: ge-0/0/22, Enabled, Physical link is Up Interface index: 151, SNMP ifIndex: 531 Forwarding classes: 16 supported, 4 in use Egress queues: 8 supported, 4 in use Queue: 0, Forwarding classes: best-effort Queued: Transmitted: Packets : 320486 Bytes : 145189648 Tail-dropped packets : 0 RL-dropped packets : 0 RL-dropped bytes : 0 Queue: 1, Forwarding classes: assured-forwarding Queued: Transmitted: Packets : 317 Bytes : 169479 Tail-dropped packets : 0 RL-dropped packets : 0 RL-dropped bytes : 0 Queue: 5, Forwarding classes: expedited-forwarding Queued: Transmitted: Packets : 624 Bytes : 138260 Tail-dropped packets : 0 RL-dropped packets : 0 RL-dropped bytes : 0 Queue: 7, Forwarding classes: network-control Queued: Transmitted: Packets : 674 Bytes : 243314 Tail-dropped packets : 0 RL-dropped packets : 0 RL-dropped bytes : 0 Переход к заводским настройкам Если вам избавится от вашей конфигурации, которая работает некорректно вы можете сбросить настройки до заводских параметров. Советуем использовать данную функции, предусмотренную производителем оборудования, в случае реальной сложности в поиске ошибки, выполнив конфигурацию заново, вы можете заметно сэкономить свое время. Самый простой способ, это ввод следующей команды: load factory defaults После ввода команды, система оповестит Вас о том, что в данный момент будет осуществлена активация заводских настроек по умолчанию. А с помощью привычной команды "commit" активируем настройки и перезагружаемся. Мы рассмотрели базовые настройки коммутаторов Juniper, позволяющих создание надежной и гибкой сети для различных нужд.
img
Сериализация – это процесс, в котором одна служба берет структуру данных, такую как словарь в Python, упаковывает ее и передает другой службе для чтения. Это максимально простое определение. Представьте, что мне нужно отправить кому-то сообщение. Итак, я записываю текст на уже собранный пазл. Далее я разбираю части пазла, добавляю несколько инструкций о том, как его собрать, и отправляю его. Затем получатель сообщения, получив кусочки головоломки, собирает их вместе. И теперь у него есть мое сообщение. Техническое определение этого понятия немного интереснее. А именно, сериализация – это процесс преобразования объекта данных в поток байтов и сохранения состояния объекта для хранения на диске или передачи по сети. Это сокращает необходимый размер хранилища и упрощает передачу информации по сети. Маршалинг и сериализация – в чем разница? Здесь на ум может прийти понятие маршалинга (Marshalling). Маршалинг – это процесс преобразования представления объекта в памяти в форму, подходящую для передачи. Хотя маршалинг и сериализация в общих чертах похожи, между ними все-таки есть принципиальная разница. Например, при создании программы в Golang для считывания JSON данных в структуру данных Golang вы можете использовать маршалинг для преобразования пары «ключ-значение» JSON в пару «ключ-значение» Golang. Разница в том, что маршалинг используется для преобразования данных. А сериализация, напротив, отправляет или сохраняет данные в потоке байтов и повторно собирает их в исходную форму. Оба процесса вроде бы выполняют процесс сериализации, но с разными намерениями. Вы можете увидеть структуру, которую я создал для взаимодействия с данными Twitter, ниже, как пример процесса маршалинга в действии. В Golang вы можете вставлять подсказки, называемые тегами, легко преобразовывая этот объект в данные JSON с помощью встроенной службы маршалинга Golang. Что такое Endianness? Я также хотел бы немного затронуть тему порядка следования байтов. Endianness – это термин, который используется для описания порядка байтов в памяти. Представьте, что память – это блок, в котором хранятся биты данных. Чтобы сериализация работала, поток байтов должен передавать типы данных независимо от изменения порядка следования байтов из одной системы в другую. Здесь вы можете увидеть большие различия и не очень. Очень важно, чтобы порядок следования байтов из одной системы в другую совпадал или каким-либо образом преобразовывался, поскольку не все системы упорядочивают свои биты одинаково. Little endian (от младшего к старшему) и big endian (от старшего к младшему) Варианты использования сериализации Наш вариант использования в полной мере использует все функции сериализации. Мы планируем получить некоторую информацию от сканируемого оборудования, упаковать эту информацию в поток байтов и отправить ее по сети в другую службу, которая восстановит данные. Процесс обратной сериализации и восстановления данных в исходную форму называется десериализацией. Есть и другие варианты использования сериализации. Например, REST API или протоколы обмена сообщениями, такие как AMQP, могут использовать сериализацию для сжатия и отправки данных. AMQP – это протокол обмена сообщениями, в котором вы отправляете сообщение брокеру AMQP, а служба-получатель «прослушивает» этого брокера в поисках сообщения. Серверные специалисты должны быть хорошо с этим знакомы, так как это часто используется для отправки данных туда и обратно в распределенных системах. Многие языки программирования включают возможность легкого развертывания некоторой сериализации. Так что это языково-независимая тема. Пример сериализации Приведем краткий пример. Код, приведенный ниже, использует библиотеку kombu для отправки сообщений через AMQP. Мы используем ее для отправки сообщений из одного программного пакета в другой по сети. Данный код предназначен для службы, отправляющей сообщение брокеру AMQP: Обратите внимание на метод publish. Мы передаем метод сериализации в качестве аргумента, чтобы библиотека понимала, как сериализовать данные, которые мы передаем. Сообщение с данными преобразуется в поток байтов, который, если на него посмотреть, выглядит просто как длинная строка букв и цифр. И мы отправляем сообщение. Соответствующая служба будет использовать тот же метод сериализации для восстановления данных в их исходное состояние. Это важная функция, поскольку мы создаем набор инструментов, которые должны иметь возможность отправлять сообщения друг другу, чтобы все работало. Форматы данных сериализации В основном я использую JSON для сериализации, когда этого требует задача. Но тем не менее, вы можете использовать и другие варианты. У JSON много издержек, но для меня он идеален, потому что он читабелен. Вы также можете использовать Protobuf, YAML или XML. Это лишь некоторые из возможных. Заключение Сериализация становится необходимостью, когда вы строите свои каналы связи. Полезно знать о таком понятии, чтобы чувствовать себя уверенно при подходе к любому инструменту, который вы используете, с соответствующими базовыми знаниями.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59