100% часу роботи веб-програми


312

Сьогодні ми отримали цікаву «вимогу» від клієнта.

Вони хочуть, щоб 100% тривалий час роботи з відмовою поза веб-сайтом у веб-додатку. З точки зору нашої веб-програми, це не проблема. Він був розроблений так, щоб мати можливість масштабувати масштаб на декількох серверах баз даних тощо.

Однак з питань мережі я просто не можу зрозуміти, як змусити її працювати.

Коротше кажучи, додаток житиме на серверах у мережі клієнта. До нього звертаються як внутрішні, так і зовнішні люди. Вони хочуть, щоб ми зберігали позамісцеву копію системи, яка у випадку серйозної несправності в їхніх приміщеннях негайно забрала б і перейняла.

Тепер ми знаємо, що немає абсолютно ніякого способу вирішити це для внутрішніх людей (голуб-носій?), Але вони хочуть, щоб зовнішні користувачі навіть не помічали.

Відверто кажучи, я не маю найяснішої ідеї, як це можливо. Здається, якщо вони втратять підключення до Інтернету, тоді нам доведеться змінити DNS, щоб перенести трафік на зовнішні машини ... На що, звичайно, потрібен час.

Ідеї?

ОНОВЛЕННЯ

Я сьогодні мав дискусію з клієнтом, і вони уточнили це питання.

Вони залишилися на 100%, кажучи, що програма повинна залишатися активною навіть у випадку повені. Однак ця вимога виникає лише в тому випадку, якщо ми їх приймемо. Вони сказали, що вони будуть справлятись з вимогами, що стосуються часу роботи, якщо програма повністю працює на їх серверах. Ви можете вгадати мою відповідь.


49
Не варто недооцінювати величезні простої, викликані злому, дивіться на Sony і мережу PlayStation. Ви можете гарантувати, що вони мали таку ж ідею% 100 для продовження роботи та гроші / обладнання для її резервного копіювання. уточнюйте з клієнтом, що 100% тривалості тривалості часу - це нездійсненне очікування, навіть техники Google не вагаються брікати "100% часу безперервної роботи". підказка btw полягає у вивченні використання динамічного DNS, вони кешують лише 60 секунд, це має включати ОС та локальні сервери DNS
Silverfire

182
Я б особисто СПРАВУвав від цього клієнта якомога швидше. Я підозрюю, що це не буде останньою божевільною ідеєю, яку вони можуть мати (з технологічної точки зору).
GregD

137
Я б хотів, щоб я міг порушити ваш клієнт.
joeqwerty

81
Якщо ви розраховуєте на 100% тривалість роботи, дайте мені знати. Я буду створювати з ним бізнес і продавати його в google. Гарантувати 100% неможливо. Навіть такі компанії, як мікрософт, амазонка чи google, не підуть настільки високо, бо знають, що це неможливо. Найкраще, що я бачив - це 99,999%, і навіть це розтягнення (5 хвилин на рік). Найкраще, що ви могли б зробити, це 99,99% надійно.
Метт

39
Просто складіть шалено високу ціну, щоб поставити їх шалений запит. Це, ймовірно, поверне їх до тями. Інакше, або це відправить їх у пошуках того, хто хоче їх брехати.
Nate CK

Відповіді:


368

Ось зручна діаграма Вікіпедії про пошук дев'яти:

введіть тут опис зображення

Цікаво, що лише 3 з 20 найкращих веб-сайтів змогли досягти міфічних 5 дев'яток або 99,999% часу роботи в 2007 році. Це Yahoo, AOL та Comcast. У перші 4 місяці 2008 року деякі з найпопулярніших соціальних мереж навіть не наблизилися до цього.

З діаграми повинно бути видно, наскільки смішним є досягнення 100% безперервного часу ...


62
Pingdom також не перевіряє щосекунди. На додаток до цього, ті, хто зустрічався з п'ятьма дев'ятками, ймовірно, все ще мали локалізовані збої, які Pingdom, можливо, не виявила, або глюки, які робили деякі сервіси недоступними, все ще відповідаючи на pings.
ceejayoz

8
Що саме по собі робить п’ять дев'яток сумнівними ...
GregD,

5
Точно. І вони мають мільярди доларів для роботи!
ceejayoz

43
Вибачте, що заважаєте спілкуватися в чаті, але питання ОП полягало в тому, як рухатись до досягнення 100% часу роботи на технічному рівні не концептуально, я впевнений, що він знає, що це не завжди можливо через природні явища, що трапляються з обладнанням і довкілля. Чи могли б ми допомогти йому в цьому?
David d C e Freitas

