![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bwY29X/btrLDH9Igfr/1l64CUtXgwXxNRXPG680lK/img.png)
ZOOKEEPER 는 왜 인스턴스가 여러개 올라갈까?? 를 알아보기 위해 공부하기!! Zookeeper: 분산된 어플리케이션들의 분산 코디네이터 서비스 zookeeper는 분산된 어플리케이션들에 사용되는 분산되어 있고, 오픈소스인 코디네이터로, 분산된 어플리케이션들이 동기화된 고레벨의 서비스, 구성 유지, 그룹, 네이밍을 할 수 있도록 한다. 프로그래밍하기 쉽게 되어 있으며 친숙한 트리구조의 파일시스템의 데이터 모델을 사용한다. zookeeper의 목적은 분산 어플리케이션들의 코디네이터 서비스 도입 책임을 완화시키는 것에 있다. 예를 들어 여러개 노드에서 프로세스를 하는 분산된 어플리케이션들은 부분적으로 실패할 가능성을 고려해야 하는데, 이러한 실패를 효율적으로 처리하기 위해서 필요하다. Design G..
variables.tf - 변수타입과 디폴트값을 설정 - child module에서도 사용할 수 있음 # variable.tf variable "example" {} - Terraform 모듈 어디에서도 example 이라는 변수에 접근가능함 이 variable에 값을 넣는 법 1. terraform plan 이나 terraform apply 할 때 -var 옵션을 넣는다 2. -var-file 옵션으로 하나 이상의 .tfvars 파일을 넣는다 (한번에 많은 변수에 값을 넣을 때 사용) 3. terraform.tfvars 또는 .auto.tfvars 파일을 생성한다 (2번과 똑같이 취급되나, 자동으로 로드됨) 4. child module 의 경우, module 블럭 안에 변수값을 넣는다 - default..
필요한 것 launch_configuration, launch_template 또는 mixed_instances_policy 가 필요 예제는 terraform docs에서 가져옴 Launch Tmeplate 과 함께 사용 resource "aws_autoscaling_group" "bar" { availability_zones = ["us-east-1a"] desired_capacity = 1 max_size = 1 min_size = 1 launch_template { id = aws_launch_template.foobar.id version = "$Latest" # 또는 aws_launch_template.example.latest_version } } availability zones (옵션) -..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/qsdvt/btrJm8touL9/7crRyxS4mTrsYa587M5XRk/img.png)
TLS 란? - Transport Layer Security (전송계층 보안) - 어플리케이션 계층의 데이터를 암호화 / 복호화 - TCP 443 TLS의 특징 1. 암호화 ( Encryption ) 2. 인증 ( Authentication ) 3. 무결성 ( Integrity ) Certificates Public key Private key server.crt server.pem client.crt client.pem server.key server-key.pem client.key client-key.pem
CNI 의 뜻 컨테이너 네트워크 인터페이스의 약자로 CNI이다. CNI 의 목적 컨테이너간의 네트워크 제어 -> 컨테이너 런타임과 오케스트레이션 툴(ex k8s) 사이의 네트워크 계층을 공통적으로 구현하기 위해 만들어진 공통 인터페이다 -> 위의 목적을 구현하기 위해 다양한 CNI 가 존재한다. kubernetes에서 CNI 설정 /etc/cni/net.d 에서 cni를 설정한다. default로는 kubenet이라는 아주 제한된 기능의 cni를 제공하지만, 이 cni로는 기능이 충분하지 않으므로 third party의 CNI를 사용한다. CNI 별 기능 비교적 많은 기능을 제공하는 cni 플러그인에는 Calico나 Weave Net이 있다. 그리고 기능이 별로 없는 cni플러그인은 flannel이 있다..
대두된 배경 인스턴스가 많아지면서 이를 관리하는 일과 인스턴스 사이의 오버헤드가 복잡해져 이를 해결하기 위해 구상된 아키텍쳐이다. 기존 문제점을 해결한 방법 1. Application 보다는 Infrastructure Layer에서 service 관리 2. 서비스(인스턴스)간 통신을 추상화: 내부 네트워크 추적, 제어 등 가능케함 3. Envoy Proxy사용 Servie Mesh의 기능 서비스의 매트릭 수집 추적 TLS 서비스 디스커버리 로드밸런싱 동적 요청 라우팅 서킷브레이킹 타임아웃 구현방법 proxy를 sidecar로 서비스마다 배치함 서비스 메쉬관련 Tool Istio Linkerd Conduit
Istio 작동방식은? 1. 클라이언트가 특정 포트로 요청을 보낸다. 2. K8s LoadBalancer 가 그 포트에서 요청을 받아서 해당 클러스터의 worker에게 전달한다. 3. 클러스터안에서 해당 요청은 Istio IngressGateway Service (LB의 전달을 기다리고 있음) 로 라우트된다. 4. Istio IngressGateway Service (K8s service) 는 해당 요청을 Istio IngressGateway Pod (K8s deployment)으로 전달한다. 5. Istio IngressGateway Pod은 해당 요청을 해당 어플리케이션(k8s pod)의 서비스(k8s service)로 라우팅한다. 6. 마지막으로 해당 어플리케이션의 서비스는 해당 요청을 해당 어플리..
middleware - request와 함께 작동하는 함수 (요청이 처리되기전 작동함) - response를 반환하기 전에도 작동 call next - request를 패래미터로 받음 - 그런다음, request를 path operation에 전달 - response를 상응하는 path operation에 반환 DB dependency - 함수를 사용하여 한개의 request가 db에 한 thread이상 상호작용을 할 수 있음 - 그래서 한 request에 대해서 의존성을 주입하여 각각의 request가 자기자신만의 DB connection을 가질 수 있음 SQLalchemy에서 session - DB 파라미터에 타입을 선언함 SessionLocal - 데이터베이스 세션 - 생성할때 session mak..