У цій статті ми розглянемо, як забезпечити високу доступність (толерантність до відмови) веб -серверів IIS (Інтернет -сервісів) на сервері Windows за допомогою маршрутизації програм Microsoft (ARR) та балансування мережевого навантаження (NLB).
Зміст:
- Підготовка інфраструктури для створення високої доступності сайтів IIS
- Встановлення ARR та URL -адреси переписати на IIS на сервері Windows
- Налаштування загальної конфігурації IIS
- Налаштування NLB в сервері Windows
Отже, наша конфігурація стійкої до несправності ферма IIS буде виглядати так:
-
Павутина.Консозо.Com
(192.168.13.222) - Ім'я DNS веб -сервера, до якого повинен зв’язатися клієнти, до яких клієнти повинні зв’язатися. Ця IP -адреса буде доступна через кластер Microsoft NLB. У нашому випадку NLB забезпечує високу доступність та збалансування навантаження на сервер IIS; -
Web1.Консозо.Com
(192.168.13.20) - Перший сервер веб -ферми IIS -
Web2.Консозо.Com
(192.168.13.21) - Другий сервер веб -ферми IIS
Підготовка інфраструктури для створення високої доступності сайтів IIS
Створіть веб -запис у DNS.Консозо.Com та IP -адреси. Ви можете створити запис DNS за допомогою PowerShell:
Додати -dnsserverresoursourcecorda -name web -ipv4address 192.168.13.222 -zonename contoso.Com
Встановіть роль IIS на обох серверах у необхідній конфігурації, налаштуйте свій сайт/додаток. У нашому прикладі я використовую IIS в мінімальній конфігурації, достатній для повернення статичної сторінки HTML.
На обох веб -серверах я створив файл C: \ Intepub \ iis_ha.HTML
з простим HTML -кодом. Щоб продемонструвати високу доступність та перевірку комутації, HTML -файл на кожному сервері містить назву хоста, на якому він знаходиться (однакова конфігурація буде використовуватися в продуктивному середовищі).
Тоді я створив сертифікат SSL для імені веб -сайту.Консозо.Com і імпортував його в IIS на обох серверах (для тестування я використовую самооцінений сертифікат, створений за допомогою PowerShell).
Цей сертифікат прив’язаний до сайтів на обох серверах II на порту 443.
Встановлення ARR та URL -адреси переписати на IIS на сервері Windows
Тепер вам потрібно встановити компонент ARR (маршрутизація запиту на заявку) На обох серверах.
У продуктивних сценаріях, коли ви забезпечуєте високу доступність веб -додатку IIS за допомогою ARR та NLB, доцільно створити окремі сервери для розміщення цих послуг (з комбінацією ролей ARR та NLB). Наприклад, при налаштуванні високої доступності для Exchange Server (Служби доступу до клієнтів: OWA, Activesync, AutodisoSeocy. і т.D.), не рекомендується розміщувати додаткові послуги на Server Exchange. Також NLB несумісний із послугою кластеру Microsoft Failover (не запускається в одному хості).Завантажувати Microsoft Apply Apply Protecting Routing 3.0 (x64) І запустіть установку Requestrouter_amd64.MSI
на обох серверах (https: // www.Microsoft.Com/web/завантаження/платформа.ASPX).
Також завантажте та встановіть модуль IIS URL переписати 2.1. (https: // www.IIS.NET/Завантаження/Microsoft/URL-MWRITE).
Відновити консоль IIS. Тепер вам потрібно створити ферму веб -серверів IIS. Клацніть на правій кнопці Серверна ферма І вибрати Створити серверну ферму.
Встановіть назву ферми Павутина.Консозо.Com
і додайте до нього господарів Web1
і Web2
.
IIS запропонує автоматично створити правила переписати URL -адресу для вашого господарства. Погодьтеся з цим.
У умовах ферми IIS:
- В розділі Кешування Від'єднайте кешування (Увімкнути кеш -диск=
помилковий
); - В розділі Проксі Змініть значення Поріг буфера відповіді на
0
; - В розділі Правила маршрутизації Ввімкнути URL -адреса Revrite І вимкнути Увімкнути SSL -розвантаження;
- На вкладці Тест на здоров'я Вкажіть адресу URL -адреси для перевірки
http: // wean.Консозо.Com/
І встановити Інтервал (секунди) =п’ять
Тепер вам потрібно створити правила для перенаправлення IIS. Перейдіть до розділу URL -адреса переписати В менеджері IIS. Одне правило для ферми вже створено ( Arr_web.Консозо.com_locadbalance_ss
Л).
Додайте нову умову (умову):
- Введення стану:
Http_host
-
Відповідає шаблону
- Візерунок:
Павутина.Консозо.Com
Налаштування загальної конфігурації IIS
Тепер вам потрібно зробити загальну конфігурацію IIS для двох серверів. Для цього створіть загальну мережеву папку на будь -якому іншому сервері (не використовуйте кульки для сервера фермерського господарства для розміщення цього SMB, рекомендується розмістити цю папку на стійкий до ладу файл або DFS). Створіть обліковий запис служби в AD (у нашому прикладі це Contoso \ shared_iis
) і надати їй повні права на цю папку.
Ви можете створити мережеву папку та призначити права за допомогою PowerShell:
New -smbshare ishared -path d: \ iishared -fullaccess contoso \ spb_admins -changeaccess contoso \ shared_iis
На сервері, на якому ви налаштовуєте ферму, перейдіть до розділу IIS -> Спільна конфігурація. Оберіть Конфігурація експорту.
Вкажіть UNC у своїй мережевій папці та паролями для шифрування (вам потрібно використовувати стійкий пароль). Клацати Підключити aS та вкажіть дані бухгалтерського обліку (contoso \ shared_iis) для доступу до цієї папки.
Після того, як ви експортуєте свою конфігурацію, вам потрібно налаштувати обидва сервери IIS для використання загальної конфігурації з мережевої папки.
Увімкніть опцію Увімкнути спільну конфігурацію, Вкажіть шлях UNC та дані про бухгалтерський облік UNC. Клацати Застосовувати. Якщо все пройшло успішно, перезапустіть IIS та аналогічно налаштуйте спільну конфігурацію на другому сервері.
Налаштування NLB в сервері Windows
Тепер вам потрібно встановити компонент NLB на обох серверах та налаштувати кластер. Встановіть ролі з PowerShell:
Додати -windowsfeature nlb -includemanagementtools
Запустіть консоль менеджера балансування мережевого навантаження ( NLBMGR.Екзе
) і створити новий кластер для IP -адрес 192.168.13.222.
Оберіть Багатоадресний Кластерний режим.
Додайте правило для порту TCP/443. Оберіть:
- Режим фільтрації: багаторазовий хост
- Афонність: неодружена
Додайте другий сервер до кластера NLB.
Переконайтесь, що обидва господарі змінили статус Перетворений.
Використовуючи віртуальні машини, для правильної роботи NLB потрібно дозволити зміну MAC -адреси на VM. У Hyper -V потрібно ввімкнути розширені функції -> Увімкнути MAC -адресу спокусування. У VMware vSphere включіть опцію Зміна адреси MAC на рівні віртуальних комутаторів або груп портів.Також перевірте, як обробляється MAC -адреса ваші фізичні комутатори.
Тепер ви можете перевірити наявність сайту https: // web.Консозо.com/iis_ha.HTML від клієнтів. Якщо ви все правильно налаштували, ця сторінка повинна бути доступною.
У моєму випадку все не знімалося відразу. Переходячи на цільову веб-сторінку, пул Defaultappool в IIS почав зупинятися з помилкою ідентифікатора події 2307 від IIS-W3SVC-WP
Процес робітника для пулу додатків 'defaultappool' зіткнувся з анеррором 'не може прочитати конфігурацію для читання конфігурації з' \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ |?\ ', номер рядка' 0 '. Поле даних містить код помилки.
Щоб вирішити проблему, мені довелося виконувати такі команди на обох серверах:
Чиста зупинка була /y
Rmdir /s /q c: \ inetpub \ temp \ додаток
Чистий старт W3SVC
Також відключіть стандартне правило для IIS, що виправляють помилку:
Помилка HTTP 502.4 - Bad Gateway не знайдено відповідного холодного сервера для маршруту приймачів.
У цій конфігурації Інтернет буде доступний для користувачів з недоступністю будь -якого з кивок ферми IIS. Це можна побачити чітко, оскільки залежно від сервера, який обробляє ваш сеанс.html).
Якщо вимкнути або призупинити один із цільових серверів, то ARR після виконання перевірки здоров'я (5 секунд) перенаправить вас на інший веб -сервер.
Не забувайте, що для створення повністю стійкої до несправності конфігурації, вам також потрібно забезпечити реалізацію HA для бази даних, якою використовуються ваші програми на IIS. Використовуючи MS SQL Server, ви можете використовувати конфігурацію кластера або групу високої доступності SQL завжди.Така конфігурація забезпечить високу доступність веб -служб IIS, дозволить автоматично перенаправляти трафік у разі недоступності одного з серверів. Крім того, завдяки NLB, ви можете забезпечити розподіл та врівноваження навантаження на сайти.