5
До ОП: Я бачив угоди про домовленості, які гарантували тривалість роботи в контексті "поза нормальним обслуговуванням". Звичайне обслуговування, звичайно, заплановане простою в місяць для оновлень, виправлень тощо, які зазвичай трапляються в найменш зайнятий день місяця протягом найменш напружених періодів місяця (як правило, посеред ночі). Вони повинні мати певний тип показників для свого бізнесу щодо бізнесу. Ви можете запропонувати для них кращий час роботи (4 дев'ятки) лише тоді .
GregD

186

Попросіть їх визначити 100% і як це буде вимірюватися протягом якого періоду часу. Вони, ймовірно, означають близько 100%, наскільки вони можуть собі дозволити. Дайте їм калькуляцію.

Допрацювати. Я протягом багатьох років спілкувався з клієнтами з нібито смішними вимогами. У всіх випадках вони насправді просто використовували не досить точну мову.

Досить часто вони формують речі таким чином, що виглядають абсолютними - як 100%, але насправді при більш глибокому дослідженні вони досить розумні, щоб зробити аналіз витрат / вигод, необхідних при поданні витрат, щоб отримати дані про зменшення ризику. Запитати їх, як вони вимірюватимуть доступність - це вирішальне питання. Якщо вони цього не знають, то ви в змозі підказати їм, що це потрібно визначити спочатку.

Я б попросив клієнта визначити, що буде з точки зору впливу / витрат на бізнес, якщо сайт запуститься за таких обставин:

  • У найпотужніші години х годин
  • У їх найменш зайняті години по х годин

А також як вони це вимірять.

Таким чином ви можете працювати з ними, щоб визначити правильний рівень "100%". Я підозрюю, що задаючи такі питання, вони зможуть краще визначити пріоритети своїх інших вимог. Наприклад, вони можуть захотіти заплатити певні рівні угоди про домовленості та порушити інші функціональні можливості для досягнення цього.


21
Домовились. Вони можуть просто означати "дуже високий" час роботи (верхня 90-х?) З досить міцною стратегією відмови. Якщо ні, то, сподіваємось, пояснення масштабу витрат було б переконати їх ...
Мартін Дау

32
+1 за те, що не підходити до висновків, а натомість просто попросити клієнта пояснити, що вони мають на увазі.
sleske

4
Я повторюю заяву "не прискорення висновків" ... якщо клієнт має на увазі 100% часу роботи (за вирахуванням планового обслуговування), це може бути більш розумною вимогою.
Тім Редді

1
Що стосується впливу на бізнес, ми фактично знаємо і розуміємо їхній бізнес повністю, а витрати, пов'язані з тим, що сайт знижується, не є фінансовими. Більше по лінії тубільців, що з’являються з вилами, потенційними повішаннями тощо;). Уявіть собі, що біля ваших вхідних дверей кричали 40000 людей. Ось чого хочуть уникнути із пристрастю.
NotMe

7
@ChrisLively Тим більше, що тоді зріле розуміння ризику. Домінуючою парадигмою інженерії безпеки є ймовірнісна оцінка ризику . Є системи, які можуть вбити (не просто дратувати) тисяч людей, і вони все ще мають низьку, сподіваємось, добре зрозумілу, але ненульову ймовірність виходу з ладу.
poolie

140

Ваші клієнти божевільні. 100% тривалість роботи неможливо, незалежно від того, скільки грошей ви витратите на це. Просте і просте - неможливо. Подивіться на Google, Amazon тощо. Вони мають майже нескінченну кількість грошей, які можна закинути на їх інфраструктуру, але вони все ще встигають простоїти. Вам потрібно передати це повідомлення їм, і якщо вони продовжуватимуть наполягати на тому, що вони пропонують розумні вимоги. Якщо вони не визнають, що деяка кількість простоїв неминуча, тоді їх киньте.

Однак це означає, що ви, мабуть, володієте механікою масштабування / розповсюдження самої програми. Частина мереж потребує залучення зайвих посилань на різні Інтернет-провайдери, отримання розподілу ASN та IP, а також отримання ширини BGP та реального механізму маршрутизації, щоб простір IP-адреси міг пересуватися між провайдерами, якщо це необхідно.

Це, очевидно, дуже лаконічна відповідь. Ви не мали досвіду роботи з програмами, які вимагають такого рівня тривалості роботи, тому вам дійсно потрібно залучити професіонала, якщо ви хочете будь-де наблизитися до міфічного 100% часу роботи.


7
Домовились. Повністю. Божевільний.
jdw

2
вони звикли ??
Сірекс

2
@Sirex Посилаючись на недавній експеримент @ CERN, де виявлено, що нейтрино рухається швидше, ніж світло. Результати ще не підтверджені незалежними вченими.
TC1

9
@ TC1 Я обміню вам ставку на 200 доларів, які не зникають.
dpatchery

4
@ErikA Запит на 100% часу роботи свідчить про незнання технічних характеристик систем. Це нормально, адже робота замовника робить все, що вони роблять. Ваше завдання - розробляти ІТ-системи. Складними клієнтами, як це, можуть бути кошмари, але вони також можуть стати вашими найкращими клієнтами.
duffbeer703

54

Ну, це, безумовно, цікаво. Я не впевнений, що хотів би взяти на себе зобов’язання за контрактом на 100% часу, але якби мені довелося, я думаю, це виглядатиме приблизно так:

Почніть з загальнодоступного IP на балансирі навантаження повністю з мережі та побудуйте принаймні дві з них, щоб одна могла перейти на іншу. Така програма, як Heatbeart, може допомогти з автоматичним відмовою від них.

Лак відомий в першу чергу як рішення кешування, але він також робить дуже пристойне врівноваження навантаження. Можливо, це буде вдалим вибором для врівноваження навантаження. Він може бути налаштований таким чином, щоб 1 до n місць, необов'язково згрупованих у директори, які завантажуватимуть баланс як випадковим чином, так і круговим. Лак можна зробити досить розумним, щоб перевірити стан здоров'я кожного заднього кінця і скинути нездорові задні кінці з петлі, поки він не повернеться в Інтернет. Бакенди не повинні бути в одній мережі.

Мені сьогодні подобається еластичні IP-адреси в Amazon EC2, тому я, мабуть, будую свої балансири навантаження в EC2 в різних регіонах або принаймні в різних зонах наявності в тому ж регіоні. Це дасть вам можливість вручну (не дай бог) відкрутити новий балансир навантаження, якщо вам доведеться перенести існуючий IP-запис A в новий ящик.

Лак не може припинити SSL, тому, якщо це питання, ви можете замість цього поглянути на щось на зразок Nginx.

У вас може бути більшість резервних файлів у вашій мережі клієнтів і один або більше поза їх мережею. Я вважаю, але я не впевнений на 100%, що ви можете розставити пріоритетну ситуацію, щоб ваші клієнтські машини отримували пріоритет до тих пір, поки всі вони не стануть здоровими.

Ось з чого я би почав, якби в мене було це завдання, і, безперечно, вдосконалював би його, продовжуючи.

Однак, як заявляє @ErikA, це Інтернет, і завжди там будуть частини мережі, які не знаходяться під вашим контролем. Ви хочете переконатися, що законні стосунки вас стосуються лише речей, які є під вашим контролем.


2
Деякий час я думав про Amazon та MS про хмарне розгортання, але в обох вони були серйозні перебої протягом останніх кількох місяців. SSL є критичним.
NotMe

3
Якщо ви збираєтеся використовувати Amazon, ви обов'язково хочете розкласти свої машини навколо 5 зон наявності. Навряд чи всі їх зони виходитимуть одночасно.
jdw

11
+1 за фактичне вирішення основного питання ОП.
Філ

у вас завжди буде точка відмови, jdw, доки в ланцюзі є нерозподілена річ (у вашому випадку серцебиття, якщо, звичайно, у вас є кілька примірників того, що працює на віддалених машинах, які все контролюють один одного, а також ваш сервери, які будь-який з них може бачити або не бачити через проблеми в мережі під час маршрутизації). Що приводить нас до "простоїв". Сервери можуть бути запущені та запущені, але вони все ще недоступні для клієнта без серцебиття, коли б це не виявило, якщо відмова не знаходиться в шляху маршрутизації.
jwenting

Домовились. Як ВСЯКО інше зазначав, немає такого поняття, як 100% тривалості роботи. Все, що ви можете зробити, це спробувати, і те, що я описав, - це як я б почав намагатися.
jdw

30

Немає проблем - незначно переглянуті формулювання контракту:

... гарантія тривалості роботи 100% (округлена до нуля десяткових знаків).


2
+1 зазначаючи, що 100% - це не 100,0% або 100 000% тощо. Десяткові цифри мають значення, вони вказують на точність;)
Дунайський матрос

