Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 0
  • 1

Witam.

Interesuje mnie zagadnienie wdrożenia wysokiej dostępności IIS z wykorzystaniem tylko dwóch serwerów. Z tego co doczytałem, zaleca się wykorzystanie do tego celu przynajmniej czterech serwerów (2 serwery z docelową witryną oraz 2 serwery z ARR i NLB). Jednak mój problem polega na tym, że nie ma wystarczającej ilości miejsca i licencji na tyle serwerów.

Rozpocząłem już testy i uruchomiłem środowisko składające się z dwóch serwerów, na których działa IIS (content server), ARR oraz NLB. Generalnie celem jest zapewnienie wysokiej dostępności dla aplikacji bez wykorzystania rozwiązań sprzętowych.

ARR dla ruchu http działa bez zarzutów. Ruch jest rozkładany bez żadnego problemu. Problem jest z wdrożeniem https.


Środowisko wygląda następująco:
Serwer1: 10.10.1.10
Serwer2: 10.10.1.11

Na obydwu serwerach jest skonfigurowana prosta strona, która wyświetla nazwę serwera. Witryna nasłuchuje na portach 80, 443 oraz url: app.domena.local.
Dodatkowo uruchomiona jest domyślna witryna dla ARR, która nasłuchuje na portach 80, 443 oraz url: app1.domena.local.

SSL Offloading wyłączyłem oraz skonfigurowałem reguły:
<rewrite>
<globalRules>
<clear />


<rule name="ARR_STOP" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="*app.domena.local*" />
</conditions>
<action type="None" />
</rule>


<rule name="ARR_farm_loadbalance_SSL" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{HTTPS}" pattern="on" />
</conditions>
<action type="Rewrite" url="https://farm/{R:0}" />
<serverVariables>
<set name="HTTP_HOST" value="app.domena.local" />
</serverVariables>
</rule>


<rule name="ARR_farm_loadbalance" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="off" />
</conditions>
<serverVariables>
<set name="HTTP_HOST" value="app.domena.local" />
</serverVariables>
<action type="Rewrite" url="http://farm/{R:0}" />
</rule>
</globalRules>
</rewrite>

Generalnie powinno to działać tak:

Klient uruchamia aplikację app1.domena.local, następnie odpowiednia reguła zamienia http_host na app.domena.local i przekierowuje na odpowiedni serwer w farmie. Następnie, reguła ARR_STOP zatrzymuje ponownie wykonywanie reguł (aby nie wpaść w pętlę przekierowań).

Efekt jest taki, że po uruchomieniu aplikacji przez klienta, ARR oznacza obydwa serwery jako unhealthy, a w przeglądarce wyświetla się błąd: 502 - Serwer sieci Web odebrał nieprawidłową odpowiedź, działając jako brama lub serwer proxy.
Czy ktoś spotkał się z takim problemem?

Piotrek.

Piotr_Buczek_v2mv
  • Zapytał
  • @ Piotr_Buczek_v2mv | 21.04.2018
    • 0
    • 0
    • 0
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 0

Cześć.

Ciekawa sytuacja. Działa HTTP, nie działa HTTPS.

Może problem leży w certyfikacie? Nazwa/wildcard? Lokalizacja na obu serwerach IIS?

Ewentualnie przyjrzałbym się dokładniej regułom. ;-)

Pozdrawiam.
Andrzej.

  • Odpowiedział
  • @ | 27.04.2018
  • TRENER ALTKOM AKADEMII