<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Re[2]: weight Б upstream</title>
<META http-equiv=Content-Type content="text/html; charset=koi8-r">
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
body {
margin: 5px 5px 5px 5px;
background-color: #ffffff;
}
/* ========== Text Styles ========== */
hr { color: #000000}
body, table /* Normal text */
{
font-size: 9pt;
font-family: 'Courier New';
font-style: normal;
font-weight: normal;
color: #000000;
text-decoration: none;
}
span.rvts1 /* Heading */
{
font-size: 10pt;
font-family: 'Arial';
font-weight: bold;
color: #0000ff;
}
span.rvts2 /* Subheading */
{
font-size: 10pt;
font-family: 'Arial';
font-weight: bold;
color: #000080;
}
span.rvts3 /* Keywords */
{
font-size: 10pt;
font-family: 'Arial';
font-style: italic;
color: #800000;
}
a.rvts4, span.rvts4 /* Jump 1 */
{
font-size: 10pt;
font-family: 'Arial';
color: #008000;
text-decoration: underline;
}
a.rvts5, span.rvts5 /* Jump 2 */
{
font-size: 10pt;
font-family: 'Arial';
color: #008000;
text-decoration: underline;
}
span.rvts6
{
font-weight: bold;
color: #800000;
}
span.rvts7
{
font-weight: bold;
color: #800080;
}
span.rvts8
{
font-size: 8pt;
font-family: 'arial';
font-style: italic;
color: #c0c0c0;
}
/* ========== Para Styles ========== */
p,ul,ol /* Paragraph Style */
{
text-align: left;
text-indent: 0px;
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
}
.rvps1 /* Centered */
{
text-align: center;
}
--></style>
</head>
<body>
<p>Hello Sergey,</p>
<p><br></p>
<p>Столкнулся с необходимостью сделать похожее решение.</p>
<p>Задача в том, чтобы все запросу ВСЕГДА шлм на первый Upsetream </p>
<p>и только в случае его сбоя, по ошибкe next_upstream переключалось на второй,</p>
<p>если второй тоже дал ошибку, то на 3й.</p>
<p><br></p>
<p>Это возможно, или проблема не решаема ?\</p>
<p>Спасибо !!!</p>
<p><br></p>
<p><br></p>
<p>Wednesday, September 27, 2006, 12:27:08 AM, you wrote:</p>
<p><br></p>
<p><span class=rvts6>> On Wednesday 27 September 2006 00:50, Igor Sysoev wrote:</span></p>
<p><span class=rvts7>>> On Sat, 23 Sep 2006, Sergey Serov wrote:</span></p>
<p><span class=rvts7>>> > Есть проблемы с использованием weight в upstream в целях распределения</span></p>
<p><span class=rvts7>>> > нагрузки.</span></p>
<p><span class=rvts7>>> > Если вес выставлен одинаковый, то нагрузка распределяется равномерно.</span></p>
<p><span class=rvts7>>> > Пример:</span></p>
<p><span class=rvts7>>> > upstream test_backend {</span></p>
<p><span class=rvts7>>> > server localhost:59040 weight=10000;</span></p>
<p><span class=rvts7>>> > server other_server:59040 weight=10000;</span></p>
<p><span class=rvts7>>> > }</span></p>
<p><span class=rvts7>>> ></span></p>
<p><span class=rvts7>>> > Если же выставить разный вес, то нагрузка распределяется неравномерно по</span></p>
<p><span class=rvts7>>> > времени, каждые десять минут меняется сервер и все. Сужу об этом по</span></p>
<p><span class=rvts7>>> > графикам загрузки серверов. 10 минут все запросы идут на один сервер,</span></p>
<p><span class=rvts7>>> > затем 10 мин. на другой.</span></p>
<p><span class=rvts7>>> > Пример:</span></p>
<p><span class=rvts7>>> ></span></p>
<p><span class=rvts7>>> > upstream test_backend {</span></p>
<p><span class=rvts7>>> > server localhost:59040 weight=10000;</span></p>
<p><span class=rvts7>>> > server other_server:59040 weight=5000;</span></p>
<p><span class=rvts7>>> > }</span></p>
<p><span class=rvts7>>> ></span></p>
<p><span class=rvts7>>> > location / {</span></p>
<p><span class=rvts7>>> > expires epoch;</span></p>
<p><span class=rvts7>>> > fastcgi_pass test_backend;</span></p>
<p><span class=rvts7>>> > fastcgi_upstream_max_fails 0;</span></p>
<p><span class=rvts7>>> > fastcgi_next_upstream error timeout invalid_header http_500;</span></p>
<p><span class=rvts7>>> > include fastcgi_param.conf;</span></p>
<p><span class=rvts7>>> > }</span></p>
<p><span class=rvts7>>> ></span></p>
<p><span class=rvts7>>> > Но обнаружил, что если цель треть нагрузки отправлять на другой сервер,</span></p>
<p><span class=rvts7>>> > то такое помогает:</span></p>
<p><span class=rvts7>>> ></span></p>
<p><span class=rvts7>>> > upstream test_backend {</span></p>
<p><span class=rvts7>>> > server localhost:59040 weight=10000;</span></p>
<p><span class=rvts7>>> > server localhost:59040 weight=10000;</span></p>
<p><span class=rvts7>>> > server other_server:59040 weight=10000;</span></p>
<p><span class=rvts7>>> > }</span></p>
<p><br></p>
<p><span class=rvts7>>> Да, сейчас алгоритм работает так: берётся вес апстрима и пока</span></p>
<p><span class=rvts7>>> не уменьшиться до нуля, к следующему не переходим, поэтому большие</span></p>
<p><span class=rvts7>>> веса неравномерно распрeamяеделяют нагрузку. Я планирую в скором времени</span></p>
<p><span class=rvts7>>> сделать алгоритм, который бы равномерно распределял запросы.</span></p>
<p><br></p>
<p><br></p>
<p><span class=rvts6>> У меня такой большой вес исключительно для того, что бы можно было прописать</span></p>
<p><span class=rvts6>> бэкапные сервера еще с минимально возможным весом. Чтобы срабатывало </span></p>
<p><span class=rvts6>> fastcgi_next_upstream</span></p>
<p><span class=rvts6>> Было бы неплохо, напр. задавать вес=0 и при этом эти сервера участвовали</span></p>
<p><span class=rvts6>> _только_ в fastcgi_next_upstream. Тогда и текущий алогоритм не мешал бы.</span></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><span class=rvts8>-- </span></p>
<p><span class=rvts8>Best regards,</span></p>
<p><span class=rvts8>Aleksej </span></p>
<p><span class=rvts8>ICQ: 293-686-24</span></p>
<p><span class=rvts8>GSM:371-293-686-24</span></p>
</body></html>