4
За деякими умовами "100%" має лише одну значущу цифру, так що всі числа від половини до однієї округлиться до "100%"; 50% округлили б до 100%.
Томас Левін

1
Залежно від стандарту підрахунку дехто скаже, що 50% мають два помірні числа, де 100% мають три мінливі числа. 50,5 і 100 є наперед таким же точним. Інші будуть рахувати цифри після коми після коми. Тоді 50,5 і 100,4 будуть настільки ж точними. Якщо нічого іншого не сказано, я б припустив, що 100% - це 99,5% і вище. 100,0% становить 99,95% і вище тощо.
Tillebeck

26

Якщо Facebook і Amazon не можуть цього зробити, то ви не можете. Це так просто.


17
він міг бути розумнішим за всіх їхніх людей у ​​поєднанні, хто знає: p
Метт

3
100% часу роботи не повинні бути такими буквальними людьми - це означає: 100% доступні протягом необхідного часу. Наприклад, банківські системи завжди повинні бути доступними, і вони працюють досить добре. Тільки тому, що вони спускаються на обслуговування протягом 1 секунди раз на рік, не означає, що вони не змогли досягти своєї стовідсоткової цілі безперервного часу.
David d C e Freitas

13
@DavidFreitas - Я думаю, що у контрактах це зазвичай досить буквально ...
UpTheCreek

2
@Matt лише тому, що Facebook / Amazon не може це зробити, це не означає, що менший сайт не може це зробити. Багато великих веб-сайтів стикаються зі значно складнішими проблемами, ніж менший.
Xorlev

1
так що ви говорите, що у вас не було 100% часу роботи, оскільки у вас були клієнти, які мали помилки .. плюс dns - це не миттєвий комутатор, оскільки у вас є провайдери, які ігнорують короткі TTL
Майк

25

Щоб додати відповідь oconnore від Hacker News

