По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Друг, начнем с цитаты: Redis – это высокопроизводительная БД с открытым исходным кодом (лицензия BSD), которая хранит данные в памяти, доступ к которым осуществляется по ключу доступа. Так же Редис это кэш и брокер сообщений. Надо признаться, определение не дает точного понимания, что же такое Redis. Если это так круто, то зачем вообще нужны другие БД? На самом деле, Redis правильнее всего использовать в определенных кейсах, само собой, зная про подводные камни – именно об этом и поговорим. Про установку Redis в CentOS 8 мы рассказываем в этой статье. Redis как база данных Говорим про случай, когда Redis выступает в роли базы данных: Пару слов про ограничения такой модели: Размер БД ограничен доступной памятью Шардинг (техника масштабирования) ведет к увеличению задержки Это NoSQL - никакого языка SQL LUA скриптинг в качестве альтернативы Это нереляционная СУБД! Нет сегментации на пользователей или группы пользователей. Отсутствует контроль доступа Доступ по общему паролю. Что скажут ваши безопасники? Теперь про преимущества модели: Скорость Хранение данных в памяти делает быстрее работу с ними Скрипты на LUA Выполнение прямо в памяти, опять же, ускоряет работу Удобные форматы запросов/данных Geospatial – геоданные (высота, ширина, долгота и так далее) Hyperloglog – статистическе алгоритмы Hash – если коротко, то хэш в Redis делают между строковыми полями и их значениями Алгоритмы устаревания данных Примеры использования Представь, у нас есть приложение, где пользователям необходимо авторизоваться, чтобы выполнять какие – либо действия внутри приложения. Каждый раз, когда мы обновляем авторизационные данные клиента, мы хотим их получать для последующего контроля. Мы могли бы отправлять лист авторизационных параметров (с некими номерами авторизаций, сроком действия с соответствующими подписями), чтобы каждое действие внутри приложения, сопровождалось авторизацонной транзакцией из листа, который мы прислали клиенту. С точки зрения безопасности, в этом подходе нет ничего плохого, если мы храним на своей стороне данные в безопасности и используем Javascript Object Signing and Encryption (JOSE), например. Но проблема появится в том случае, когда наш пользователь имеет более одной авторизации внутри приложения – такие схемы плохо поддаются масштабированию. А что если вместо отправки листа авторизационных параметров, мы сохраним его у себя, а пользователю отправим некий токен, который они должны отправлять для авторизации? Далее, по этому токену, мы легко сможем найти авторизации юзера. Это делает систему гораздо масштабируемой. Redis, такой Redis. Итого, для указанной выше схемы, мы хотим: Скорость Мы не хотим, чтобы пользователь долго ожидал авторизации Масштабирумость системы Сопоставление ключа (токена) с авторизациями юзера А вот, что на эти вызовы может ответить Redis: Redis хранит данные в памяти – он быстрый. Redis можно кластеризовать через компонент Sentinel. Масштабируемость? Пожалуйста. В Redis куча вариантов хранения списков. Самый простой будет являться набором данных. В качестве бонуса от Redis, вы получите механизм экспайринга токенов (устаревания). Все будет работать. Redis как кэш! Redis почти заменил memcached в современных приложениях. Его фичи делают супер – удобным кэширование данных. Ограничения: Значения не могут превышать 512 МБ Отсутствует искусственный интеллект, который будет очищать ваше хранилище данных Профит: Совместное использование кэша разными сервисами по сети Удобные фичи, такие как LUA скриптинг, который упрощает работы с кэшом Временные ограничения для данных Еще один кейс Предположим, перед нами такая задача: приложение, отображает пользователям данные с определенными значениями, которые можно сортировать по множеству признаков. Все наши данные хранятся в БД (например, MySQL) и показывать отсортированные данные нужно часто. Дергать БД каждый раз весьма тяжело и ресурсозатратно, а значит, нам нужно кэшировать данные в отсортированном порядке. Окей, кейс понятен. Рэдис, что скажешь на такие требования? Кэш должен хранить сортированные наборы данных Нам нужно вытаскивать наборы данных внутри наборов данных (для пагинации, например, то есть для переключения между страницами) Это должно быть быстрее, чем пересчет данных с нуля Что скажет Redis: Хранить наборы данных - легко Может вытаскивать сабсеты из наборов - легко Конечно быстрее. Ведь данные хранятся в памяти Redis как брокер сообщений Редис может выступать в качестве брокера сообщений. Схема обычная и весьма базовая - publish–subscribe (pub/sub), или как можно перевести на русский язык «Издатель - подписчик». Как и раньше, давайте обсудим плюсы и минусы, хотя их тут и не так много. Минусы: Только тривиальная модель pub/sub Отсутствие очередей сообщений Ну а плюсы, как обычно для Редиса – скорость и стабильность. Кейс напоследок Простой пример – коллаборация сотрудников одной компании. Предположим, у них есть приложение, где они работают над общими задачами. Каждый пользователь делает свой набор действий, о котором другие пользователи должны знать. А так же, юзеры могут иметь разные экземпляры приложений – десктоп, мобильный или что то еще. Требования по этой задаче: Низкая задержка Мы не хотим иметь трудности в процессе совместной работы сотрудников Стабильная работа и непрерывность Масштабирование Кампания растет и развивается Редис, твой выход! Низкая задержка – да, говорили об этом ранее Стабильность – минимальное количество точек отказа в Redis Стабильная работа и непрерывность Масштабирование – сделаем кластер, нет проблем. Выводы Redis - крутая штука, которая позволяет объединять сервисы и следовать 12 принципам приложений. Для приложений, в которых нагрузка ориентирована на быстрое изменение наборов данных и высокая безопасность данных не имеет завышенных требований – Redis прекрасный выбор. Если данные нуждаются в усиленной защите, Редис подойдет в меньшей степени, лучше посмотрите в сторону MongoDB или Elasticsearch.
img
Привет, друг! Мы подготовили удобную инструкцию по установке и настройке SFTP-сервера Linux. Что такое SFTP? SFTP - это безопасный протокол передачи файлов - «Secure SHell» File Transfer Protocol. То есть это версия FTP, которая для безопасности поверх использует SSH. FTP делает то же самое, но без шифрования, поэтому использовать SFTP предпочтительнее. Установка SFTP-сервера на Linux Чтобы выполнить эти шаги, вам нужно иметь права sudo. SFTP прост в установке, но сначала необходимо установить OpenSSH со стороны сервера и SSH-пакет со стороны клиента. Чтобы установить OpenSSH на сервер, используйте следующую команду: sudo apt install openssh-server [Ubuntu/Debian] sudo yum –y install openssh-server openssh-clients [CentOS/RHEL] Вам также понадобится SSH на компьютере, с которого вы хотите получать доступ к серверу SFTP. sudo apt install ssh [Ubuntu/Debian] Теперь все готово для настройки SFTP. Этап 1: Создание групп, пользователей, каталогов Для безопасного использования SFTP, лучше всего создать группы и пользователей, которые будут использовать только эту службу. Создадим группу с названием sftpg, при помощи комыды groupadd: sudo groupadd sftpg Далее создадим пользователя seenisftp, и добавим его в группу. sudo useradd -g sftpg seenisftp sudo passwd seenisftp В команде useradd параметр -g указывает группе, какого пользователя нужно добавить. Предположим, что вы хотите использовать каталог /data/ в качестве корневого для sftp, а /data/USERNAME - для каждого пользователя. Поэтому, когда пользователи входят через sftp, они должны будут оказаться в каталоге /data/USERNAME. Также создадим ограничение при котором пользователи смогут читать файлы из этого каталога, но загружать их смогут только в каталог uploads. Cоздадим каталоги и изменим их доступ: sudo mkdir -p /data/seenisftp/upload sudo chown -R root.sftpg /data/seenisftp sudo chown -R seenisftp.sftpg /data/seenisftp/upload Важно: убедитесь, что владелец /data/USERNAME и есть root, это обязательно для изменения корневого каталога в SFTP Этап 2: Настройка sshd_config Далее нужно настроить сервер так, чтобы когда пользователь, из группы sftpg, входил в систему, он попадал в sftp вместо обычной оболочки, в которую попадает через ssh. Добавьте следующий фрагмент кода в файл /etc/ssh/sshd_config: Match Group sftpg ChrootDirectory /data/%u ForceCommand internal-sftp ChrootDirectory позволяет создать необходимый каталог в качестве корневого узла (/ каталог) в дереве каталогов. Вошедший в систему пользователь не сможет увидеть ничего выше этого каталога и это не даст ему получить доступ к файлам других пользователей. %u - это escape код для заполнения его текущим именем пользователяm, во время входа в систему. Этап 3: Перезагрузите службу Чтобы выполнить внесенные в sshd_config изменения, перезапустите службу: sudo systemctl restart sshd Доступ к SFTP через командную строку Linux Заходите в SFTP также как в SSH: sftp seenisftp@merionet.ru Примеры команд SFTP Синтаксис команд SFTP: COMMAND [SOURCE] [DESTINATION] Параметрами могут быть либо локальные, либо удаленные системные пути. GET - загрузка содержимого с удаленного сервера в локальную систему. GET poster.img ~/Pictures PUT - загрузка содержимого из локальной системы в удалённую. PUT ~/Pictures/picture2.jpg uploads/ RM – предназначен для удаления файлов в удалённой системе. RM uploads/picture3.jpg
img
Для устранения неполадок мы должны пройти путь от нижней части модели OSI к верхней. Для этого нам придется начать с протоколов, которые используются для коммутации. Будем думать о VLAN, транкинге, об агрегировании каналов и связующем дерева. Мы рассмотрим различные протоколы и различные сценарии, где "что-то работает" не так. Мы решим эти проблемы с помощью комбинации команд show и debug. Первая остановка ... проблемы с интерфейсом! Следующие статьи этого цикла: Траблшутинг STP (Spanning tree protocol) Устранение неисправностей EtherChannel Case #1 В этом примере мы имеем коммутатор в центре и два компьютера, которые подключены к нему. Каждый компьютер имеет свой IP-адрес, и они должны иметь возможность пинговать друг друга. Мы будем считать, что компьютеры настроены правильно и там нет никаких проблем. Интерфейс FastEthernet 0/1 находится в состоянии down. Это может указывать на проблему уровня 1, такую как неисправный кабель, неправильный кабель (кроссовер вместо прямого) или, возможно, нерабочая сетевая карта. Обратите внимание, что этот интерфейс работает в полудуплексном режиме. Если повезет, вы можете получить дуплексное сообщение через CDP, которое сообщит вам, что существует дуплексное несоответствие. Если вам не повезло, возможно, из-за этого ваш интерфейс переходит в состояние down. Имейте в виду, что гигабитный интерфейс не поддерживает halfduplex. SwitchA(config)#interface fa0/1 SwitchA(config-if)#duplex auto Изменим настройки интерфейса на duplex auto, чтобы коммутатор мог само настроиться. Может быть, нам повезет...но не в этот раз, пинг не работает. Интерфейс fa0 / 3, подключенный к хосту B, также не работает. После проверки кабелей и разъемов мы можем проверить ошибки дуплекса и скорости. Дуплекс включен в режим auto, так что это не является проблемой. Скорость была установлена на 10 Мбит, однако в то время как этот интерфейс является каналом Fast Ethernet (100 Мбит). SwitchA(config)#interface fa0/3 SwitchA(config-if)#speed auto Давайте переключим скорость на авто и посмотрим, что произойдет. Похоже, что несоответствие скорости привело к тому, что интерфейс перешел в состояние down. Изменение его на auto-speed возвращает интерфейс в состояние up. Это то, что мы искали. Интерфейсы, с которыми мы работаем, оба показывают состояние up/up. По крайней мере, теперь мы знаем, что нет никаких ошибок в кабеле, скорости или дуплексе. Теперь наш пинг проходит. Первый урок усвоен: Проверьте свои интерфейсы и посмотрите, отображаются ли они как up/up. Case #2 Та же топология, но здесь другая проблема. Хост A не может пропинговать хост B. Мы начнем с проверки интерфейсов: Состояние интерфейса FastEthernet0/3 выглядит нормально, но что-то не так с интерфейсом FastEthernet 0/1. Давайте изучим его подробнее: Так так, мы видим сообщение err-disabled. Это уже дает нам понять, что проблема, где здесь (по крайней мере, это означает, что мы на что-то наткнулись). Используйте команду show interfaces status err-disabled, чтобы узнать, почему интерфейс перешел в режим error-disabled. Это сообщит нам, что причина-безопасность порта. Мы можем посмотреть на конфигурацию безопасности порта, и мы видим, что только 1 MAC-адрес разрешен. Последний MAC-адрес, который виден на интерфейсе - 000с.2928.5c6c. Выше мы видим, что интерфейс был настроен для обеспечения безопасности на другой MAC-адрес. Именно по этой причине порт перешел в режим err-disabled. SwitchA(config)#interface fa0/1 SwitchA(config-if)#no switchport port-security Давайте уберем port security, чтобы решить эту проблему. SwitchA(config)#interface fa0/1 SwitchA(config-if)#shutdown SwitchA(config-if)#no shutdown Главное, что вы не должны забыть сделать - это после очистки настройки от port security ваш интерфейс все еще находится в режиме err-disabled. Вам нужно выполнить команды отключения и включения порта (shutdown и no shutdown), чтобы он снова заработал! Консоль сообщает нам, что интерфейс теперь включен. Как мы видим эхо-запрос проходит между компьютерами. Проблема решена! Урок 2 усвоен: проверьте, находится ли интерфейс в состоянии err-disabled, и если да, то: а) проверьте, почему это произошло, и Б) решите проблему. Case #3 Давайте продолжим с другой проблемой. Та же топология, но опять проблема. Эти два компьютера не "видят" друг друга. Интерфейсы выглядят хорошо, никаких ошибок здесь нет. И так мы видим, что port security отключена на этом коммутаторе. На данный момент мы, по крайней мере, знаем, что нет никаких проблем с интерфейсом и port security не фильтрует никакие MAC-адреса. В данный момент это хорошая идея, чтобы проверить информацию о VLAN. Вы можете использовать команду show vlan, чтобы быстро проверить, к какой VLAN принадлежат интерфейсы. Как вы можете видеть, наши интерфейсы находятся не в одной и той же VLAN. SwitchA(config)#interface fa0/3 SwitchA(config-if)#switchport access vlan 1 Мы переместим интерфейс fa0/3 обратно в VLAN 1. Теперь оба компьютера находятся в одной VLAN. Проблема решена! Урок 3 усвоен: убедитесь, что интерфейсы находится в нужной VLAN. Case #4 Пришло время для другой проблемы! Наши два компьютера не пингуюся между собой. Вы теперь знаете, как выглядит неудачный пинг, поэтому скрин не будет публиковаться снова. Интерфейсы не показывают никаких ошибок. Мы изучим настройку VLAN. Вы видите, что FastEthernet 0/1 находится в VLAN 10, но мы нигде не видим FastEthernet 0/3. Вот возможные причины: Что-то не так с интерфейсом. Мы проверили и убедились, что это не так, потому что он показывает состояние up/up, поэтому он кажется активным. Интерфейс не в режиме access port, а в режиме trunk. Быстрый взгляд на информацию о коммутаторе показывает нам, что нам нужно знать. Мы убедились, что интерфейс fa0/3 находится в режиме trunk, а native VLAN - 1. Это означает, что всякий раз, когда хост B отправляет трафик и не использует маркировку 802.1 Q, наш трафик заканчивается в VLAN 1. SwitchA(config)#interface fa0/3 SwitchA(config-if)#switchport mode access SwitchA(config-if)#switchport access vlan 10 Мы включим fa0/3 в режим доступа и убедимся, что он находится в VLAN 10. Оба интерфейса теперь активны в VLAN 10. Возможно, лучше проверить информацию на коммутаторе. Теперь я могу отправить пинг с хоста а на хост Б...проблема решена! Урок 4 усвоен: убедитесь, что интерфейс находится в нужном режиме (доступ или магистральный режим). Case #5 Те же два компьютера, тот же коммутатор. Однако этот сценарий немного интереснее. Компьютеры не могут пинговать друг друга, поэтому давайте пройдемся по нашему списку "возможных" ошибок: Интерфейсы выглядят хорошо, up/up-это очень хорошо. Оба интерфейса находятся в VLAN 10, так что это тоже хорошо. Просто чтобы быть уверенным...там нет port security. Это очень интересная ситуация. Интерфейсы работают (в состоянии up/up), мы находимся в одной VLAN, и нет никакой защиты портов. Что еще может быть причиной "перекрытия" трафика? Ага! Это может быть не то, о чем нам может прийти в голову, но мы же можем использовать VACLs (VLAN access-list), чтобы разрешить или запретить трафик в пределах VLAN. Если вы устраняете неполадки коммутаторов, то необходимо проверить эту настройку, если все остальное кажется вам нормальным. В этом случае есть VACL, подключенный к VLAN 10, давайте проверим его. Есть два порядковых номера ... 10 и 20. Порядковый номер 10 соответствует access-list 1, и его задача состоит в том, чтобы отбросить трафик. Давайте посмотрим, что это за access-list 1: Не смущайтесь из-за заявления о разрешении здесь. Использование оператора permit в access-list означает, что он будет "соответствовать" подсети 192.168.1.0/24. Наши два компьютера используют IP-адреса из этого диапазона. Если он соответствует этому access-list, то VLAN access-map отбросит трафик. SwitchA(config)# vlan access-map BLOCKSTUFF 10 SwitchA(config-access-map)# action forward Давайте изменим действие на "forward" и посмотрим, решит ли оно нашу проблему. Ну вот, все работает. Урок 5 усвоен: если все остальное кажется нормальным, убедитесь, что нет никакого VACL! Case #6 Давайте продолжим урок 6 с другой топологией. Теперь вы знаете, что нам нужно сначала проверить интерфейсы, а затем VLAN. В этом примере у нас есть те же два компьютера, но теперь у нас есть два коммутатора. Пинг от Хост А к Хосту Б не работает, так с чего начнем поиск? Сначала мы проверим интерфейс fa0/1 на коммутаторе 1. Интерфейс запущен и работает, это switchport, назначенный для VLAN 10. Пока все выглядит неплохо. Port security не включен, так что нам не нужно беспокоиться об этом. Давайте проверим то же самое на коммутаторе 2. Интерфейс работает, и он был назначен на VLAN 10. В данный момент мы видим, что интерфейсы, "смотрящие" к компьютерам выглядят хорошо. В этот момент Вы могли бы сделать две вещи: Подключите другой компьютер к коммутатору 1 и назначьте его во VLAN 10. Посмотрите, можно ли общаться между компьютерами во VLAN 10, когда они подключены к одному коммутатору. Сделайте то же самое на коммутаторе 2. Проверьте интерфейсы между коммутатором 1 и коммутатором 2. Мы сконцентрируем свое внимание на интерфейсах между коммутатором 1 и коммутатором 2, потому что там много чего может пойти не так! Интерфейсы не показывают никаких проблем, время проверить информацию о switchport. Коммутатор A находится в магистральном режиме и использует инкапсуляцию ISL. Коммутатор B также находится в магистральном режиме, но использует инкапсуляцию 802.1Q. Имейте в виду, что (в зависимости от модели коммутатора) административный режим по умолчанию может быть dynamic auto. Два интерфейса, которые оба работают в dynamic auto режиме, станут портом доступа (access). Лучше всего самостоятельно переключить интерфейс в магистральный режим. В нашем случае оба интерфейса магистральные, так что это хорошо, но у нас есть несоответствие протокола инкапсуляции. SwitchA(config)#interface fa0/15 SwitchA(config-if)#switchport trunk encapsulation dot1q Мы изменим тип инкапсуляции, чтобы оба коммутатора использовали протокол 802.1Q. Проблема решена! И опять все работает. Урок 6 усвоен: убедитесь, что при настройке магистралей используется один и тот же протокол инкапсуляции. Case #7 Вот опять тот же сценарий. Сейчас рассмотрим еще кое-что, что важно проверить при решении проблем trunk. Предположим, мы проверили и убедились, что следующие элементы не вызывают никаких проблем: Интерфейсы (скорость/дуплекс). Безопасность портов. Конфигурация Switchport (назначение VLAN, интерфейс, настроенный в режиме доступа). К сожалению, эхо-запрос между компьютерами все еще не проходит. Давайте взглянем на интерфейсы fa0/15 на коммутаторах: Проверим, что оба интерфейса находятся в магистральном режиме и что мы используем один и тот же протокол инкапсуляции (802.1 Q). Здесь нет никаких проблем. Что-нибудь еще, что может пойти не так с этой магистральной связью? Да! Магистраль может быть работоспособной, но это не означает, что все VLAN разрешены по магистральному каналу связи. В приведенном выше примере вы видите, что разрешена только VLAN 20. SwitchA(config)#interface fa0/15 SwitchA(config-if)#switchport trunk allowed vlan all SwitchB(config)#interface fa0/15 SwitchB(config-if)#switchport trunk allowed vlan all Давайте позволим всем VLAN пройти магистраль. По магистральной линии может передаваться трафик VLAN 10 между двумя коммутаторами. В результате пинг идет между компьютерами....еще одна проблема решена! Урок 7 усвоен: всегда проверяйте, разрешает ли магистраль все VLAN или нет. Case #8 Вот вам новый сценарий. Два компьютера, имеют разные IP-адреса. Коммутатор - это многоуровневый коммутатор. Поскольку компьютеры находятся в разных подсетях, нам приходится беспокоиться о маршрутизации. Мы видим, что два компьютера не могут связаться друг с другом. С чего мы должны начать устранение неполадок? Это статья не о настройке windows, но нам нужно обратить внимание на наши хосты. Поскольку компьютеры должны "выйти из своей собственной подсети", мы должны проверить, что IP-адрес шлюза по умолчанию в порядке и доступен. Хост А может достичь шлюза по умолчанию, поэтому мы, по крайней мере, знаем, что хост А работает нормально. Вот IP-конфигурация хоста B. Давайте проверим доступность шлюза по умолчанию! Здесь тоже все работает. Мы знаем, что компьютеры рабочие, потому что они знают, как выйти из своей собственной подсети, и шлюз по умолчанию доступен. Пора проверить коммутатор. Как мы видим, что хост А находится в VLAN 10 и хост B находится в VLAN 20. Мы не проверяли, включены ли интерфейсы, потому что мы можем пинговать IP-адреса шлюза по умолчанию. Это говорит о том, что fa0/1 и fa0/3 работают, но мы не знаем, к какой VLAN они принадлежат. Были сконфигурированы два интерфейса SVI. Это IP-адреса, которые компьютеры используют в качестве шлюза по умолчанию. Так почему же наш коммутатор не маршрутизирует трафик? Наличие IP-адресов на интерфейсах не означает автоматическую маршрутизацию трафика. Для этого нам потребуется таблица маршрутизации. Этот коммутатор не имеет SwitchA(config)#ip routing Давайте включим маршрутизацию на этом коммутаторе. Давайте сделаем так, чтобы это выглядело получше. Теперь коммутатор знает, куда перенаправлять IP-пакеты на этом коммутаторе. Вот так...теперь два компьютера могут достучаться друг до друга! Проблема решена! Урок 8 усвоен: если вы используете многоуровневый коммутатор для маршрутизации interVLAN, убедитесь, что интерфейсы SVI настроены правильно и что маршрутизация включена. Мы рассмотрели наиболее распространенные ошибки, которые могут произойти с нашими интерфейсами, VLAN, транками и проблемами маршрутизации при использовании многоуровневых коммутаторов. В следующей статье мы рассмотрим связующее дерево. Spanning-tree-довольно надежный протокол, но есть ряд вещей, которые могут пойти не так, как, вы ожидаете. Кроме того, из-за неправильной настройки могут произойти некоторые странные вещи...давайте рассмотрим траблшутинг STP в следующей статье.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59