Kanári telepítések a Consul Service Mesh segítségével
Ez a blogsorozat negyedik bejegyzése, amely a Consul szolgáltatás hálójának új funkcióit emeli ki.
A múlt hónapban a HashiConf EU-n bejelentettük a Consul 1.6.0-t. Ez a kiadás új, 7. rétegű forgalomkezelési képességeket kínál, beleértve az L7 forgalom felosztását, amely lehetővé teszi a kanári szolgáltatás telepítését.
Ez a blogbejegyzés végigvezeti a forgalom két felfelé irányuló szolgáltatás közötti felosztásához szükséges lépéseket.
»Kanári telepítések
A Kanári telepítés a szolgáltatás új verziójának telepítésének technikája, az üzemszünetek elkerülése mellett. A kanári telepítés során a forgalom kis százalékát a szolgáltatás új verziójára helyezi át, miközben figyelemmel kíséri a szolgáltatás viselkedését. Kezdetben a lehető legkevesebb forgalmat küldi az új szolgáltatáshoz, miközben továbbra is értelmes teljesítményadatokat generál. Amint egyre nagyobb bizalmat szerez az új verzió iránt, lassan növeli az általa kezelt forgalom arányát. Végül a kanári verzió az összes forgalom 100% -át kezeli, ekkor a régi verzió teljesen megszüntethető, majd eltávolítható a környezetből.
A szolgáltatás új verzióját kanári verziónak hívják, hivatkozásként a „kanári szénbányában”.
Az új szolgáltatás helyes működésének meghatározásához megfigyelhetőnek kell lennie az alkalmazásban. A mutatók és a nyomkövetési adatok lehetővé teszik annak megállapítását, hogy az új verzió a várt módon működik, és nem dob hibákat. A Blue/Green telepítésekkel szemben, amelyek egy lépésben áttérnek a szolgáltatás új verziójára, a Kanári telepítések fokozatosabb megközelítést alkalmaznak, amely segít megvédeni a szolgáltatási hibákatól, amelyek csak egy adott terhelésnél jelentkeznek.
»Előfeltételek
Az ebben az útmutatóban szereplő lépések a Consul szolgáltatásháló szolgáltatását, a Consul Connect szolgáltatást használják. Ha még nem ismeri, akkor az útmutató követésével többet tudhat meg.
Létrehoztunk egy bemutató környezetet az itt leírt lépésekhez. A környezet a Dockerre és a Docker Compose-ra támaszkodik. Ha még nem rendelkezik a Docker és a Docker Compose szolgáltatással, telepítheti őket a docker telepítési oldaláról.
»Környezet
A használni kívánt bemutató architektúra 3 szolgáltatásból, egy nyilvános webszolgáltatásból, az API szolgáltatás két verziójából és egy Consul szerverből áll. A szolgáltatások kétszintű alkalmazást alkotnak; a webszolgáltatás elfogadja a bejövő forgalmat, és upstream hívást kezdeményez az API szolgáltatás felé. Elképzelheti, hogy az API szolgáltatás 1. verziója már fut a termelésben és a forgalom kezelésében, és hogy a 2. verzió tartalmaz néhány olyan módosítást, amelyet egy kanári telepítésben szeretne szállítani.
Az API szolgáltatás 2. verziójának telepítéséhez:
- Indítsa el a v2 API szolgáltatás példányát a termelési környezetben.
- Állítson be forgalomfelosztást, hogy megbizonyosodjon arról, hogy a v2 először nem fogad forgalmat.
- Regisztrálja a v2 verziót, hogy a konzul forgalmat küldhessen rá.
- Lassan állítsa át a forgalmat a v2-re és egy utat a v1-től, amíg az új verzió nem kezeli az összes forgalmat.
»A bemutató környezet elindítása
Először klónozza a repót, amely tartalmazza a blogbejegyzés forrását és példáit.
Változtassa a könyvtárakat a klónozott mappába, és indítsa el a demó környezetet a docker-compose felállításával. Ez a parancs az előtérben fog futni, ezért futtatása után új terminálablakot kell nyitnia.
A következő szolgáltatások automatikusan elindulnak a helyi Docker környezetben, és regisztrálják magukat a Consulnál. Consul Server webszolgáltatás Envoy oldalkocsis API szolgáltatás 1-es verzióval Envoy oldalkocsival
A Consul konfigurációját a consul_config mappában, a szolgáltatás definíciókat pedig a service_config mappában láthatja.
Miután minden készen áll, megtekintheti a regisztrált szolgáltatások állapotát a Consul felhasználói felületén: http: // localhost: 8500. Minden szolgálatnak át kell esnie az egészségügyi ellenőrzésen.
Hajlítsa be a web-végpontot, hogy megbizonyosodjon arról, hogy a teljes alkalmazás fut-e. Látni fogja, hogy a webszolgáltatás választ kap az API szolgáltatás 1. verziójától.
Kezdetben az API szolgáltatás 2. verzióját kívánja telepíteni a gyártásba anélkül, hogy forgalmat küldene rá, hogy megbizonyosodjon arról, hogy az új környezetben jól teljesít. Ha megakadályozza a forgalom áramlását a 2. verzióba, amikor regisztrálja, akkor előzetesen beállítja a forgalom felosztását, hogy forgalmának 100% -át az API szolgáltatás 1., 0% -át pedig a még nem telepített 2. verzióra irányítsa. a forgalom a Consul Service Meshbe épített új Layer 7 funkciókat használja.
»Forgalomfelosztás konfigurálása
A forgalom felosztása (a Consul 1.5 és 1.6-ban bevezetett) konfigurációs bejegyzéseket használ a szolgáltatások és az Envoy proxyk központosított konfigurálásához. Három konfigurációs bejegyzést kell létrehoznia a forgalom felosztásának engedélyezéséhez: Az API szolgáltatás alapértelmezett szolgáltatásai a protokoll HTTP-re állításához. Service Splitter, amely meghatározza a forgalom felosztását a szolgáltatás alhalmazai között. Service Resolver, amely meghatározza, hogy mely szolgáltatási példányok az 1. és a 2. verzió.
»A szolgáltatás alapértelmezéseinek konfigurálása
A forgalom felosztása megköveteli, hogy az upstream alkalmazás HTTP-t használjon, mert a felosztás a 7. rétegben történik (kérésenként kérésre). Azt fogja mondani a Consulnak, hogy az upstream szolgáltatása HTTP-t használ, ha a protokollt az API szolgáltatás „szolgáltatás alapértelmezett” konfigurációs bejegyzésében állítja be. Ez a konfiguráció már a demo környezetében található az l7_config/api_service_defaults.json címen. Ez így néz ki.
A fajta mező az Ön által definiált konfigurációs bejegyzés típusát jelöli; ebben a példában a szolgáltatás alapértelmezett értékei. A név mező meghatározza, hogy mely szolgáltatásra vonatkozik a szolgáltatás alapértelmezett konfigurációs bejegyzése. (Ennek a mezőnek meg kell egyeznie a Consulban regisztrált szolgáltatás nevével, ebben a példában api.) A protokoll http .
A konfiguráció alkalmazásához használhatja a Consul CLI-t vagy az API-t. Ebben a példában a HTTP API konfigurációs belépési végpontját fogjuk használni, amely a http: // localhost: 8500/v1/config címen érhető el. A config alkalmazásához használjon PUT műveletet a következő parancsban.
A szolgáltatás alapértelmezett konfigurációs bejegyzéseiről a dokumentációban talál további információt
»A Service Resolver konfigurálása
A következő konfigurációs bejegyzés, amelyet hozzá kell adnia, a Service Resolver, amely lehetővé teszi annak meghatározását, hogy a Consul szolgáltatásfelfedezése hogyan választja ki a szolgáltatáspéldányokat egy adott szolgáltatásnévhez.
A Service Resolvers lehetővé teszi a szolgáltatások részhalmazainak szűrését a szolgáltatás regisztrációjában szereplő információk alapján. Ebben a példában a „v1” és „v2” részhalmazokat fogjuk meghatározni az API szolgáltatáshoz, annak regisztrált metaadatai alapján. Az API szolgáltatás 1. verziója a demóban már regisztrálva van a v1 címkékkel és a szolgáltatás metaadatainak verziója: 1. Amikor regisztrálja a 2. verziót, megkapja a v2 címkét és a metaadat verziót: 2. A név mező a szolgáltatás nevére van állítva a Consul szolgáltatáskatalógusban.
A szolgáltatásmegoldó már a demo környezetében van az l7_config/api_service_resolver.json címen, és így néz ki.
Alkalmazza a szolgáltatásfeloldó konfigurációs bejegyzését az előző példában használt módszerrel.
A szolgáltatásmegoldókkal kapcsolatos további információk a dokumentációban találhatók.
»Szolgáltatásfelosztás konfigurálása - A forgalom 100% -a az 1. verzióhoz
Ezután létrehoz egy konfigurációs bejegyzést, amely felosztja a forgalom százalékos arányát az imént megadott upstream szolgáltatás részhalmazaihoz. Kezdetben azt szeretné, hogy az elosztó az összes forgalmat az upstream szolgáltatás v1-re küldje, ami megakadályozza, hogy bármilyen forgalmat elküldjön a v2-re, amikor regisztrálja azt. Gyártási szcenárióban ez időt adna arra, hogy a valós forgalom elküldése előtt megbizonyosodjon arról, hogy a szolgáltatás v2-e a várt módon működik-e és működik-e.
A Service Splitting konfigurációs bejegyzése egyfajta szolgáltatás-osztó. A neve határozza meg, hogy melyik szolgáltatáson fog működni az osztó. A hasítások mezője egy tömböt tartalmaz, amely meghatározza a különböző osztásokat; ebben a példában csak két hasadás van; azonban lehetséges összetettebb forgatókönyvek konfigurálása is. Minden felosztásnak van egy súlya, amely meghatározza az egyes szolgáltatási részhalmazokra elosztandó forgalom százalékos arányát. Az összes osztás teljes súlyának 100-nak kell lennie. A kezdeti felosztáshoz az összes forgalmat a v1 szolgáltatási részhalmazra kell irányítani.
A szolgáltatásfelosztó konfigurációja már létezik a bemutató környezetében az l7_config/api_service_splitter_100_0.json címen, és így néz ki.
Alkalmazza ezt a konfigurációs bejegyzést egy újabb PUT-kérelem kiadásával a Consul konfigurációs belépési végpontjára a HTTP API-n.
Ez a forgatókönyv a Kanári-telepítés első szakasza; most elindíthatja szolgáltatásának új verzióját anélkül, hogy azt az upstream terheléselosztó csoport azonnal használná.
»Indítsa el és regisztrálja az API szolgáltatás 2. verzióját
Ezután elindítja az API szolgáltatás kanári verzióját (2. verzió), és regisztrálja azt a beállításokkal, amelyeket a konfiguráció bejegyzéseiben a felbontáshoz és a felosztáshoz használt. Indítsa el a szolgáltatást, regisztrálja és indítsa el a connect oldalkocsit a következő paranccsal. Ez a parancs az előtérben fog futni, ezért futtatása után új terminálablakot kell nyitnia.
Ellenőrizze a szolgáltatás és a proxy regisztrációját, ha új v2 címkéket keres az API szolgáltatás és az API oldalkocsis proxyk mellett a Consul kezelőfelületén.
»Szolgáltatásfelosztás konfigurálása - 50% 1. verzió, 50% 2. verzió
Most, hogy a 2. verzió fut és regisztrálva van, a következő lépés a forgalom fokozatos növelése azáltal, hogy megváltoztatja a v2 szolgáltatás részhalmaz súlyát a szolgáltatásosztó konfigurációjában. Növeljük a v2 szolgáltatás súlyát 50% -ra. Emlékezik; Az összes szolgáltatási súlynak 100-nak kell lennie, így a v1 részhalmaz súlyát is 50-re csökkentheti. A konfigurációs fájl már a demo környezetében található az l7_config/api_service_splitter_50_50.json címen, és így néz ki.
Alkalmazza a konfigurációt a korábbiak szerint.
Miután megnövelte a forgalom százalékát v2-re, göndörítse újra a webszolgáltatást. Látni fogja, hogy a forgalom egyenlően oszlik el a szolgáltatás mindkét alcsoportja között.
Ha valóban kanári telepítést hajtott végre, akkor sokkal kisebb százalékot szeretne választani a kezdeti felosztáshoz: a lehető legkisebb százalékot, amely megbízható adatokat szolgáltat a szolgáltatás teljesítményéről. Ezután lassan növeli a százalékos arányt az ismétléssel ezen a lépésen, miközben bizalmat szerzett a szolgáltatás 2. verziójában. Néhány vállalat végül az előre beállított teljesítményküszöbök alapján dönthet úgy, hogy automatizálja a felfutást.
»Szolgáltatásfelosztás konfigurálása - 100% 2. verzió
Miután megbizonyosodott arról, hogy a szolgáltatás új verziója megfelelően működik, a forgalom 100% -át elküldheti a 2-es verzió részhalmazába. A 100% -os felosztás a 2. verzióra így néz ki.
Alkalmazza egy hívással a HTTP API konfigurációs végpontra, ahogyan korábban.
Most, amikor ismét göndöríti a webszolgáltatást. A forgalom 100% -a a 2. verzió részhalmazába kerül.
Általában éles környezetben most eltávolítaná az 1-es verziójú szolgáltatást, hogy felszabadítsa a fürt kapacitását. Gratulálunk, most befejezte szolgáltatása 2. verziójának telepítését.
»Takarítson
A létrehozott tárolók és hálózatok leállításához és eltávolításához kétszer futtatja le a docker-compose parancsot: egyszer az összes futtatott docker-írási parancsra. Mivel a második írási parancsban létrehozott konténerek az első parancsban létrehozott hálózaton futnak, a környezeteket abban az ellentétes sorrendben kell lebontania, amelyben létrehozta őket.
Először leállítja és eltávolítja az API szolgáltatás v2 számára létrehozott tárolókat.
Ezután leállítja és eltávolítja a tárolókat és a hálózatot, amelyet az első dokkoló írási paranccsal hozott létre.
»Összegzés
Ebben a blogban végigvezettük Önt a Kanári-telepítések forgalomfelosztással és felbontással történő végrehajtásához szükséges lépéseken. A kanári telepítésekről szóló részletesebb információkért Danilo Sato kiváló cikket írt Martin Fowler honlapján.
Az 1.6.0-s verzió fejlett L7 forgalomkezelése nem korlátozódik a felosztásra. Tartalmazza a HTTP alapú útválasztást és a szolgáltatás felbontásának új beállításait is. Ezek a funkciók együttesen lehetővé teszik a kifinomult forgalomirányítást és a szolgáltatás feladatátvételt. Az összes új L7 forgalomkezelési beállítás megtalálható a dokumentációban. Ha messzebbre szeretne lépni, egyesítse az útmutatóval és az L7 Megfigyelhetőséggel, hogy megvalósítsa az új szolgáltatás telepítésekhez szükséges megfigyelés egy részét.
Kérjük, ne feledje, hogy a Consul 1.6 RC nem alkalmas gyártási telepítésekre. Nagyra értékeljük a GitHub-kérdéseinkben kapott esetleges visszajelzéseket vagy hibabejelentéseket, és szívesen felteszünk kérdéseket az új közösségi fórumunkban.
- E-mail marketing szolgáltatás fogyás; Karcsúsító központok FormGet
- Azért, hogy fogyni akarja a büntetőjogi felelősséget - Orosz Szövetségi Vámhivatal
- Kanári betegség
- Cryoskin vélemények Olvassa el a
- Ügyfélszolgálat EatingWell