Skip to content

4L 회고 / 2023-10-27 #42

@Felicette1963

Description

@Felicette1963

좋았던 것(Liked)

  • 없음

배운 것(Learned)

1. fly.io 배포 및 실습

※ 회사 업무 메일 예시
회사 업무 예시

※ nGrinder 설치
가이드: https://github.com/naver/ngrinder/wiki/Installation-Guide
설치경로: https://github.com/naver/ngrinder/releases
설치 방법
image
ⓐ 위의 폴더 구조를 만들기

$ mkdir app
$ cd app
$ mkdir ng
$ cd ng
$ mkdir controller
$ cd controller

ⓑ nGrinder 실행

$ java -jar ngrinder-controller-3.5.8.war --port=[PORT_NUMBER]

ⓒ Agent 다운로드

i) 홈페이지 접속
localhost:포트번호
image
id: admin
pw: admin

ii) Agent 다운로드
image

iii) 위의 폴더 구조 생성

$ cd app/ng/
$ mkdir ngrinder-agen
$ # 위의 하위 폴더에 tar 받기
$ cd ngrinder-agent
$ tar -xvf ngrinder-agent-3.5.8-localhost.tar

iv) 실행하기

./run_agent.sh

※ 사전 준비 hub에 docker hompage 배포 된걸 확인하기
image

① docker_compose 준비하기

  • Dockerflie 준비하기
    image

  • compose.yml

version: '2'

services:
  nginx-proxy:
    image: nginxproxy/nginx-proxy
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

  ##################
  ##### fly.io #####
  ##################

  felicette1963:
    image: [docker hub에 배포된 이미지명]
    # build: . [현재 도커 파일이 가리키는 이미지명]
    expose:
      - "80"
    environment:
      - VIRTUAL_HOST=Felicette.flyio.com
      - VIRTUAL_PORT=80
    deploy:
      mode: replicated
      replicas: 1  # https://docs.docker.com/compose/compose-file/deploy/#replicas
      resources:  # https://docs.docker.com/compose/compose-file/compose-file-v3/#resources
        limits:
          cpus: '0.05'
          memory: 50M
        reservations:
          cpus: '0.01'
          memory: 6M

※ deploy 모드 설명
참조사이트: https://docs.docker.com/compose/compose-file/deploy/#replicas

명령어 설명
mode 플랫폼에서 서비스를 실행하는 데 사용되는 복제 모델을 정의
global: 물리적 노드당 컨테이너 하나를 제공
replicated: 지정된 개수의 컨테이너를 복제하여 제공
resources 리소스는 컨테이너가 플랫폼에서 실행되도록 물리적 리소스 제약 조건을 구성하는 명령어
limits 서버 제한 설정으로 홈페이지 이용자의 메모리 / CPU 제공량을 제한하는 명령어
cpus: cpu 사용량
memory: 메모리 사용량
reservations 플랫폼은 컨테이너의 최소치 보장하는 명령어
  • hosts 설정
############
# fly.io
############

127.0.0.1 Felicette.flyio.com

#################
# github.io blog
#################
  • compose 하기
$ docker compose up -d
[+] Building 0.4s (7/7) FINISHED                                                                                                                           docker:default
 => [felicette1963 internal] load .dockerignore                                                                                                                      0.1s
 => => transferring context: 2B                                                                                                                                      0.0s
 => [felicette1963 internal] load build definition from Dockerfile                                                                                                   0.1s
 => => transferring dockerfile: 86B                                                                                                                                  0.0s
 => [felicette1963 internal] load metadata for docker.io/library/httpd:2.4                                                                                           0.0s
 => [felicette1963 internal] load build context                                                                                                                      0.1s
 => => transferring context: 4.78MB                                                                                                                                  0.1s
 => CACHED [felicette1963 1/2] FROM docker.io/library/httpd:2.4                                                                                                      0.0s
 => [felicette1963 2/2] COPY . /usr/local/apache2/htdocs/                                                                                                            0.1s
 => [felicette1963] exporting to image                                                                                                                               0.1s
 => => exporting layers                                                                                                                                              0.1s
 => => writing image sha256:d78f5e6f85f3349829eee6f4e4087db864fb70acfe8b8e26ed53d9d850084f95                                                                         0.0s
 => => naming to docker.io/library/felicette1963githubio-felicette1963                                                                                               0.0s
