인프라
-
Ingress를 이용한 쿠버네티스 연결 기본 실습인프라 2022. 12. 16. 10:48
이번 포스팅은 쿠버네티스로 각 컴포넌트(frontend, backend)를 연결해본 과정에 대해 작성해보려고 한다. ※ 실습은 ubuntu 20.04 버전 on-premise 서버에서 진행했습니다. 목차 1. ingress 생성 yaml 파일 및 설명 2. ingress controller 생성 3. NodePort 생성 4. 요청 받을 deployment와 svc를 생성 5. 연결 확인 6. 알게된 점 1. ingress 생성 # ingress-example.yaml apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: ingress-example annotations: nginx.ingress.kubernetes.io/rewrite-..
-
서버 안정화를 위한 조사인프라 2022. 12. 12. 12:04
이번 포스팅은 이전의 강화학습 모델을 서빙하는 프로젝트에서 서버 이용 가능한 접속자 수를 확인하고 이를 안정화하기 위해 조사했던 것, 알게된 점들을 기록해 보려고 합니다. 서버 확장 방법 우선 서버 확장을 위한 방법을 알아보겠습니다. Scale up(수직 확장) 서버에 cpu나 Ram 등을 추가하거나 고성능의 부품으로 서버를 업그레이드 하는 방법 → 컴퓨터 한 대의 처리 능력을 높여준다. 장점 단순한 서버의 교체이므로 구현이 쉽다. 서버를 추가하는 방법이 아니기 때문에, 여러 대의 서버 보다 데이터 정합성 이슈에 자유롭다. 단점 서버 한 대에 부하가 집중되므로 장애 발생 시 영향을 받을 가능성이 커진다. 서버 운용 비용이 늘어난다. 스케일 업의 일정 수준을 넘어가는 순간, 성능 증가 폭이 미미해진다 Sc..
-
aws 인스턴스 & 도커 자동 시작인프라 2022. 12. 12. 11:01
이번 포스팅은 서버 인스턴스 실행 시 자동 실행에 관련된 포스팅입니다. 서버 인스턴스를 특정 시간대에 자동 실행되고 자동 중지될 수 있도록 해주도록 스케줄링 해주기 서버 인스턴스가 실행되면 자동으로 도커가 실행될 수 있도록 해주기 위와 같은 부분을 궁금하신 분들에게 도움이 됐으면 좋겠습니다! 서버 인스턴스 자동으로 키고 끄기 방법 1. cloudformation에서 schedule 스택을 생성해서 dynamoDB에 스케줄 되는 시간을 조정하면 원하는 시간에 인스턴스를 자동적으로 키고 끌 수 있다. 방법 2. lambda에 인스턴스를 키고 끄는 함수를 지정해두고 cloudWatch에서 특정 시간 때에 lambda함수를 해당 인스턴스에 실행해줘서 원하는 시간에 인스턴스를 키고 끌 수 있다. 위 두가지 방법 ..
-
쿠버네티스 시작인프라 2022. 12. 12. 09:21
쿠버네티스 실행 방법 kubectl이라는 명령어로 쿠버네티스를 사용할 수 있다. YAML파일을 통해 컨테이너 리소스를 생성 및 삭제할 수 있다. (더 많이 쓰이는 방법) 쿠버네티스의 컴포넌트 마스터 노드에서 API 서버(kube-apiserver), 컨트롤러 매니저(kube-controller-manager), 스케줄러(kube-scheduler), DNS서버(coreDNS) 등이 실행되고, 모든 노드에서는 오버레이 네트워크 구성을 위해 프락시와 네트워크 플러그인이 실행된다. kubelet이라는 에이전트가 모든 노드에서 실행된다. kubelet은 컨테이너의 생성, 삭제뿐만 아니라 마스터와 워커 노드 간의 통신 역할을 함께 담당한다. → 아직까지는 ‘kubelet이라는 에이전트가 모든 노드에서 기본적으로 ..
-
dockerfile 관련 정리인프라 2022. 12. 9. 14:05
이 포스팅은 dockerfile 작성 시 공부했던 내용을 정리하는 포스팅이다. Dockerfile 멀티 스테이지 하나의 Dockerfile로 이미지를 생성할 경우, 실행 파일의 크기가 너무 클 경우 두 개의 스테이지로 나눠서 필요한 실행파일만 최종 결과물에 포함 시킬 수 있다. FROM golang ADD main.go /root WORKDIR /root RUN go build -o /root/mainApp /root/main.go CMD ["./mainApp"] 위와 같은 dockerfile로 이미지를 만들 경우 실행 파일의 크기가 엄청 커지게 된다. FROM golang ADD main.go /root WORKDIR /root RUN go build -o /root/mainApp /root/main...
-
Nginx Load balancing, 도커 컨테이너 실습인프라 2022. 12. 8. 12:45
실습 내용 ip주소의 80번 포트로 들어오는 요청을 내부 3000번, 3001번, 3002번 포트로 분산시켜 주도록 하겠습니다. 컨테이너의 내부 포트는 3000포트를 개방시키고 외부 포트는 각각 3000, 3001, 3002포트와 연결시켜 줍니다. Upstream Nginx의 upstream을 이용해 요청에 대한 분배를 해줄 수 있도록 해보겠습니다. 선언 위치 /etc/nginx/sites-enabled/ 내에 새로운 파일을 만들어줍니다. (nginx.config의 http{ ... } 안에 includes /etc/nginx/sites-enabled/* 구문이 있는지 확인하고 없으면 추가해줍니다.) ☼새로운 파일을 생성하지 않고 기존에 존재하는 nginx.config 파일 내에 선언해줘도 괜찮습니다! ..
-
Nginx 개념 + 간단 실습인프라 2022. 12. 8. 09:45
개념 Nginx란? Nginx는 웹 서버 구축을 도와주는 소프트웨어이다. 서버는 정적인 데이터와 동적인 데이터를 제공해줄 수 있다. 정적인 데이터란 html, css와 같은 데이터들이고 동적인 데이터란 DB조회나 다양한 로직으로 생성된 데이터들을 뜻한다. SPA가 등장하게 되면서 이렇게 다양한 데이터들을 따로따로 보내줄 수 있도록 서버의 기능을 분리하기도 한다. 정적인 데이터는 web server가 빠르게 클라이언트에게 제공을 하고 동적인 데이터는 WAS(web application server)에 요청을 보내고 WAS가 처리한 데이터를 클라이언트에게 바로 보내준다. Nginx가 이런 web server의 구축을 도와준다. web server를 구축할 수 있는 소프트웨어로는 apache가 있다. Apac..
-
컨테이너 run 옵션 정리인프라 2022. 12. 8. 09:07
Docker image를 통해 container를 생성할 수 있다. container는 docker run 명령어를 통해 실행시킬 수 있다. 기본 옵션 i, --interactive 표준 입력(stdin)을 활성화하며, 컨테이너와 연결(attach)되어 있지 않더라도 표준 입력을 유지합니다. 보통 이 옵션을 사용하여 Bash 에 명령을 입력합니다. t, --tty TTY 모드(pseudo-TTY)를 사용합니다. Bash를 사용하려면 이 옵션을 설정해야 합니다. 이 옵션을 설정하지 않으면 명령을 입력할 수는 있지만, 셸이 표시되지 않습니다. -name 컨테이너 이름을 설정합니다. d, --detach Detached 모드입니다. 보통 데몬 모드라고 부르며, 컨테이너가 백그라운드로 실행됩니다. p, --pu..