По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Redis - это решение с открытым исходным кодом для хранения структур данных. Он в основном используется как хранилище значений ключей, что позволяет ему работать как база данных, кеш-хранилище и брокер сообщений. В этом руководстве мы рассмотрим различные способы удаления этих пар "ключ-значение" (ключей) и очистки кеша Redis. Очистить кеш Redis с помощью команды redis-cli Самый простой способ очистить кеш Redis - использовать команду redis-cli. Базы данных в Redis хранятся индивидуально. Использование команды redis-cli позволяет удалить ключи либо из всех баз данных, либо только из одной указанной базы данных. Синтаксис команды redis-cli Команда redis-cli использует следующий синтаксис: redis-cli [номер базы данных] [опция] Где: [опция] - позволяет выбрать между очисткой всех баз данных или одной конкретной базы данных по вашему выбору. [номер базы данных] - позволяет указать, какую базу данных вы хотите очистить. Примечание. После удаления ключей из базы данных их невозможно будет восстановить. Удаление всех ключей Чтобы удалить ключи из всех баз данных Redis, используйте следующую команду: Redis-Cli Flushall Начиная с версии 4.0.0, Redis может очищать ключи в фоновом режиме, не блокируя ваш сервер. Для этого используйте команду flushall с параметром async: Redis-cli flushall async Удаление ключей из определенной базы данных Используйте следующую команду, чтобы очистить только определенную базу данных: Redis-cli flushdb Использование команды flushdb без каких-либо параметров очищает текущую выбранную базу данных. Используйте параметр -n с номером базы данных, чтобы выбрать конкретную базу данных, которую вы хотите очистить: redis-cli -n [номер базы данных] flushdb Вы также можете использовать параметр async при очистке ключей из отдельных баз данных: redis-cli -n [номер базы данных] flushdb async Автоматическая очистка кеша с помощью Ansible Если у вас работает большое количество серверов Redis, очистка кеша для каждого из них вручную требует времени. Чтобы ускорить этот процесс, используйте такой инструмент, как Ansible, чтобы очистить кеш на всех ваших серверах Redis одновременно: ansible all -m command -a '/usr/bin/redis-cli flushall ' Выполнение этой команды применяет команду flushall к каждому серверу в вашем файле инвентаризации Ansible: all - позволяет выбрать все удаленные хосты в файле инвентаризации Ansible. -m - позволяет выбрать модуль для выполнения. -a - Предоставляет аргумент для модуля. В этом случае командный модуль запускает команду flushall с помощью redis-cli.
img
В этом материале расскажем, как можно фильтровать маршруты, анонсируемые протоколом динамической маршрутизации EIGRP. Данный материал предполагает, что у читателя есть начальные навыки работы с сетью или как минимум знания на уровне CCNA. Поэтому о том, что такое динамическая маршрутизация в этом материале не будет рассказано, так как тема достаточно большая и займет не одну страницу. Теперь представим, что мы работаем в большой компании с сотнями серверов, десятками филиалов. Мы подняли сеть, настроили динамическую маршрутизацию и все счастливы. Пакеты ходят куда надо, как надо. Но в один прекрасный день, нам сказали, что на маршрутизаторах филиалов не должно быть маршрутов к сетям отдела производства. На рисунке ниже представлена упрощенная схема нашей вымышленной сети. Конфигурацию всех устройств из этой статьи (для каждой ноды) можно скачать в архиве по ссылке ниже. Скачать конфиги тестовой лаборатории Мы конечно можем убрать из-под EIGRP указанные сети, но в этом случае из сетей в головном офисе тоже не будет доступа к сетям отдела производства. Именно для таких случаев была придумана такая возможность, как фильтрация маршрутов. В EIGRP это делается командой distribute-list в конфигурации EIGRP. Принцип работы distribute-list (список распределения) прост: список распределения работает по спискам доступа (ACL), спискам префиксов (prefix-list) или карте маршрутов (route-map). Эти три инструмента определяют будут ли анонсироваться указанные сети в обновлениях EIGRP или нет. В команде distribute-list также можно указать направление обновлений: входящие или исходящие. Также можно указать конкретный интерфейс, где должны фильтроваться обновления. Полная команда может выглядеть так: distribute-list acl [in | out][interface-type interface-number] Фильтрация маршрутов с помощью списков доступа Первым делом рассмотрим фильтрацию с помощью ACL. Фильтрация маршрутов EIGRP с помощью списков ACL основан на разрешающих и запрещающих действиях списков доступа. То есть, чтобы маршрут анонсировался, в списке доступа он должен быть указан с действием permit, а deny, соответственно, запрещает анонсирование маршрута. При фильтрации, EIGRP сравнивает адрес источника в списке доступа с номером подсети (префиксом) каждого маршрута и принимает решение на основе действий, указанных в ACL. Чтобы лучше узнать принцип работы приведём примеры. Для фильтрации маршрутов, указанных на рисунке выше нужно создать ACL, где каждый указанный маршрут сопровождается командой deny, а в конце следует прописать permit any, чтобы остальные маршруты могли анонсироваться: access-list 2 deny 10.17.32.0 0.0.1.255 access-list 2 deny 10.17.34.0 0.0.0.255 access-list 2 deny 10.17.35.0 0.0.0.127 access-list 2 deny 10.17.35.128 0.0.0.127 access-list 2 deny 10.17.36.0 0.0.0.63 access-list 2 deny 10.17.36.64 0.0.0.63 access-list 2 permit any А на интерфейсе настройки EGRP прописываем: distribute-list 2 out s4/0 Проверим таблицу маршрутизации до и после применения указанных команд. Фильтрацию будем проводить на WAN маршрутизаторах. Как видим все маршруты до сети отдела Производства видны в таблице маршрутизации филиала. Теперь применим указанные изменения: И посмотрим таблицу маршрутов роутера филиала еще раз: Все маршруты в отдел производства исчезли из таблицы маршрутизации. Правда, можно было обойтись и одной командой в списке доступа, но для наглядности решили прописать все адреса. А более короткую версию можете указать в комментариях к этому посту. Кстати, фильтрацию в данном примере мы применили на один интерфейс, но можно применить и на все интерфейсы, на которых включен EIGRP. Для этого команду distribute-list нужно ввести без указания конкретного интерфейса. distribute-list 2 out Следует отметить, что для правильной работы фильтрации в нашей топологии на маршрутизаторе WAN2 нужно прописать те же настройки, что и на WAN1. Фильтрация маршрутов с помощью списка префиксов В Cisco IOS есть еще один инструмент, который позволяет осуществлять фильтрацию маршрутов prefix-list-ы. Может возникнуть вполне логичный вопрос: а чем не угодили списки доступа? Дело в том, что изначально ACL был разработан для фильтрации пакетов, поэтому для фильтрации маршрутов он не совсем подходит по нескольким причинам: списки IP-префиксов позволяют сопоставлять длину префикса, в то время как списки ACL, используемые командой EIGRP distribution-list, нет; Использование расширенных ACL может оказаться громоздким для конфигурирования; Невозможность определения совпадения маски маршрута при использовании стандартных ACL; Работа ACL достаточно медленна, так как они последовательно применяется к каждой записи в маршрутном обновлении; Для начала разберёмся в принципе работы списка префиксов. Списки IP префиксов позволяют сопоставлять два компонента маршрута: адрес сети (номер сети); длину префикса (маску сети); Между списками доступа и списками префиксов есть общие черты. Как и нумерованные списки доступа, списки префиксов могу состоять из одной и более команд, которые вводятся в режиме глобальной конфигурации и нет отдельного режима конфигурации. Как и в именованных списках доступа, в списках префиксов можно указать номер строки. В целом команда выглядит так: ip prefix-list list-name [ seq seq-value ] { deny | permit prefix / prefix-length } [ ge ge-value ] [ le le-value ] Коротко работу списка префиксов можно описать так: Адрес сети маршрута должен быть в пределах, указанных в команде ip prefix-list prefix/prefix-length. Маска подсети маршрута должна соответствовать значениям, указанным в параметрах prefix-length, ge, le. Первый шаг работает также как и списки доступа. Например, написав ip prefix-list TESTLIST 10.0.0.0/8 мы скажем маршрутизатору, что адрес сети должен начинаться с 10. Но списки префиксов всегда проверяют и на соответствие длины маски сети указанным значениям. Ниже приведено пояснение параметров списка IP-префиксов: Параметр prefix-list-а Значение Не указан 10.0.0.0/8; Маска сети должна быть равной длине, указанной в параметре prefix/prefix-length. Все маршруты, которые начинаются с 10. ge и le (больше чем, меньше чем) 10.0.0.0/8 ge 16 le 24 Длина маски должна быть больше 16, но меньше 24. А первый байт должен быть равен 10-ти. le меньше чем 10.0.0.0/8 le 24 Длина маски должна быть от восьми до 24-х включительно. ge больше чем 10.0.0.0/8 ge 24 Длина маски должна быть равна или больше 24 и до 32-х включительно. Учтите, что Cisco требует, чтобы параметры prefix-length, ge и le соответствовали следующему равенству: prefix-length <= ge-value <= le-value (8<=10<=24). А теперь перейдем непосредственно к настройке фильтрации с помощью списка префиксов. Для этого в интерфейсе конфигурации EIGRP прописываем distribute-list prefix prefix-name. Воспользуемся той же топологией и введём некоторые изменения в конфигурацию маршрутизатора WAN1, точно такую же конфигурацию нужно прописать и на WAN2. Итак, наша задача: отфильтровать маршруты в сети 10.17.35.0 и 10.17.36.0; отфильтровать маршруты сетей точка-точка так, чтобы маршрутизаторы в филиалах и на коммутаторах ядра (Core1 и Core2) не видели сети с длиной маски /30 бит. Так как трафик от пользователей в эти сети не идет, следовательно, нет необходимости анонсировать их в сторону пользователей. Для этого создаем prefix-list с названием FILTER-EIGRP и добавим нужные сети: ip prefix-list FILTER-EIGRP seq 5 deny 10.17.35.0/24 ge 25 le 25 ip prefix-list FILTER-EIGRP seq 10 deny 10.17.36.0/24 ge 26 le 26 ip prefix-list FILTER-EIGRP seq 15 deny 0.0.0.0/0 ge 30 le 30 ip prefix-list FILTER-EIGRP seq 20 permit 0.0.0.0/0 le 32 Удалим из конфигурации фильтрацию по спискам доступа и проверим таблицу маршрутизации: А теперь применим наш фильтр и затем еще раз проверим таблицу маршрутизации: Как видим из рисунка, маршрутов в сети 10.17.35.0, 10.17.36.0 и сети для соединений точка-точка между сетевыми устройствами в таблице уже нет. А теперь объясним что мы сказали маршрутизатору: ip prefix-list FILTER-EIGRP seq 5 deny 10.17.35.0/24 ge 25 le 25 Все сети, которые начинаются на 10.17.35 и имеют длину 25 бит запретить. Под это условие попадают сети 10.17.35.0/25 и 10.17.35.128/25. Длине префикса /25 соответствует маска 255.255.255.128. ip prefix-list FILTER-EIGRP seq 10 deny 10.17.36.0/24 ge 26 le 26 Все сети, которые начинаются на 10.17.36 и имеют длину 26 бит запретить. Под это условие попадают сети 10.17.36.0/26 и 10.17.36.64/26. Длине префикса /26 соответствует маска 255.255.255.192. ip prefix-list FILTER-EIGRP seq 15 deny 0.0.0.0/0 ge 30 le 30 Все сети, длина префикса которых равна 30 бит - запретить. В нашей топологии под это условие попадают сети 10.1.1.0/30, 10.1.1.4/30, 10.1.2.0/30, 10.1.2.4/30 все сети которые начинаются на 10.9.2. ip prefix-list FILTER-EIGRP seq 20 permit 0.0.0.0/0 le 32 Все сети, префикс которых имеет длину до 32-х бит разрешить. Под это условие попадают все остальные сети топологии. Фильтрация маршрутов с помощью route-map Далее пойдет речь о картах маршрутов или route-map-ах. В целом, в работе сети route-map-ы используются довольно часто. Этот достаточно гибкий инструмент дает возможность сетевому инженеру тонко настраивать маршрутизацию в корпоративной сети. Именно поэтому следует хорошо изучить принцип их работы, чем мы и займемся сейчас. А дальше покажем, как фильтровать маршруты с помощью этого инструмента. Route-map применяет логику похожую на логику if, else, then в языках программирования. Один route-map может включать в себя несколько команд route-map и маршрутизатор выполняет эти команды поочередно согласно номеру строки, который система добавляет автоматически, если не был указан пользователем. После того как, система нашла соответствие маршрута условию и определила разрешить анонсирование или нет, маршрутизатор прекращает выполнение команды route-map для данного маршрута, даже если дальше указано другое условие. Каждый route-map включает в себя критерии соответствия, который задается командой match. Синтаксис route-map выглядит следующим образом: route-map route-map-name {permit | deny} seq sequence-number match (1st set of criteria) Как и в случае с ACL или prefix-list, в route-map тоже можно указать порядковый номер строки для добавления или удаления соответствующего правила. В команде match можно указать ACL или prefix-list. Но тут может возникнуть недоразумение. А связано оно с тем, как обрабатываются route-map Cisco IOS. Дело в том, что решение о запрете или допуске маршрута основано на команде deny или permit команды route-map. Другими словами, маршрут будет обработан route-map-ом если в ACL или prefix-list-е данный маршрут сопровождается командой permit. Иначе, route-map проигнорирует данную запись и перейдет к сравнению со следующим условием route-map. Поясним на примере: access-list 101 permit 10.17.37.0 0.0.0.255 access-list 102 deny 10.17.35.0 0.0.0.127 route-map Test permit 5 match ip-address 101 route-map Test deny 10 match ip-address 102 В данном случае маршрут 10.17.37.0 будет обработан route-map 5, а маршрут 10.17.35.0 будет проигнорирован, так как в списке доступа под номером 102 он запрещён и не попадёт под критерий соответствия route-map. Приведём ключевые пункты работы route-map при фильтрации маршрутов: Команда route-map с опцией permit либо разрешит анонсирование маршрута, если он соответствует критерию, указанному в команде match, либо пропустит для обработки следующим пунктом. Команда route-map с опцией deny либо запретит анонсирование маршрута, если он соответствует критерию, указанному в команде match, либо пропустит для обработки следующим пунктом. Если команда match основывается на ACL или prefix-list-ы, а в ACL или prefix-list-ах указанный маршрут прописан с действием deny, то маршрут не будет отфильтрован. Это будет означать, что маршрут не соответствует критерию, указанному в команде match и его нужно пропустить для обработки следующим пунктом. В конце каждого route-map существует явный запрет; чтобы пропустить все маршруты, которые не попали под критерии, нужно указать команду route-map с действием permit без опции match. Для того чтобы задействовать route-map в фильтрации маршрутов используется та же команда distribute-list с опцией route-map route-map-name. Внесём некоторые изменения в конфигурацию маршрутизатора WAN1. Точно такие же изменения нужно будет сделать на WAN2. Используем те же префикс-листы, что и в предыдущем примере с незначительными редактированиями: ip prefix-list MANUFACTURING seq 5 permit 10.17.35.0/24 ge 25 le 25 ip prefix-list MANUFACTURING seq 10 permit 10.17.36.0/24 ge 26 le 26 ip prefix-list POINT-TO-POINT seq 5 permit 0.0.0.0/0 ge 30 le 30 После внесения изменений маршрутов в сеть производства, а также в сети точка-точка таблице маршрутизации на роутерах филиалов не окажется. Также на Core1 не будет маршрута до сетей point-to-point: Мы рассмотрели фильтрацию маршрутов в EIGRP тремя способами. Хорошим тоном считается использование списка префиксов, так как они заточены именно под эти цели. А использование карты маршрутизации или route-map-ов неэффективно из-за большего количества команд для конфигурации. В следующем материале рассмотрим фильтрацию в домене OSPF.
img
При изучении принципов написания программного кода вы, вероятно, встречались с термином AJAX и задавались вопросом, что же он значит. Что это – язык программирования, платформа или приложение? На самом деле ничего из перечисленного, но к концу прочтения этой статьи вы будете знать, что же такое AJAX (Asynchronous Javascript and XML - асинхронные сценарии JavaScript и XML). История AJAX До конца 1990-х годов большинство веб-сайтов могли выдавать в качестве результата только полные веб-страницы при посещении страницы на сайте. Иначе говоря, для того, чтобы перезагрузить какие-либо отдельные данные, вам необходимо было перезагрузить всю страницу. Это был не самый эффективный способ предоставления информации пользователям, и, соответственно, не очень хорошо сказывалось на впечатлениях пользователей от взаимодействия с сайтом. Также это увеличивало нагрузку на серверы и пропускную способность, необходимую для обслуживания данных. В 1996 году Microsoft представила тег iframe для Internet Explorer, который позволял браузеру асинхронно извлекать данные в фоновом режиме. Это был шаг в верном направлении на пути к современным веб-приложения. В 2004 году Google добавила в Gmail функцию, позволяющую получать данные в фоновом режиме, а в 2005 году они сделали то же самое и для Google Maps. Технологии Google и Microsoft позволяли разработчикам получать данные с веб-сервера с помощью JavaScript без необходимости перезагружать страницу. В 2005 году Джесси Джеймсон Гарретт в своей статье (о том, как Google добились такого результата) назвал эту технологию AJAX. Эта технология быстро стала одним из самых популярных способов создания веб-приложений. А теперь, когда вы узнали немного из истории AJAX, давайте посмотрим, как это работает. Как работает AJAX? Что делает работу AJAX возможной, так это встроенный в веб-браузер объект XMLHttpRequests (XHR). Этот объект поддерживают все современные браузеры, включая: Chrome Firefox IE7+ Safari Opera Большинство библиотек JavaScript, которые используют AJAX, помещают этот объект в пользовательский код для того, чтобы упростить его использование разработчиками, но мы рассмотрим, как AJAX работает в обычном JavaScript. Первый шаг – создать переменную, которая будет создавать для вас экземпляр объекта XMLHttpReaquests в JavaScript. Ниже приведен пример: const request = new XMLHttpRequest(); Поскольку мы хотим использовать эти данные в дальнейшем, например, хотим распечатать их на веб-странице, то мы добавим к этому запросу получатель запроса, который сообщит нам, когда наш запрос закончит обрабатываться и получит нужные данные. Как можно понять из самого термина, запросы AJAX выполняются асинхронно. Это значит, что код JavaScript продолжает работать после отправки запроса и не ждет ответа. Прикрепив получатель запросов, мы можем перехватить ответ, когда он будет готов. Сделаем мы это вот так: function requestListener() { console.log(this.responseText); } request.addEventListener("load", requestListener); Выше у нас есть функция, которая выводит ответ на консоль JavaScript, которую мы можем получить из атрибута responseText объекта XMLHttpRequests. Затем мы присоединяем эту функцию к событию load нашего запроса. Следующий шаг – используем этот объект для отправки запроса к серверу с помощью метода open объекта XMLHttpRequests. Метод open принимает два параметра. Первый параметр – это используемый метод запроса. Ниже приведены несколько наиболее распространенных методов: GET: этот метод используется для извлечения данных и является наиболее распространенным. POST: этот метод отправляет данные запрошенному ресурсу и чаще всего используется для создания новых записей или для входа в систему. PUT: этот метод заменяет текущие представления данных измененными, которые были отправлены в запросе. PATCH: этот метод обычно используется для обновления части данных в запрошенном ресурсе. DELETE: этот метод используется для удаления определенного ресурса. Второй параметр, который передается методу open, - это запрашиваемый ресурс. Мы будем использовать страницу с веб-сайта example.org и использовать запрос GET для простого получения данных. Вот так это будет выглядеть: request.open("GET", "http://www.example.org/example.txt"); Последний шаг – фактическая отправка запроса на удаленный ресурс с помощью метода send объекта XMLHttpRequests. Ниже приведен пример: request.send(); Если мы используем метод POST, PUT или какой-либо другой метод, который обновляет ресурс, то этот метод мы вызываем с параметром, содержащем данные, которые мы отправляем: request.send(OUR_DATA_VARIABLE) В нашем случае мы только извлекаем данные, поэтому, как только мы выполним этот код, на консоли нашего веб-браузера выведется содержимое http://example.org/example.txt. Данный пример помогает объяснить то, как работает AJAX, но на самом деле технология AJAX имеет куда более продвинутые функциональные возможности. Для чего нужен AJAX? Что вы должны были вынести из приведенного выше примера, так это то, что все функции кода загружаются на одной странице. Действительно, сначала загрузится веб-страница с нашим кодом JavaScript, затем он выполнится, и после он распечатает результаты запроса. С таким же успехом можно было прикрепить приведенный выше код к функции, которая выполняется при нажатии кнопки. Это бы означало, что каждый раз при нажатии кнопки, будет выполняться код, отправляться запрос, и результаты будут выводиться на консоль без загрузки новой страницы. И эта магическая технология изменила подход к веб-разработке. С появлением AJAX большая часть веб-разработки переместилась на внешний интерфейс приложения – часть, которая работает в браузере. Вы наблюдаете то, как работает AJAX ежедневно и даже не подозреваете об этом. Когда вы заходите на современный веб-сайт, перед вами появляется форма. Вы вводите свои учетные данные и нажимаете кнопку «Войти». Индикатор загрузки может вращаться в течение нескольких минут, но если вы обратите внимание, то заметите, что страница на самом деле никогда не перезагружается. Все, что вы сделали, это просто отправили свое имя пользователя и пароль на сервер с помощью AJAX. Индикатор загрузки нужен только для отвода глаз, пока запрос выполняется, независимо от того, ввели ли вы верные учетные данные или нет. Если ваши учетные данные верны, то ваша домашняя страница загружается, скорее всего, из другого запроса AJAX. Большинство запросов AJAX в JavaScript не загружают целые веб-страницы, как в нашем примере. Данные отправляются и извлекаются в формате JSON, для представления данных используется текстовый формат, а для форматирования этих данных в формате HTML и их печати на странице используется дополнительный код JavaScript. Например, данные, которые отправляются для входа на веб-сайт, в формате JSON будут выглядеть так: { username: "MyUserName", password: "MyPassword" } Как только учетные данные будут проверены, файл JSON, содержащий минимальный объем данных для отображения панели инструментов, будет отправлен обратно в браузер. AJAX в сочетании с JSON не только наделяет современные веб-страницы способностью быстро реагировать на действия пользователей, но и экономит пропускную способность, отправляя только необходимые данные для создания веб-страницы.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59