Step 3 (S-44768)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/14826/step/3

Step 3 (S-44768) 1.png

[00:00 - 00:15] того чтобы организовать такого рода архитектуры нам нужно научиться настраивать проксирование запросов то есть хочется сделать так чтобы front end сервер передавал запрос на 1 из показателей


[00:15 - 00:30] давайте посмотрим как настраивается проксирование сервере а вот примерно будет небольшой пример конфига предназначенной для


Step 3 (S-44768) 2.png

[00:30 - 00:48] проксирование запрос здесь мы видим 3 локейшена а давайте начнем с 3 а 3 акишин мужа и что мы рассматривали в на прошлом уроке а это локейшен составляет с по регулярному выражению с урлами


[00:48 - 01:06] регулярное выражение означает что угол это угол какому то файлу которого есть расширение то есть точка несколько символов в конце урла а до этого акишина задана директива руд


[01:06 - 01:23] которая говорит что такого рода урлы нужно пытаться давать с диска из директории это понятно это 1 сценарий работы фронта сервера если сервер понимает что идет запрос за статическим файлам он отдает его с диска


[01:23 - 01:38] что делать если а нам нужно передать на бы консервов данном конфиге все углы которые не подходят по 32 локейшн попадают в 1


[01:38 - 01:56] 1 локейшен перехватывает все остальные углы данном случае мы без расширения которые не начинаются с partner а мы видим что в 1 локейшене в места директиву то ли дело с указанной директивы proxypass


[01:56 - 02:14] значение proxypass некоторое строка которая похожа на углу в данном случае директива proxypass означает что вместо того чтобы отдавать а пытаться найти файл на диске нужно передать запрос на указанный


[02:14 - 02:30] а на самом деле у директивы o proxypass могут быть разные значения а вот в данном случае в 1 локейшене указано имя австрийца то есть пока это не доменное имя


[02:30 - 02:48] а имя австрийца как энгельс понимает потому что во 1 здесь нет точка в доменном имени а во 2 у нас в конфиге на следующем слайде мы покажем сконфигурирован upstream так называемом с именем к


[02:48 - 03:05] а то есть энгельс видя такую директиву proxypass это такое а двоеточие 2 сша и апстрима понимает что данный запрос нужно передать по протоколу http а


[03:05 - 03:19] австрии проблемы чуть попозже а proxypass можно указывать явно от во 2 локейшене указано настоящий а в данном случае


[03:19 - 03:38] возьмет путь к файлу ну например наш партнер слэш slash 1 а приклеит данный путь к уровню которой написано в proxypass и получит новый полный


[03:38 - 03:57] документ а и передаст запрос запрос в данном случае выступает как веб клиент то есть он создает и запрос и отправляет а на указанный


[03:57 - 04:11] при этом а проксирование подразумевает то что сохраняются заголовки то есть а заголовки которые прошли коеф сервером день они будут переданы а на проксирует серверов


[04:11 - 04:29] то есть на быка а те заголовки которые пришли с backend они вернутся обратно клиенту таким образом работает проксирование тем не менее а может потребоваться добавить какие то дополнительные заголовки


[04:29 - 04:44] 2 наиболее частых случаях наиболее часто используемых заголовка которые нужно добавить это в заголовке хвост и царя а зачем нужен заголовок post new post нужен


[04:44 - 05:00] по той причине что может находиться в общем то на другом домене то есть мы видим что у нас допустим наш сайт обслуживает с каким то доменом сайт точка com а мы передаем


[05:00 - 05:15] запрос домен парк если а на сервер нашего партнера придет запрос о с изначально с изначальным заголовком хоста изначально у нас был


[05:15 - 05:32] вот такой то портал его не сможет обработать потому что он ничего не знают про данный домен у него нет виртуалхоста для данного домена поэтому


[05:32 - 05:51] с помощью директивы с архитектор мы подменяем а хост здесь данная директива она сохраняет заголовок host это нужно для нашего быка


[05:51 - 06:08] а вместо место вот этой переменной можно было бы написать переменную прокси хост это означает что при проксировании нужно взять а


