Коментари

Копиране на връзка Цитирайте отговор

тежестите

pierresouchay коментира 6 юни 2018 г.

Описание на характеристиката

Когато използвате Consul за откриване на бекендове за обратни прокси сървъри, сега има начин да се познае теглото на дадена бекенда.

Тъй като бекендите се изпълняват на различни възли, би било хубаво да стандартизирам в Консул колко обаждания се пренасочват към даден екземпляр, като по този начин всички прокси и библиотеки могат да използват едни и същи правила. В исторически план някои прокси/библиотеки използват тагове, други започват да използват Meta в екземпляри, но всичко това е бъркотия.

Някои прокси използват DNS SRV (например: HaProxy), някои други HTTP API, би било хубаво да имаме едни и същи данни и за двете.

Предлагам следното:

  1. Добавете метаданни в Услуги със специфична семантика по отношение на балансирането на натоварването
  2. Върнете данните в HTTP и SRV DNS интерфейси
  3. Разрешаване на използването на състоянието на предупреждението в DNS отговор за динамично модифициране на теглото (по този начин ще позволи на тежко натоварените услуги да получават по-малко трафик, например когато получават твърде много заявки и връщат състояние на предупреждение)

Предложение за изпълнение

Когато дефинирате услуга, използвайте следната незадължителна услуга Meta:

Когато DNS връща SRV заявки, за всеки SRV запис, прилагайте съответните _dns_ _weight и _dns_ _prio за попълване на DNS SRV записи

Това може да се приложи много лесно и би опростило много оперативната съвместимост на системите за балансиране на натоварването.

По желание бихме могли да използваме подобни мета данни на ниво възел (дефинирани в агента), за да умножим тези тегла въз основа на характеристиките на възела (по този начин услугите не би трябвало да знаят какъв голям/мъничък екземпляр те изпълняват) - но това може да е подобрение за друг PR.

Какво мислиш?

Готов съм да приложа това, ако Hashicorp обмисли да го включи.