[+] Running 2/2
 ✔ Container felicette1963githubio-nginx-proxy-1    Started                                                                                                          0.1s
 ✔ Container felicette1963githubio-felicette1963-1  Started                                                                                                          0.1s

※ docker 추가 설정

//Container 전체 정지시키기
$ docker stop $(docker ps -a -q) 
 
//Container 전체 삭제하기
$ docker rm $(docker ps -a -q)
  • 접속 확인
    image

② 로드 테스트 실행

  • nGrinder 실행
    image
    [테스트 사이트 Start Test 하기]

  • Test 설정 예시
    image

  • Test 동작 확인 예시
    image

  • Test 동작 완료시
    image

  • Test 보고서 확인
    image

※ 하지만 위의 조건에서 평균 TPS가 50에도 못미친다. 메일의 요구 사항 조건인 평균 TPS 150을 요구하기 때문에 설정을 바꿔 줘야 한다.

③ Test Report 작성

Result

github: https://github.com/Felicette1963/Felicette1963.github.io/tree/1.0.2/compose.flyio.com

code

    deploy:
      mode: replicated
      replicas: 2  # https://docs.docker.com/compose/compose-file/deploy/#replicas
      resources:  # https://docs.docker.com/compose/compose-file/compose-file-v3/#resources
        limits:
          cpus: '0.06'
          memory: 60M
        reservations:
          cpus: '0.02'
          memory: 20M
      update_config:
        parallelism: 2
        delay: 10s
        order: stop-first
  • Test Configuration
    image

  • Report
    image

  • Action
    image

④ 재배포하기

i) docker 로그인하기

$ docker login
Authenticating with existing credentials...
Login Succeeded

ii) docker에 현재까지의 내용 build하기

$ docker build -t felicette1963/felicette1963.github.io .
[+] Building 0.2s (7/7) FINISHED                                                                         docker:default
 => [internal] load build definition from Dockerfile                                                               0.0s
 => => transferring dockerfile: 86B                                                                                0.0s
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [internal] load metadata for docker.io/library/httpd:2.4                                                       0.0s
 => CACHED [1/2] FROM docker.io/library/httpd:2.4                                                                  0.0s
 => [internal] load build context                                                                                  0.0s
 => => transferring context: 17.08kB                                                                               0.0s
 => [2/2] COPY . /usr/local/apache2/htdocs/                                                                        0.1s
 => exporting to image                                                                                             0.1s
 => => exporting layers                                                                                            0.0s
 => => writing image sha256:c7acea040b0f56605ed90e26cf8f50a9ff35921f14bb0adfbb11592805c4783a                       0.0s
 => => naming to docker.io/felicette1963/felicette1963.github.io                                                   0.0s

What's Next?
  View a summary of image vulnerabilities and recommendations → docker scout quickview

③ docker push로 build된 docker 등록하기

$ docker push felicette1963/felicette1963.github.io
Using default tag: latest
The push refers to repository [docker.io/felicette1963/felicette1963.github.io]
4e399f8328cf: Pushed
b7094d4685d5: Layer already exists
87ca57c6f4e9: Layer already exists
1343ea427053: Layer already exists
8db3e477577e: Layer already exists
cb4596cc1454: Layer already exists
latest: digest: sha256:8f1f440213a97b0eca0fc9b4d5fb78732dc5303702ddd0ba1f64004c3cdab043 size: 1577

④ 웹사이트 확인
https://felicette1963.fly.dev/
image

⑤ 답장하기

image

부족했던 것(Lacked)

  • 없음

바라는 것(Longed for)

  • 없음

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions