По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Router-on-a-stick (роутер на палочке) - это термин, часто используемый для описания схемы, состоящей из маршрутизатора и коммутатора, которые соединены с использованием одного канала Ethernet, настроенного как 802.1Q транк. Стандарт 802.1Q используется для тегирования трафика, для передачи информации о принадлежности к VLAN. В этой схеме на коммутаторе настроено несколько VLAN и маршрутизатор выполняет всю маршрутизацию между различными сетями или VLAN (Inter-VLAN routing). /p> Хотя некоторые считают, что термин «маршрутизатор на палочке» звучит немного глупо, это очень популярный термин, который широко используется в сетях, где нет коммутатора 3-го уровня. Также такую схему иногда называют “леденец” – lollypop. Находите некоторое сходство? Пример Наш пример основан на сценарии, с которым вы, скорее всего, столкнетесь при работе с сетями VoIP. Поскольку реализации VoIP требуют разделения сети передачи данных и сети голоса для маршрутизации пакетов между ними, вам необходим либо коммутатор 3-го уровня, либо маршрутизатор. Эта конфигурация обеспечивает доступность и стабильность VoIP, особенно в часы пик трафика в вашей сети. Пакеты, передающиеся между VLAN маршрутизируются через один роутер, подключенный к коммутатору, используя один физический порт, настроенный как транк на обоих концах (коммутатор и маршрутизатор). Этот пример покажет вам, как настроить маршрутизатор и коммутатор Cisco для создания между ними 802.1Q транка и маршрутизации пакетов между вашими VLAN. Шаг 1 – Настройка коммутатора Первым шагом является создание необходимых двух VLAN на нашем коммутаторе Cisco и настройка их с IP-адресом. Поскольку все коммутаторы Cisco содержат VLAN1 (VLAN по умолчанию), нам нужно только создать VLAN2. Switch# configure terminal Switch(config)# vlan2 Switch(config-vlan)# name voice Switch(config-vlan)# exit Switch(config)# interface vlan1 Switch(config-if)# ip address 192.168.10.2 255.255.255.0 Switch(config-if)# exit Switch(config)# interface vlan2 Switch(config-if)# ip address 192.168.20.2 255.255.255.0 Switch(config-if)# exit Далее, нам нужно создать транк порт, который будет соединятся с маршрутизатором. Для этой цели мы выберем порт GigabitEthernet 0/1 Switch# configure terminal Switch(config)# interface gigabitethernet 0/1 Switch(config-if)# switchport trunk encapsulation dot1q Switch(config-if)# switchport mode trunk Switch(config-if)# spanning-tree portfast trunk При помощи данных команд мы определили, что транк будет использовать инкапсуляцию 802.1Q, установили порт в режим транка и включили функцию portfast trunk spanning-tree, чтобы гарантировать, что порт будет пересылать пакеты немедленно при подключении к устройству, например, маршрутизатору. Внимание: команда spanning-tree portfast trunk не должна использоваться на портах, которые подключаются к другому коммутатору, чтобы избежать петель в сети. Шаг 2 – Настройка маршрутизатора Мы закончили с коммутатором и можем переходить к настройке конфигурации нашего маршрутизатора, чтобы обеспечить связь с нашим коммутатором и позволить всему трафику VLAN проходить и маршрутизироваться по мере необходимости. Создание транка на порте маршрутизатора не сильно отличается от процесса, описанного выше - хотя мы транк на одном физическом интерфейсе, мы должны создать под-интерфейс (sub-interface) для каждого VLAN. Router# configure terminal Router(config)# interface gigabitethernet0/1 Router(config-if)# no ip address Router(config-if)# duplex auto Router(config-if)# speed auto Router(config-if)# interface gigabitethernet0/1.1 Router(config-subif)# encapsulation dot1q 1 native Router(config-subif)# ip address 192.168.10.1 255.255.255.0 Router(config-subif)# interface gigabitethernet0/1.2 Router(config-subif)# encapsulation dot1q 2 Router(config-subif)# ip address 192.168.20.1 255.255.255.0 Чтобы сформировать транк с нашим коммутатором, необходимо создать один под-интерфейс для каждого VLAN, сконфигурированного на нашем коммутаторе. После создания под-интерфейса мы назначаем ему IP-адрес и устанавливаем тип инкапсуляции 802.1Q и указываем номер VLAN, к которому принадлежит под-интерфейс. Например, команда encapsulation dot1q 2 определяет инкапсуляцию 802.1Q и устанавливает под-интерфейс на VLAN 2. Параметр native который мы использовали для под-интерфейса gigabitethernet0/1.1, сообщает маршрутизатору, что нативный vlan - это VLAN 1. Это параметр по умолчанию на каждом коммутаторе Cisco и поэтому должен совпадать с маршрутизатором. Для проверки можно использовать на роутере команду show vlans, где будут отображены созданные нами под-интерфейсы, а также при помощи команды show ip route в таблице маршрутизации мы должны увидеть наши под-интерфейсы. Готово! Теперь при помощи роутера мы можем маршрутизировать файлы между разными VLAN.
img
Построение модели API требует стратегического подхода, и он связан с CRUD. Направляя разработчиков целиком и полностью, CRUD прокладывает путь для разработчиков API, ведя их по пути разработки доработанных и высококлассных API. Что такое CRUD? CRUD – это сокращение от Create (создание), Read (чтение), Update (модификация) и Delete (удаление). Эти четыре функции являются ключевыми принципами, которым следуют разработчики и программисты API при создании надежных API. В соответствии с отраслевым стандартом каждая модель API должна следовать всем этим четырем (или как минимум трем) принципам в процессе выполнения. Некоторые языки программирования следуют CRUD в том виде, в котором он есть, в то время как лишь некоторые используют адаптированную версию CRUD. К языкам, использующим инфраструктуру CRUD, относятся: Python, PHP, Java и .Net. CRUD работает как напоминание для разработчиков о том, что необходимо для того, чтобы приложение чувствовало себя полноценным. Она возникла в начале 80-х годов. В то время его использовали для иллюстрирования жизнеспособности базы данных SQL. Со временем он расширил список областей применения и стал ключевым принципом проектирования для DDS и HTTP. Определение функций CRUD Однозначное понимание функций CRUD позволяет разработчикам максимально эффективно использовать их. Итак, ознакомьтесь с каждой из 4 функций и рассмотрите примеры для того, чтобы лучше понимать их принцип действия. Create Эта функция используется для оповещения о введении любых новых изменений в базу данных и обеспечения их реализации. В реляционной базе данных SQL, Create называется INSERT. Этот оператор разрешает конечному пользователю создавать новые строки данных и позволяет ранее сохраненным данным легко взаимодействовать с новой базой данных. Пример: Допустим, мы добавляем Фрукты в список http://www.example.com/fruits/. Для того, чтобы создать объект «Манго», мы должны оправить запрос POST на этот URL: { “fruit": { "name": “Mango”, "color": “Yellow” } } Этот код создаст еще один объект в списке фруктов с именем «манго», у которого есть свойство (цвет) со значением «желтый». При успешном создании вы получите HTTP-ответ 201. Read Что функция поиска делает в обычных случаях, вы можете узнать, почитав о реляционных базах данных. Конечным пользователям разрешено искать различимые значения или данные в таблице данных и находить значения. Можно использовать определённые ключевые слова или фильтровать данные, чтобы получить точную информацию. Пример: Теперь для того, чтобы прочитать список, в который вы добавили объект в предыдущем примере, воспользуемся GET-запросом. Используйте этот код: GET http://www.example.com/fruits/ Если для вашего запроса существует запись, то вы увидите HTTP-ответ 200. Также вы увидите список фруктов. { "fruits": [ { "id": 1, "name": “Apple”, "color": “Red” }, { "id": 2, "name": “Grapes”, "color": “Green” }, ... { "id": 3, "name": “Mango”, "color": “Yellow” } ] } Для того, чтобы увидеть детали, связанные с конкретным объектом Манго, который мы создали, используйте этот код: GET http://www.example.com/fruits/3/ Update Функция модификации полезна для изменения уже существующих записей без внесения каких-либо нарушений в существующую базу данных. Для полной модификации требуется некоторая модификация в нескольких областях. Эта функция известна как Update как в SQL, так и в Oracle HCM Cloud. Пример: Для того, чтобы изменить значение объекта, выполним PUT-запрос для URL-адреса конкретного объекта. Вот так: PUT http://www.example.com/fruits/3/ { "fruits": { "name": “Ripe Watermelon”, "color": “Blood Red” } } Если возвращается идентификатор состояния 200, то обновление прошло успешно. Для подтверждения вы можете прочитать этот объект повторно и просмотреть значения для него. Delete При помощи этой функции пользователи могут удалять определенные записи или данные из определенной базы данных. Вы можете удалять данные, которые больше не нужны или устарели. Удаление бывает двух типов: обратимое или необратимое удаление. Необратимое удаление удаляет данные один раз, а обратимое используется для обновления состояния строки данных без ее окончательного удаления. Пример: Это очень просто. Давайте удалим созданный нами объект. DELETE http://www.example.com/fruits/3/ Теперь при GET-запросе (чтение) вы получите код 404, который говорит о том, что данных по вашему запросу нет. Преимущества CRUD Есть что-то, что заставляет разработчиков и дизайнеров приложений предпочитать CRUD любому другому подходу. Это «что-то» - это непревзойденная производительность, интегрированная с некоторыми уникальными функциями. Основные преимущества, которыми можно воспользоваться после запуска CRUD, представлены ниже. Меньшая вероятность атак путем внедрения SQL-кода Использование SQL-языка имеет больше шансов столкнуться с SQL-атаками, поскольку все операторы SQL выполняются непосредственно на SQL-серверах. Сервер также хранит инструкции и процедуры SQL, доступ неавторизованных ресурсов к которым может оказаться фатальным. Использование CRUD позволяет контролировать возможные атаки путем внедрения SQL-кода, поскольку использует уже сохраненные действия и не требует создания динамических запросов с использованием данных конечного пользователя. Кроме того, такой подход использует однозначное цитирование параметров SQL-операторов. Лучшая защита от случайного просмотра Пользователи специальных SQL-операторов должны получить разрешение на доступ к таблицам базы данных. После успешного предоставления разрешения конечным пользователям разрешается читать и управлять данными, имеющимися в Excel, Word и любой другой программе. Также возможен обход бизнес-правил приложения. Однако делать это не всегда выгодно. Риски утечки данных есть всегда. CRUD в такой ситуации полезен, так как делает возможным использование ролей приложений. Используя роли приложений, можно обеспечить высоко интегрированную безопасность базы данных и контролировать права доступа. Полномочия могут защищаться паролем, а поскольку пароли также интегрированы в приложение, то изменить их сложно. Таким образом, можно покончить со случайным просмотром. CRUD vs REST – сравнение CRUD и REST очень часто используют для обозначения одного и того же подхода. Такая путаница очевидна, так как приложения REST следуют принципу, подобному CRUD, для взаимодействия с другими приложениями или компонентами. Тем не менее, эти два термина не идентичны и имеют ряд явных сходств и различий. Что общего? Приложения REST разрабатываются с сохранением определенного набора ресурсов в смысловом центре. Эти ресурсы, как и ресурсы CRUD, можно легко создавать, читать, модифицировать и удалять. Просто вместо Create, Read, Update и Delete в REST используются ресурсы PUT/POST, GET, PATCH/POST и DELETE. В чем разница? Абсолютно точно, то у этих двоих больше различий, чем сходств. Взгляните на ключевые различия между ними. В части определения REST упоминается как архитектурная система, а CRUD – как функция. REST «крутится» вокруг ресурсов, основанных на компонентах HTTP. CRUD «крутится» вокруг информации, хранящейся в настройках базы данных. CRUD может быть частью REST, но REST не может быть частью CRUD. REST – это независимый подход, который может правильно функционировать и без CRUD. Что такое CRUD-тестирование? CRUD-тестирование – это оригинальная методология тестирования методом «черного ящика», которая широко используется для подтверждения полезности данного программного обеспечения в режиме реального времени. Это понятие используется для SQL и других ресурсов СУБД, для которых гарантируется точное отображение данных, сквозное обслуживание ACID-свойств и несравнимая целостность данных. Обеспечение безопасности в REST и CRUD-операциях Аутентификация, авторизация и учет использования ресурсов (или ААА – Authentication, Authorization, Accounting) – это крайне эффективная практика безопасности, которая одинаково хорошо подходят для REST и CRUD. Она включает в себя аутентификацию конечных пользователей, выполнение авторизации перед каждым доступом и привлечение конечных пользователей к ответственности за свои действия или использование данных.
img
Kubernetes - это система с открытым исходным кодом, созданная для оркестровки, масштабирования и развертывания контейнерных приложений. Если вы хоть раз работали с Kubernetes, то знаете, насколько он полезен для управления контейнерами. Вы также знаете, что контейнеры не всегда работают должным образом. Если появляется сообщение об ошибке, вам нужен быстрый и простой способ решить проблему. Из этого туториала Вы узнаете, как перезапустить поды в Kubernetes. Под (Pod) – наименьшая запускаемая единица в ноде. Это группа контейнеров, которые должны работать вместе. Перезапуск подов Kubernetes Допустим, один из подов в вашем контейнере сообщает об ошибке. В зависимости от политики перезапуска Kubernetes может попытаться автоматически перезапустить под, чтобы он снова заработал. Однако это не всегда решает проблему. Если Kubernetes не может решить проблему самостоятельно, и вы не можете найти источник ошибки, перезапуск пода вручную - это самый быстрый способ вернуть приложение в рабочее состояние. Быстрое решение - вручную перезапустить затронутые поды. Это может сэкономить ваше время, особенно если ваше приложение работает и вы не хотите выключать службу. Вот три простых способа сделать это. Метод 1: Rolling Restart Начиная с обновления 1.15, Kubernetes позволяет выполнять непрерывный перезапуск развертывания. В качестве нового дополнения к Kubernetes это самый быстрый метод перезапуска. kubectl rollout restart deployment [deployment_name] Вышеупомянутая команда выполняет пошаговое завершение работы и перезапускает каждый контейнер в вашем развертывании. Ваше приложение по-прежнему будет доступно, поскольку большинство контейнеров все еще будут работать. Метод 2: Использование переменных среды Другой способ - установить или изменить переменную среды, чтобы поды перезагружались и синхронизировались с внесенными вами изменениями. Например, вы можете изменить дату развертывания контейнера: kubectl set env deployment [deployment_name] DEPLOY_DATE="$(date)" В приведенном выше примере набор команд env настраивает изменение переменных среды, развертывание [deployment_name] выбирает ваше развертывание, а DEPLOY_DATE="$(date) изменяет дату развертывания. Метод 3. Масштабирование количества реплик Наконец, вы можете использовать команду масштабирования, чтобы изменить количество реплик неисправного пода. Установка этого количества на ноль по существу отключает под: kubectl scale deployment [deployment_name] --replicas=0 Чтобы перезапустить под, используйте ту же команду, чтобы установить количество реплик на любое значение больше нуля: kubectl scale deployment [deployment_name] --replicas=1 Когда вы устанавливаете количество реплик равным нулю, Kubernetes уничтожает реплики, которые ему больше не нужны. Как только вы установите число больше нуля, Kubernetes создаст новые реплики. Новые реплики будут иметь другие имена, чем старые. Вы можете использовать команду kubectl get pods, чтобы проверить статус модулей и увидеть новые имена. Итог Kubernetes - чрезвычайно полезная система, но, как и любая другая система, она не безошибочна. Когда все же возникают проблемы, вы можете использовать три перечисленных выше метода, чтобы быстро и безопасно заставить ваше приложение работать, не закрывая службу для ваших клиентов.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59