[06:08 - 06:25] доменное имя которая стояла в имени хоста основная мысль в общем то следует что с помощью с помощью директивы прокси с отъездом мы можем добавить какой то дополнительный заголовок


[06:25 - 06:41] при проксировании запрос а 2 важный момент при проксировании запроса теряется 5 когда клиент подключен непосредственно к серверу сервер может получить ip адрес вместе с соединением когда делается


[06:41 - 06:59] мы получаем деньги и получаемой в данном случае выступает в роли клиента и он подключается к серверу либо к партнеру а поэтому


[06:59 - 07:14] партнер получит ip адрес нашего фронта серверов что в большинстве случаев ему совершенно не нужно для того чтобы сохранить а ip адрес клиента его помещают в специальный заголовок x real ip


[07:14 - 07:29] а тогда бы can сервер может проанализировать этот заголовок и узнать настоящий адрес клиент итак мы видим что с помощью директивы proxypass мы можем указать куда


[07:29 - 07:48] передавать запрос куда проксировать с помощью прокси сервер мы можем добавлять в частности какие то а какие то заголовке а на самом деле очень большое количество настроек для проксирования а можно задавать


[07:48 - 08:03] различные таймауты сколько нужно ожидать того ни другого сервера это все делается довольно просто теперь давайте посмотрим как конфигурируется апстрима что такое в стримы и для чего они нужны


Step 3 (S-44768) 3.png

[08:03 - 08:20] что такое upstream апстрим а в терминологии с этой группы серверов то есть это набор абакан сыров работающих под общим именем а upstream сдается с помощью такой директивы


[08:20 - 08:35] директива upstream указывается имя и далее список тех серверов которые входят в данную здесь а при указании конкретного сервера можно использовать ip адрес либо можно указывать доменное имя


[08:35 - 08:52] сервера могут работать на разных портах это не обязательно должен быть порт 8 80 этаж серверам могут работать на произвольных портах а какие опции предлагается при а конфигурирование австрии


[08:52 - 09:07] а в 1 очередь это задания весов то есть мы видим директиву которая позволяет задавать так называемый вес сервера в апстриме а что это такое если у вас


[09:07 - 09:24] backend серверам аппликейшен сервера а это физически разные машины они разные мощность у них разные процессоры с разным объемом памяти понятно что на их нужно передавать разное количество запросов чтобы


[09:24 - 09:39] а загружать более менее равномерно до этого используются допустим у нас сервер 2 2 раза мощнее 1 поэтому для него указывается вес а 2


[09:39 - 09:57] для сервера 1 указывается вес 1 а кроме этого в день следит за состоянием серверов если а 1 из серверов периодически не отвечает на запросы то есть не отвечает аппроксимированы


[09:57 - 10:16] проксирует моему запросы он удаляется из списка а списка серверов есть специальный параметр макс files которые показывают сколько раз должен мне ответить чтобы из этого списка удалить быть быть удален а таким образом


[10:16 - 10:36] энгельс отбрасывает упавшая бокового ребра и продолжает работать аплодировать нагрузку между оставшимися работающая со временем повторяет запросы к 1 серверу если тот ответит он вернется в строй а помимо


[10:36 - 10:52] помимо указания ip адресов можно указывают также unix сокеты а во встречах это тоже работает и а есть также специальная опция быка


[10:52 - 11:09] как говорит о том что данный сервер не должен быть под нагрузкой он включается только для режима бэкапа то есть когда остальные сервера не могут послужить запрос обычно а в простых сайтах в простых приложениях используется 1 обстрел в которое входят а


[11:09 - 11:28] все пока до которо все бы конце слова которые есть в более сложных ситуациях делятся на отдельные группы часто их называют фермами а допустим а видима пользователю в часть приложение обрабатывает 1 группы серверов


[11:28 - 11:46] за обработку запросов от мобильного приложения для запросов api отвечает другая группа серверов что позволяет а разделить нагрузку гарантировать независимую работу а в части и мобильного приложения