Я не розумію, в чому проблема. Клієнт хоче, щоб ви планували катастрофи, і вони не орієнтовані на математику, тому запитувати 100% ймовірність звучить розумно. Як схильні інженери, інженер запам’ятав свій перший день роботи та статтю 101, не враховуючи, що клієнт може цього не зробити. Коли вони говорять про це, вони не замислюються про ядерну зиму, вони думають про те, щоб Фред скидав свою каву на офісний сервер, вийшов з ладу диск або пройшов Інтернет-провайдер. Крім того, ви можете досягти цього. З географічно чіткими, незалежними серверами самонагляду, у вас просто не буде простоїв. Оскільки 3 сервери працюють з незалежною (1) трьома 9 надійністю, з хорошими режимами відмови, очікуваний час простою - менше секунди на рік (2). Навіть якщо це станеться все відразу, ви все ще знаходитесь в межах розумної угоди про угод для веб-зв’язків, а тому простоїв практично не існує. Клієнту все ж доводиться стикатися зі сценаріями досудного дня, але Годзілла виключений, у нього буде служба, яка "завжди" працює.

(1) Сервер в Лос-Анджелесі достатньо незалежний від сервера в Бостоні, але так, я розумію, що є певне перехрестя, пов’язане з ядерною війною, китайські хакери, що розбивають електромережу тощо. Я не думаю, що ваш клієнт буде засмучений це.

(2) Невдача DNS може додати кілька секунд. Ви все ще перебуваєте в сценарії, коли клієнту доводиться повторювати запит один раз на рік, який, знову ж таки, знаходиться в межах розумної угоди про домовленість, і зазвичай не вважається таким же чином, як "час простою". У програмі, яка автоматично перенаправляє на доступний вузол після відмови, це може бути непомітно.


6
Проблема полягає в тому, що вони говорять про це у контракті. Це означає, що якщо трапиться катастрофа , і вам потрібно більше десяти секунд, щоб повернути сайт в режимі он-лайн за допомогою резервних копій, вони мали б подати до суду.
Шадур

@Shadur: Якщо вони дійсно цього хочуть, то ви повинні їх справді зарядити. Розподіліть сервери географічно далеко і впоперек, сподіваємось, всюди не буде катастроф.
Мисливець за джунглями

3
Я бачив сайт, який пропонував 100% гарантії тривалості роботи або повернення ваших грошей. Хитрість полягала в тому, що вони стягували човен і розподіляли його на місяці. Тож деякі місяці залишаються неоплаченими, і ви плануєте все навколо цього, а втрати покриваєте місяцями, які працюють добре.
jldugger

17

Вас просять про щось неможливе.

Перегляньте тут інші відповіді, сядьте зі своїм клієнтом та поясніть ЧОМУ це неможливо та оцініть їх відповідь.

Якщо вони все ще наполягають на 100% часу роботи, ввічливо повідомте їм, що цього не можна зробити, і відмовитесь від контракту. Ви ніколи не будете задовольняти їхню вимогу, і якщо контракт не вичерпується, ви отримаєте покарання зі штрафними санкціями.


2
Потрібно визначити 100%, тобто 100%, за винятком випадків, коли ви працюєте на технічному обслуговуванні або модернізації, і цей час буде обмежений тихими годинами не більше ніж на кілька годин на місяць. Все залежить від того, якою є ціль та використання веб-програми в даному випадку ...
David d C e Freitas

1
і визначити "простої". Навіть теоретично не можна гарантувати, що вони зможуть отримати доступ до сервера в Омасі зі своїх офісів у Fairbanks, якщо ви не контролюєте всю мережу між ними (хоча ви можете дати гарантії щодо запуску та роботи сервера).
jwenting

Визначення, IMHO, не мають значення, якщо вони вимагають "100% часу безперервної роботи": Навіть якщо ви домовляєтесь про планове обслуговування та будуєте надмірність N + N, якщо один незначний збій викликає позапланову перезавантаження або миготіння служби, ви підірвали свій SLA. ВИЗНАЧЕНО релевантно, якщо ви домовляєтесь про 3, 4 або 5 дев'яти угод про угод .
voretaq7

Хоча це залежить від умов угоди про угода, чи не так? Якщо вам платять 100 000 доларів США на місяць, а кожна хвилина простою несе штраф у розмірі 1 тис. Доларів США, це може бути цілком можливим (якщо у вас є інші договори на амортизацію вартості 24/7 системних адміністраторів на місці).
Майкл Боргвардт

