728x90
λ°μν
14μ₯ μ κ·Έλ μ΄λμ λ‘€λ°±μ μ΄μ©ν μ λ°μ΄νΈ μλν
14.1 λ컀λ₯Ό μ¬μ©ν μ ν리μΌμ΄μ μ κ·Έλ μ΄λ νλ‘μΈμ€
λ°°ν¬ μ£ΌκΈ°λ μ ν리μΌμ΄μ μ λ²μ μ μ μΈνκ³ μλ 4κ°μ§λ₯Ό κ³ λ €ν΄μΌ νλ€.
A. μμ‘΄ λͺ¨λμ μ λ°μ΄νΈ
B. μ ν리μΌμ΄μ μ½λλ₯Ό μ»΄νμΌνλ λ° μ¬μνλ SDK μ λ°μ΄νΈ
C. μ ν리μΌμ΄μ μ΄ λμνλ νλ«νΌμ μ λ°μ΄νΈ
D. μ΄μ체μ μ λ°μ΄νΈ
- μ ν리μΌμ΄μ μ λ³κ²½μ΄ μλλΌλ λ§€λ¬ μ λ²μ μ λ°°ν¬ν΄μΌ νλκ²μ λΆλ΄μ€λ¬μ΄ μΌμ΄λ€.
- νμ§λ§, μ£ΌκΈ°μ μΈ λ°°ν¬λ₯Ό μλννλ©΄ λΉλμ μ λ’°κ°μ΄ μκΈ°κ³ , λ€μ λ°°ν¬ μ£ΌκΈ°λ₯Ό κΈ°λ€λ¦¬μ§ μκ³ λ μμ μ΄ λλ μ κΈ°λ₯μ λ°λ‘ λ°°ν¬μ ν¬ν¨μν¬ μ μλ€.
- λΉλμ λν μ λ’°κ°μ μ±κ³΅μ μΈ λ°°ν¬κ° κ³μ λμ΄μΌλ§ μμ μ μλ€.
- μ΄ λ μ€μν κ²μ μ ν리μΌμ΄μ ν¬μ€ 체ν¬μ΄κ³ , ν¬μ€ μ²΄ν¬ μμ΄λ μ ν리μΌμ΄μ μ΄ μκΈ° μ볡μ±μ κ°μ§ μ μκ³ μμ ν μ λ°μ΄νΈμ λ‘€λ°±λ λΆκ°λ₯νλ€.
$ docker compose -f docker-compose.yml -f prod.yml config > stack.yml
$ vi stack.yml
name: numbers
services:
numbers-api:
deploy:
replicas: 6
resources:
limits:
cpus: 0.5
memory: "78643200"
image: diamol/ch08-numbers-api
networks:
app-net: null
numbers-web:
deploy:
mode: global
resources:
limits:
cpus: 0.75
memory: "157286400"
environment:
RngApi__Url: <http://numbers-api/rng>
image: diamol/ch08-numbers-web
networks:
app-net: null
ports:
- mode: host
target: 80
published: "80"
protocol: tcp
networks:
app-net:
name: numbers-prod
λ컀 μ€μμμλ μ΄λ€ λ°©μμΌλ‘ μλΉμ€κ° λ°°ν¬λ μ§ κ²°μ ν μ μλ μλΉμ€ λͺ¨λκ° μλ€.
- global
- ν΄λ¬μ€ν° λ΄μ λͺ¨λ λ Έλμ μλΉμ€μ μμ μ νλμ© λ°°ν¬νλ€.
- μ¦, λ Έλμ μλ§νΌ μλΉμ€μ μΈμ€ν΄μ€κ° μμ±λλ€.
- ν λ Έλμ λ¬Έμ κ° λ°μνλλΌλ λ€λ₯Έ λ Έλμμ μλΉμ€κ° κ³μ μλνλ€.
- λͺ¨λ λ Έλμ λΆνκ° κ³ λ₯΄κ² λΆμ°λλ€.
- κ·Έλ¬λ, λΆνμνκ² μλΉμ€κ° λ§μ΄ λ°°ν¬λ μ μλ€.
- replicated
- μ¬μ©μκ° μ§μ μλΉμ€μ μΈμ€ν΄μ€ μλ₯Ό μ§μ νλ€.
- μ€μΌμ€λ¬κ° μ§μ λ μλ§νΌμ μΈμ€ν΄μ€λ₯Ό ν΄λ¬μ€ν° λ΄μ λ Έλμ λΆμ°νμ¬ λ°°ν¬νλ€.
- νμν λ§νΌμ μΈμ€ν΄μ€λ§ μμ±νμ¬ μμμ ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μλ€.
- κ·Έλ¬λ, μΈμ€ν΄μ€ μλ₯Ό μ§μ κ΄λ¦¬ν΄μΌνλ€.
- κΈ°λ³Έμ μΌλ‘ λ컀 μ€μμμλ replicated λ‘ λμνλ€.
14.2 μ΄μ νκ²½μ μν λ‘€λ§ μ λ°μ΄νΈ μ€μ νκΈ°
λ‘€λ§ μ λ°μ΄νΈλ?
$ docker compose -f docker-compose.yml -f prod.yml -f prod-healthcheck.yml -f v2.yml --log-level ERROR config > stack.yml
$ docker stack deploy -c stack.yml numbers
$ docker stack ps numbers
- λ‘€λ§ μ λ°μ΄νΈλ κΈ°μ‘΄ 컨ν μ΄λλ₯Ό λ¨Όμ μ’ λ£μν€κ³ μλ‘μ΄ μ»¨ν μ΄λλ₯Ό μ€ννλ λ°©μμ΄λ€.
- κΈ°μ‘΄ 컨ν μ΄λκ° νΈμ€νΈ μ»΄ν¨ν°μ ν¬νΈλ₯Ό κ³μ μ°κ²°νκ³ μλ€λ©΄, μ 컨ν μ΄λλ₯Ό μ€νν μ μκΈ° λλ¬Έμ΄λ€.
- λ ν리카λ νλμ© κ΅μ²΄λλ©°, μ 컨ν μ΄λκ° μ μ μ€ν νμΈμ΄ μλ£λ ν λ€μ 컨ν μ΄λ μ λ°μ΄νΈλ₯Ό μ§ννλ€.
- μ 컨ν μ΄λκ° μ μμ μΌλ‘ μμλμ§ μμΌλ©΄ μ 체 μ λ°μ΄νΈκ° μ€λ¨λλ€.
λ컀 μ€μμμ λ‘€λ§ μ λ°μ΄νΈλ₯Ό μ μ΄νκΈ° μν΄ μ»΄ν¬μ¦ νμΌμ deploy νλͺ©μμ μ€μ ν μ μλ€.
numbers-api:
deploy:
update_config:
parallelism: 3
monitor: 60s
failure_action: rollback
order: start-first
- parallelism
- ν λ²μ κ΅μ²΄νλ λ ν리카μ μ
- κΈ°λ³Έκ° 1
- monitor
- λ€μ 컨ν μ΄λ κ΅μ²΄λ‘ λμ΄κ°κΈ° μ μ μλ‘ μ€νν 컨ν μ΄λμ μ΄μ μ¬λΆλ₯Ό λͺ¨λν°λ§νλ μκ°
- κΈ°λ³Έκ° 0
- ν¬μ€ μ²΄ν¬ μ€μ μ ν¬ν¨ν μ΄λ―Έμ§μ κ²½μ° μ€μ κ°μ λλ €μΌ λ¨.
- monitor μκ°μ΄ κΈΈμλ‘ λ‘€λ§ μ λ°μ΄νΈμ μ λ’°μ±μ΄ μ¦κ°νλ€.
- failure_action
- monitorμ μ€μ ν μκ° μ΄λ΄μ ν¬μ€ 체ν¬κ° μ€ν¨νκ±°λ 컨ν μ΄λκ° μ€νλμ§ μμ λ‘€λ§ μ λ°μ΄νΈκ° μ€ν¨ν κ²½μ°μ μ‘°μΉ
- κΈ°λ³Έκ°μ μ λ°μ΄νΈ μ€μ§.
- order
- μλΉμ€ μ λ°μ΄νΈ ν λ κΈ°μ‘΄ 컨ν μ΄λλ₯Ό μ κ±°νκ³ μλ‘μ΄ μ»¨ν μ΄λλ₯Ό μμ±νλ μμλ₯Ό μ μνλ μ΅μ .
- κΈ°λ³Έκ° stop-first
- μλ‘μ΄ λ ν리카λ₯Ό μμ±νκΈ° μ μ κΈ°μ‘΄ λ ν리카λ₯Ό λ¨Όμ μ€μ§.
14.3 μλΉμ€ λ‘€λ°± μ€μ νκΈ°
- λ컀 μ€μμ λ°λ‘ λ‘€λ°± λͺ λ Ήμ΄λ μ‘΄μ¬νμ§ μλλ€.
- λ‘€λ°±μ μ λ°μ΄νΈ κ³Όμ μμ μ€λ₯λ₯Ό μΌμΌμΌ°μλ μνλλ€.
- μ ν리μΌμ΄μ μ μ΄μ μνλ‘ λλ리λ κ²μ μλΉμ€ λ¨μλ‘ μ΄λ£¨μ΄ μ§λ€.
numbers-api:
deploy:
rollback_config:
parallelism: 6
monitor: 0s
failure_action: continue
order: start-first
- start-first
- κΈ°μ‘΄ λ λΈλ¦¬μΉ΄ μ’ λ£λ₯Ό μ κ²½ μ°μ§ μκ³ λ¨Όμ μ λ ν리카λ₯Ό μ€ν
- monitor
- κΈ°λ³Έκ° 0
- λ‘€λ°±μ΄ μ€ν¨νλλΌλ λ€μ λ ν리카λ₯Ό κ΅μ²΄ν κ²μ΄λ―λ‘ λͺ¨λν°λ§ μκ°μ΄ λΆνμνλ€.
14.4 ν΄λ¬μ€ν°μ μ€λ¨ μκ°
- 컨ν μ΄λ μ€μΌμ€νΈλ μ΄μ λꡬλ μ¬λ¬ λμ μ»΄ν¨ν°λ₯Ό λ¬Άμ΄ νλμ ν΄λ¬μ€ν°λ‘ λ§λλ κ²μ΄λ€.
- νμ§λ§, κ²°κ΅ μ€μ 컨ν μ΄λλ₯Ό μ€ννλ κ²μ κ°κ°μ μ»΄ν¨ν°μ΄κΈ° λλ¬Έμ μ€λ¨ μκ°μ΄ λ°μν μ μλ€.
λλ μΈ λͺ¨λ(drain mode)
- λ Έλλ₯Ό μ μ§λ³΄μ λͺ¨λλ‘ μ ννμ¬ μλΉμ€μ λ―ΈμΉλ μν₯μ μ΅μννλ©΄μ λ Έλλ₯Ό μμ νκ² μ κ±°νκ±°λ μ λ°μ΄νΈνκΈ° μν λͺ©μ .
- λλ μΈ λͺ¨λλ‘ μ€μ λ λ Έλλ μλ‘μ΄ μμ μ λ°μ§ μκ³ , κΈ°μ‘΄μ μ€ν μ€μ΄λ μμ λμ μμ°¨μ μΌλ‘ μ’ λ£.
- 맀λμ λ Έλμ κ²½μ°, ν΄λ¬μ€ν° κ΄λ¦¬ κΈ°λ₯μ μ μ§νμ§λ§ μλ‘μ΄ μμ λΆλ°°λ μ°Έμ¬νμ§ μμ.
- λ¨, λλ μΈ λͺ¨λλ λ Έλλ₯Ό μμ ν μ κ±°νλκ²μ΄ μλ. λ Έλλ₯Ό μμ ν μ κ±°νλ €λ©΄ docker node rm λͺ λ Ήμ΄λ₯Ό μ¬μ©.
리λ 맀λμ
- ν΄λ¬μ€ν°μ μνλ₯Ό κ΄λ¦¬νκ³ , λ€λ₯Έ λ Έλμ μμ μ λΆλ°°νλ μν .
- 맀λμ λ Έλ μ€ νλκ° λ¦¬λλ‘ μ μΆ, 리λκ° κ³ μ₯ λλ©΄ λλ¨Έμ§ λ§€λμ λ Έλ μ€ νλκ° μλ‘μ΄ λ¦¬λλ‘ μ μΆ.
- 리λ 맀λμ κ° κ³ μ₯ λλλΌλ λ€λ₯Έ 맀λμ λ Έλκ° μλμΌλ‘ μν μ μν. κ°μ©μ±μ 보μ₯.
μ₯μ λ°μ μ μλ리μ€
- λͺ¨λ 맀λμ λ Έλ κ³ μ₯: ν΄λ¬μ€ κ΄λ¦¬ κΈ°λ₯μ΄ μμ€λμ΄ μλΉμ€ λ°°ν¬λ° κ΄λ¦¬κ° λΆκ°λ₯. μλ‘μ΄ λ§€λμ λ Έλλ₯Ό μΆκ°νμ¬ ν΄λ¬μ€ν°λ₯Ό 볡ꡬν΄μΌ ν¨.
- 리λκ° μλ ν λμ 맀λμ λ Έλ κ³ μ₯: λ¨μ 맀λμ λ Έλκ° λ¦¬λ μν μ μ΄μ΄λ°μ ν΄λ¬μ€ν° μ μ λμ.
- λͺ¨λ μ컀 λ Έλ κ³ μ₯: μλΉμ€ μ€νμ μν λ Έλκ° μμΌλ―λ‘ μλΉμ€κ° μ€λ¨. μλ‘μ΄ μ컀 λ Έλ μΆκ°λ₯Ό ν΅ν μλΉμ€ 볡ꡬ.
14.5 μ€μ ν΄λ¬μ€ν°μ κ³ κ°μ©μ±
- μ¬λ¬ λ°μ΄ν° μΌν°μ λΆμ°λ λ컀 μ€μ ν΄λ¬μ€ν°μμ λ€νΈμν¬ μ§μ°μΌλ‘ μΈν μ±λ₯ μ ν λ¬Έμ κ° λ°μν μ μλ€.
- νΉν, 맀λμ λ Έλμ μν¬ λ Έλ κ°μ λ€νΈμν¬ μ§μ°μ΄ μ¬κ°ν κ²½μ° ν΄λ¬μ€ν° μ±λ₯μ ν° μν₯μ λ―ΈμΉλ€.
- μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ λ°μ΄ν° μΌν°λ²Όλ‘ λ 립μ μΈ ν΄λ¬μ€ν°λ₯Ό ꡬμ±νλκ²μ΄ μ’λ€.
- κ° ν΄λ¬μ€ν°κ° λ 립μ μΌλ‘ μ΄μλλ―λ‘, ν λ°μ΄ν° μΌν°μ μ₯μ κ° λ°μνλλΌλ λ€λ₯Έ λ°μ΄ν° μΌν°μ μλΉμ€μλ μν₯μ λ―ΈμΉμ§ μλλ€.
- μΈλΆ DNS μλΉμ€λ₯Ό νμ©νμ¬ μ¬μ©μ νΈλν½μ κ°μ₯ κ°κΉμ΄ ν΄λ¬μ€ν°λ‘ λΌμ°ν νμ¬ μ¬μ©νλ©΄ λλ€.
728x90
λ°μν