Day 60 - 부하 분산 테스트 (nGrainder)
오늘 배운 내용
- 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 = 최대 사양
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에 올릴 예정이다
공식 링크가 있었던 것 같은데 일단 이곳 자료를 참고하면 될 것같다
찾으면 수정하겠다 하핫^^;
ngrainder yml 실행 후 ngrinder svc 접속
admin / admin 으로 로그인
ngrinder script 만들기
ngrinder performance test 만들기
save and start -> run now
hpa를 확인하면 금방 부하가 오르는 모습을 볼 수 있다
오늘의 회고
- ngrinder를 노트북으로 사용하면 뻗어버릴수 있다고 하셔서 걱정했는데 container로 하면 문제가 해결되었다 왜 이런 아이디어가 금방 떠오르지 못할까 ㅜ 아직 엄청 많이 부족한 것 같다
- 클라우드 인프라 엔지니어가 되고싶은데 아직 모르는게 태산이라 어떻게 현업에 나갈수있을지 걱정이다 ㅜㅜ 모르는게 너무 많아서 어디서부터 공부해야 할지도 모르겠다 ~~ 에휴 ㅜㅅㅜ