@MichaelBorgwardt, безумовно, є способи "змусити його працювати" з точки зору чистого числа, але я все одно відмовляюся через потенціал поганого PR ($ _CLIENT йде у Twitter і повідомляє світові "ми вниз, тому що $ _PROVIDER некомпетентний" і не може зустріти їх угод про угода! '). Особисто я вважаю за краще 10 менших, більш розумних клієнтів платити мені $ 10ка на місяць :-)
voretaq7

13

Відповідно, ціна, а потім в договорі обумовлюють, що будь-який час простою, що минув за Угоди про повернення послуг, буде повернутий за ставкою, яку вони сплачують.

ISP на моїй останній роботі зробив це. У нас був вибір "звичайної" лінії DSL з 99,9% тривалості тривалості 40 доларів на місяць, або зв'язаного тріо T1s при 99,99% тривалості до 1100 доларів на місяць. Бували часті перебої в 10+ годин на місяць, що призводило до тривалості їхнього робочого часу значно нижче $ 40 / місяць DSL, але нам було повернено лише близько 15 доларів або близько того, тому що на цьому ставка за годину * годин закінчилася. Вони розібралися, як бандити з угоди.

Якщо ви виставляєте 450 000 доларів США на місяць за 100% часу роботи, а ви досягаєте лише 99,999%, вам потрібно буде повернути їм 324 долари. Я готовий зробити ставку на інфраструктурні витрати, щоб досягти 99,999%, це близько 45 000 доларів на місяць, передбачаючи повністю розподілені кольори, багаторазові підсилення першого рівня, обладнання для приналежності тощо.


3
Якщо ви бачите, що хтось обіцяє 100% часу роботи, це саме те, що вони роблять. Існує різниця між обіцяючим 100% режимом роботи та його доставкою. Було б непогано пояснити це клієнтові, якщо він спробує запропонувати вам угода про конкурентну угоду.
sjbotha

10

Якщо фахівці сумніваються, чи 99,999 відсотків доступності [коли-небудь] є практичною або фінансово вигідною можливістю , то 99,9999% доступність ще менше можлива або практична. Не кажучи вже на 100%.

Ви не досягнете цілі 100% доступності протягом тривалого періоду часу. Ви можете піти з цим на тиждень чи рік, але тоді щось станеться, і ви будете нести відповідальність. Результат може варіюватися від пошкодженої репутації (ви пообіцяли, що ви не поставили) до банкрутства від договірних штрафів.


10

Є два типи людей, які вимагають 100% часу роботи:

  1. Люди, які абсолютно не знають про комп’ютери, комп'ютерні системи чи Інтернет. *
  2. Ті, хто навмисно роблять собі дупу, або перевіряють вашу здатність сказати «Ні» (Google «Тест на апельсиновий сік»), або намагаються отримати якусь контрактну угоду про укладання договору за угодою SLA, щоб пізніше виплатити вам.

Моя порада, зазнаючи обох цих клієнтів неодноразово, - це не брати цього клієнта. Нехай вони заганяють когось іншого божевільного.

* Ця ж людина може не мати ніяких запитань про запитання про швидше подорожі, ніж легке, вічний рух, холодний синтез тощо.


2
+1 для тесту з апельсиновим соком .. Мені подобається і не знав про нього :)
Олівер М Греч

8

Я б спілкувався з клієнтом, щоб встановити з ними, що саме означає 100% часу роботи. Можливо, вони насправді не бачать різниці між 99% тривалості та 100% тривалості тривалості. Для більшості людей (тобто не адміністраторів сервера) ці два числа однакові.


6

100% часу роботи?

Ось що вам потрібно:

Кілька (і надлишкових) DNS-серверів, що вказують на декілька сайтів у всьому світі, з належними домовленими довідками з кожним провайдером.

Переконайтесь, що сервери DNS налаштовані належним чином, а TTL розпізнається ефективно.


1
Так, DNS - це гарний початок - наприклад, nslookup google.comповертає 6 різних IP-адрес для надмірності, якщо деякі з них не працюють. Також ознайомтеся з RobTex.com чудовим сайтом для ознайомлення з конфігураціями певних доменів, наприклад, robtex.com/dns/google.com.html#records
David d C e Freitas

6

Це легко. SLA Amazon EC2 чітко зазначає:

"Щорічний відсоток часу" обчислюється, віднімаючи від 100% відсоток 5-хвилинних періодів протягом року обслуговування, в якому Amazon EC2 знаходився в штаті "Регіон недоступний".

http://aws.amazon.com/ec2-sla/

Просто встановіть, що "час безперебійного користування" має бути відносно всього пакета послуг, ви можете фактично зберігати свою роботу 100% часу, і у вас не повинно виникнути проблем.

Крім того, варто зазначити, що вся суть угоди про домовленості угод полягає в тому, щоб визначити, які ваші зобов’язання і що відбувається, якщо ви не можете їх виконати. Не має значення, чи клієнт вимагає 3 або 5 або дев'ять мільйонів - питання полягає в тому, що вони отримують, коли / якщо ви не можете їх доставити. Очевидна відповідь - забезпечити позицію на 100% в режимі тривалості 5-разової ціни, яку ви хочете стягнути, а потім вони отримують 4-разове повернення коштів, якщо ви пропустите цю ціль. Ви можете забити!


5

Зміни DNS потребують часу, лише якщо вони налаштовані на час. Ви можете встановити TTL на запис на одну секунду - вашим єдиним питанням було б забезпечити своєчасну відповідь на запити DNS, і що сервери DNS можуть впоратися з цим рівнем запитів.

Саме так працює GTM у F5 Big IP - DNS TTL за замовчуванням встановлюється на 30 секунд, і якщо одному з членів кластера потрібно взяти на себе посаду, DNS оновлюється і новий IP приймається практично негайно. Максимум 30 секунд відключення, але це крайній випадок, середній показник - 15 секунд.


10
З мого досвіду, деякі сервери DNS знехтують TTL, який вони вважають прикро низьким (незважаючи на RFC). Все, що менше 5 хвилин, стає дещо ненадійним у світовому масштабі.
jdw

