Cloud/Cloud 공부일기

Day 60 - 부하 분산 테스트 (nGrainder)

갬미 2022. 4. 5. 23:35

오늘 배운 내용

- nGrainder를 이용한 부하분산 테스트

 


부하분산 테스트

부하분산 테스트를 위해 nginx 서버에 autoscale deployment를 붙인다

 

nginx 서버를 담당하는 deploy 를 만들고 다음 실행하기 

 

HPA yml 생성 및 실행하기

kubectl autoscale deployment nginx --cpu-percent=30 --min=1 --max=10 -o yaml --dry-run=client > nginx-hpa.yaml

 

이때 nginx deploy에 resource가 설정되지 않으면 hpa가 계속 언노운으로 떨어진다

hpa를 사용하는 경우 nginx deploy를 다음과 같이 수정한다

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: gymin97/msa-dev:nginx_v1
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m" 
        ports:
        - containerPort: 80
        volumeMounts:
        - mountPath: "/etc/nginx/"
          name: nginx-conf
          readOnly: true
      volumes:
      - name: nginx-conf
        configMap:
          name: nginx-conf

 

 

** resource 하위에 request와 limit 을 지정할 수 있다

파드가 실행 중인 노드에 사용 가능한 리소스가 충분하면, 컨테이너가 해당 리소스에 지정한 request 보다 더 많은 리소스를 사용할 수 있도록 허용된다. 그러나, 컨테이너는 리소스 limit 보다 더 많은 리소스를 사용할 수는 없다.

request = 최소 사양

limit = 최대 사양

 

컨테이너 리소스 관리

파드를 지정할 때, 컨테이너에 필요한 각 리소스의 양을 선택적으로 지정할 수 있다. 지정할 가장 일반적인 리소스는 CPU와 메모리(RAM) 그리고 다른 것들이 있다. 파드에서 컨테이너에 대한 리소

kubernetes.io

 

 

nginx 서버에 부하주기

- 직접 주는 방법

kubectl run -i --tty load-generator1 --rm --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://web.mymincloud.com; done"

직접 서버에 0.01초 간격으로 접속하여 부하를 주는 방법이다

서버 부하가 증가하고있다

 

보통 성능측정기를 더 많이 사용한다

성능측정기는 autoscale이 잘 되는지 확인하는 용도로도 많이 쓰인다

 

성능측정기 종류는 여러개가 있는데 해당 실습에서는 nGrinder를 사용한다

nGrinder를 노트북에 깔면 노트북이 뻗어버릴수있으므로 container를 이용할 예정이다

부하분산기는 controller가 있고 그 아래 여러대의 agent가 있다 실제 부하는 agent에서 발생한다

 

controller를 deployment로 만들고 - replicas = 1

agent를 deployment로 만들고 - replicas = 6


nGrainder로 부하주기

nGrinder yaml은 제공된다

yaml은 git에 올릴 예정이다

 

공식 링크가 있었던 것 같은데 일단 이곳 자료를 참고하면 될 것같다

찾으면 수정하겠다 하핫^^;

 

Kubernetes을 활용한 분산 부하 테스팅 by 데일리호텔

Kubernetes을 활용한 분산 부하 테스팅동명의 글이 Google Cloud Platform에도 있으니 여기서는 여태까지 한 삽질과 교훈에 집중한다.첫 시도 ngrinder처음에는 ngrinder로 부하 테스트 환경을 구축하려 했다.

www.theteams.kr

 

ngrainder yml 실행 후 ngrinder svc 접속

admin / admin 으로 로그인

 

ngrinder script 만들기

 

ngrinder performance test 만들기

save and start -> run now

nginx 서버로 부하가 가는 모습이다

hpa를 확인하면 금방 부하가 오르는 모습을 볼 수 있다

 

 

오늘의 회고

  • ngrinder를 노트북으로 사용하면 뻗어버릴수 있다고 하셔서 걱정했는데 container로 하면 문제가 해결되었다 왜 이런 아이디어가 금방 떠오르지 못할까 ㅜ 아직 엄청 많이 부족한 것 같다 
  • 클라우드 인프라 엔지니어가 되고싶은데 아직 모르는게 태산이라 어떻게 현업에 나갈수있을지 걱정이다 ㅜㅜ 모르는게 너무 많아서 어디서부터 공부해야 할지도 모르겠다 ~~ 에휴 ㅜㅅㅜ