13
@Paul ігнорування реальності не є прийнятною практикою, незалежно від того, наскільки це дратує всіх.
MDMarra

5
Я з jdw з цього приводу. Я бачив, що численні сервери DNS повністю ігнорують TTL, навіть налаштування на 1 годину та за замовчуванням повертаються приблизно на 24 години.
NotMe

6
@Paul - ОП не контролює всі DNS-рішення DNS на планеті. Ерго, вони не мають права сказати: "якщо ви збираєтеся використовувати наш веб-сайт, не використовуйте Comcast / Roadrunner / кого-небудь як свій провайдер, оскільки вони ігнорують наші налаштування TTL". Це щось, що просто перебуває під їх контролем і тому є занадто крихким, щоб вважати рішенням цієї проблеми IMHO. Рішення повинно містити певний спосіб, щоб можна було внутрішньо змусити IP-адреси навколо, не покладаючись на інші біти мережі, які можуть не бути спільними.
jdw

3
Це неначе не мати ДБЖ, оскільки влада "повинна просто працювати". Це не перспективний спосіб архітектури системи. Якщо ви знаєте, що є неміцною частиною системи, з будь-якої причини вам слід спробувати це врахувати.
jdw

5

Ви знаєте, що це неможливо.

Без сумніву, клієнт зосереджений на тому, щоб бачити "100%", тому найкраще, що ви можете зробити, це обіцяти 100%, за винятком [всіх розумних причин, які не є вашою виною].


Без сумніву, клієнт не хоче рішення. Вони хочуть занепаду. Так що можна сказати, намагалися хоча б.
mbx

Ну, можливо. Ви припускаєте високий рівень підказки.
Марцін

4

Хоча я сумніваюся, що на 100% це можливо, ви можете розглянути Azure (або щось із подібним SLA) як можливість. Що продовжується:

Ваші сервери - це віртуальні машини. Якщо на одному сервері колись виникає проблема з обладнанням, ваша віртуальна машина буде перенесена на нову машину. Балансир навантаження піклується про перенаправлення, тому клієнт не повинен бачити простоїв (хоча я не впевнений, як вплине стан вашого сеансу).

Це говорило навіть за відмови від різниці між 99,999 та 100 кордонами щодо божевілля.

Вам доведеться мати повний контроль над наступними факторами.
- Людські фактори, як внутрішні, так і зовнішні, і злоба, і безсилля. Прикладом цього є те, що хтось щось підштовхує до виробничого коду, який збиває сервер. Ще гірше, що з диверсіями?
- Питання бізнесу. Що робити, якщо ваш постачальник не виходить із забудови чи забуде сплатити свої рахунки за електроенергію, або просто вирішить припинити підтримувати вашу інфраструктуру без достатнього попередження?
- Природа. Що робити, якщо споріднені торнадо одночасно потрапляють на достатню кількість центрів обробки даних, щоб перекрити резервну потужність?
- Зовнішнє середовище без помилок. Ви впевнені, що немає кращого випадку з яким-небудь стороннім або основним системним управлінням, яке б не проявилося, але все-таки могло б зробити це в майбутньому?
- Навіть якщо ви маєте повний контроль над перерахованими вище факторами, чи впевнені, що програмне забезпечення / особа, яка відстежує це, не подасть вам помилкових негативів під час перевірки, чи працює ваша система?


2
Недавно Azure та EC2 мали майже повний та повний збій. Я вважаю, що Azure нещодавно був знятий просто через неправильну запис конфігурації на сервері DNS. У будь-якому випадку, дякую за інформацію.
NotMe

і якщо ваш балансир навантаження (що робить перемикання) залишається непоміченим (його монітор також може бути непоміченим, ad infinitum), коли вузол опускається, ви все одно накрутитеся.
jwenting

1
Я думаю, ви мали на увазі "некомпетентність". "Імпотенція" не повинна сильно впливати на здатність ІТ-співробітників виконувати свою роботу.
mfinni

4

Чесно кажучи, 100% є абсолютно божевільним, принаймні колись у плані хакерської атаки. Ваша найкраща ставка - зробити те, що роблять Google та Amazon, у вас є георозподілене хостингове рішення, де ви маєте свій веб-сайт та БД реплікувати на декілька серверів у різних географічних місцях. Це гарантуватиме це в будь-чому, крім великої катастрофи, наприклад, перерізання магістральної мережі в Інтернет (яка трапляється час від часу) або щось майже апокаліптичне.

Я б поставив застереження про такі випадки (DDOS, різання магістральних мереж через Інтернет, апокаліптичний теракт або велика війна тощо).

Крім цього, дивіться у хмарні сервіси Amazon S3 або Rackspace. По суті, налаштування хмари не лише запропонує надмірність у кожному місці, але й масштабованість та георозподіл трафіку, а також можливість перенаправлення навколо невдалих георегіонів. Хоча я розумію, що георозподіл коштує більше грошей.


3

Я просто хотів би додати ще один голос у «він може (теоретично) бути зроблено» партії.

Я б не брав на себе контракт, який би вказав це, незалежно від того, скільки вони мені заплатили, але, як дослідницька проблема, він має досить цікаві рішення. Я недостатньо знайомий із мережею, щоб окреслити кроки, але уявляю, що комбінація мережевих конфігурацій + відключення електричного / апаратного з'єднання + відмовлення від програмного забезпечення, можливо, у певній конфігурації чи іншій роботі фактично витягнуть це.

Десь у будь-якій конфігурації майже завжди є одна точка відмови, але якщо ви працюєте досить наполегливо, ви можете просунути цю точку відмови як щось, що можна відремонтувати "наживо" (тобто root dns знижується, але значення все ще кешуються скрізь ще, щоб ви встигли це виправити).

Знову ж таки, не кажучи, що це можливо .. Мені просто не сподобалося, як жодна відповідь не зверталася до того, що це не "вихід туди" - це просто не те, чого вони насправді хочуть, якщо вони продумують це.


3

Подумайте про свою методологію вимірювання наявності, а потім працюйте зі своїм клієнтом, щоб встановити значущі цілі .

Якщо ви користуєтеся великим веб-сайтом, тривалість роботи взагалі не корисна. Якщо ви відмовляєтесь від запитів протягом 10 хвилин, коли ваші клієнти потребують їх найбільше (пік трафіку), це може бути більше згубним для бізнесу, ніж тривалість години відключення о 3 ранку в неділю.

Іноді великі веб-компанії вимірюють доступність або надійність, використовуючи такі показники:

  1. відсоток запитів, на які відповіли успішно, без помилки на сервері (HTTP 500s).
  2. відсоток запитів, на які відповіді нижче певної цільової затримки .
  3. відхилені запити повинні враховуватися вашими статистичними даними (див. нижче).

Доступність не слід вимірювати за допомогою зразкових зондів, про що можуть повідомляти зовнішні об'єкти, такі як pingdom та pingability. Не покладайтеся тільки на це. Якщо ви хочете зробити це правильно, кожен запит повинен враховуватися . Виміряйте свою доступність, дивлячись на ваш фактичний, сприйнятий успіх.

Найефективніший спосіб - це збирати журнали або статистику зі свого балансира навантаження та обчислювати доступність на основі наведених вище показників.

Відсоток відхилених запитів також слід враховувати ваші статистичні дані. Його можна враховувати в тому ж відрі, що й помилки на стороні сервера. Якщо є проблеми з мережею або з іншою інфраструктурою, такою як DNS або балансири навантаження, ви можете використовувати просту математику, щоб оцінити, скільки запитів ви втратили . Якщо ви очікували X запитів на цей день тижня, але у вас X-1000, ви, ймовірно, відмовились від 1000 запитів. Розподіліть свій трафік на графіки запитів на хвилину (або секунду). Якщо з’являються прогалини, ви запитували запити. Використовуйте основну геометрію, щоб виміряти площу цих прогалин, яка дає вам загальну кількість відхилених запитів.

Обговоріть цю методологію зі своїм замовником та поясніть його переваги. Встановіть базову лінію , вимірюючи їх поточну доступність. Їм стане зрозуміло, що на 100% неможлива мета.

Тоді ви можете підписати контракт на основі поліпшень на базовій лінії. Скажімо, якщо вони зараз мають 95% доступності, ви можете пообіцяти покращити ситуацію в десятки разів , досягнувши 98,5%.

Примітка: у цього способу вимірювання доступності є недоліки. По-перше, самостійно збирати журнали, обробляти та генерувати звіти не може бути дрібницею, якщо ви не використовуєте для цього наявні інструменти. По-друге, помилки програм можуть зашкодити вашій доступності. Якщо програма низької якості, вона подасть більше помилок. Рішенням цього є лише врахування 500-х, створених балансиром навантаження, а не тими, що надходять із програми.

У цьому випадку речі можуть стати дещо складнішими, але це один крок за межі вимірювання часу роботи вашого сервера .


3

Хоча дехто зазначав тут, що 100% божевільний або неможливий , вони якось пропустили реальну точку. Вони стверджували, що причиною цього є той факт, що навіть найкращі компанії / послуги не можуть цього досягти.

Ну, це набагато простіше цього. Це математично неможливо .

Все має ймовірність. Можливий одночасний землетрус у всіх місцях, де ви зберігаєте ваші сервери, знищуючи їх. На жаль, це смішно невелика ймовірність, але це не 0. Усі, хто ви, Інтернет-провайдери, могли зіткнутися з одночасною терористичною / кібератакою. Знову ж таки, не дуже ймовірно, але теж не нуль. Що б ви не надали, ви можете отримати ненульовий сценарій вірогідності, який знижує всю послугу. Тому що це також не може бути на 100%.


Власне, я б пройшов повз божевільного або неможливого і назвав би це дурним. Нічого, що люди не знають, це 100%.
чотириразовий

2

Перейдіть до книги про контроль якості виробництва, використовуючи статистичні вибірки. Загальна дискусія в цій книзі, поняття якої будь-який керівник був би схильний на загальному курсі статистики в коледжі, диктує витрати, щоб перейти від 1 вилучення на тисячу, до 1 на десять тисяч до 1 на мільйон до 1 на мільярд зростає експоненціально. По суті, здатність вражати 100% часу роботи обійдеться майже в необмежену кількість коштів, на зразок кількості палива, необхідного для підштовхування предмета до швидкості світла.

З точки зору інженерної ефективності, я б відкинув вимогу як непереборної, так і необгрунтованої, що це вираз є більше бажанням, ніж справжньою вимогою. Залежно від додатків, які існують поза будь-якою програмою для створення мереж, вирішення імен, маршрутизації, дефектів, запропонованих в основі архітектурних компонентів або інструментів розробки, стає практично неможливим будь-хто гарантувати 100% часу роботи.


1

Я не думаю, що клієнт насправді вимагає 100% часу роботи або навіть 99,999% часу роботи. Якщо ви подивитеся на те, що вони описують, вони говорять про те, щоб вибрати, де вони зупинилися, якщо метеор виймає їхній центр обробки даних на місці.

Якщо вимога зовнішні люди навіть не помічають, наскільки драстичним це має бути? Чи допустимо, щоб зробити запит Ajax повторним і показувати спінер протягом 30 секунд кінцевому користувачеві?

Це такі речі, про які піклується клієнт. Якби клієнт насправді думав про точні угоди про домовленість, тоді він би знав достатньо, щоб виразити це як 99,99 або 99,999.


Якщо замовник вважає, що хоче "100% тривалості тривалості", і тоді це закінчиться у словесному договорі, ви можете затриматися, якщо він закінчиться в суді. Найкраще обговорити це і допомогти замовнику зрозуміти, що вони насправді хочуть, а не припускати, що ви знаєте, що думають.
Chris S

О, я погоджуюсь, що це потрібно прояснити до того, як він укладе контракт. Я просто кажу, що до цього потрібно підходити, оскільки клієнт не повідомляє того, чого насправді хоче, на відміну від клієнта, просить чогось смішного.
Кевін Петерсон

1

мої 2 копійки. Я відповідав за дуже популярний веб-сайт компанії «Фортуна-5», яка знімала рекламу для супер-чаші. Мені доводилося стикатися з величезними скачками в трафіку, і спосіб вирішити це - використовувати такий сервіс, як Akamai. Я не працюю в Akamai, але я вважаю їхню послугу надзвичайно хорошою. У них є власна, розумніша DNS-система, яка знає, що працює з певним вузлом / хостом, або знаходиться під великим навантаженням, або вниз, і відповідно може маршрутизувати трафік.

Акуратним у їхній службі було те, що мені не довелося робити нічого дуже складного для того, щоб копіювати вміст на серверах в моєму власному центрі обробки даних до їх центру обробки даних. Крім того, я знаю, працюючи з ними, вони активно використовували HTTP-сервери Apache.

Хоча на 100% не працює час, ви можете розглянути такі варіанти розповсюдження вмісту по всьому світу. Як я зрозумів речі, Akamai також мав можливість локалізувати значення трафіку, якщо я був у штаті Мічиган, я отримав вміст із сервера Мічиган / Чикаго, і якщо я був у Каліфорнії, я нібито отримав вміст із сервера, що базується в Каліфорнії.


-1 тому, що це практична відповідь, але зовсім не корисна. На всі запитання на цьому веб-сайті можна було б відповісти «найняти когось іншого, щоб це зробити», але ми не тут.
Ів Юнкерра

Дозволю собі не погодитися. "Не корисний взагалі?" Для мене це було, безумовно, корисно, і всупереч вашому коментарю "найміть когось іншого робити", я гадаю, з ваших міркувань хлопець повинен викопати власний волоконно-оптичний кабель і спроектувати власні комутатори, а не купувати їх теж? Ти серйозно, Іве? Ви звучаєте як хтось, хто багато часу не провів у сфері ІТ.
Кіло

0

Замість виходу з ладу за межами сайту просто запустіть програму з двох місць одночасно, внутрішньої та зовнішньої. І синхронізуйте дві бази даних ... Потім, якщо внутрішня знизиться, внутрішні люди все ще зможуть працювати, а зовнішні люди все ще зможуть користуватися додатком. Коли внутрішній повернеться в Інтернет, синхронізуйте зміни. Ви можете мати дві записи DNS для одного доменного імені або навіть мережевий маршрутизатор з круглою роботою.


0

Для сайтів, що розміщуються із зовнішньої сторони, найближчим часом до 100% часу роботи буде розміщення вашого веб-сайту в App Engine Google та використання його великої сховища даних реплікації (HRD) , яка автоматично реплікує ваші дані у щонайменше трьох центрах обробки даних у режимі реального часу. Аналогічно, передні сервери App Engine автоматично масштабують / копіюють для вас.

Однак, навіть з усіма ресурсами Google та найдосконалішою платформою у світі, гарантія безперебійного користування додатком App Engine складає лише "99,95% часу в будь-якому календарному місяці".


0

Простий і прямий: Anycast

http://en.wikipedia.org/wiki/Anycast

Це те, що використовує cloudflare, google та будь-яка інша велика компанія для надмірної, низької затримки, переходу на континентальний провал / балансування.

Але також майте на увазі, що не можна мати 100% часу роботи, і що витрати з 99,999% на 99,9999% значно більші.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.