[명령어] Max Inflight

누쿠동·2025년 5월 22일

명령어

목록 보기
5/6

Max Inflight란?

Max Inflight는 BOSH의 Apply Changes 작업 중, 특정 VM 타입에 대해 동시에 업데이트할 수 있는 인스턴스 수를 제한하는 설정입니다. 쉽게 말해, 업데이트 작업을 병렬로 몇 개까지 동시에 수행할지를 결정하는 값입니다.

VM 수가 많은 대규모 환경에서는 Apply Changes 작업에 많은 시간이 소요되기 때문에, Max Inflight 설정을 통해 여러 VM을 동시에 병렬로 업데이트함으로써 전체 작업 시간을 줄일 수 있습니다.


Max Inflight 확인 명령어

https://[Ops Manager URL]/api/v0/staged/products/[Deployment GUID]/max_in_flight

[에러화면]

위 명령어로 접속했을 때 사진과 같이 나온다면 Ops Manager Login을 먼저 해주세요


[정상화면]


[확대화면]

위 사진과 같은 결과가 출력되어야 정상입니다.
해당 Deployment의 VM들에 대해 Apply Changes 작업 시, 동시에 적용되는 VM 수를 확인할 수 있습니다. 값이 1인 경우, 한 번에 한 대씩 순차적으로 롤링 업데이트가 진행된다는 의미입니다.
또한 이 값은 정수뿐만 아니라 백분율(%)로도 설정할 수 있습니다. 저희는 운영 환경에서는 보통 30% 수준으로 설정해서 진행했고, 개발 환경에서는 최대 50%까지 설정하여 진행했었습니다.


[사전작업] uaac Token 발급 및 환경변수 설정

1. Ops Manager VM에 ssh 접속
2. uaac target [Ops Manager URL]/uaa
3. uaac token owner get # Token 값 받기위한 로그인

uaac token owner get 엔터 후 위 사진처럼 값을 입력하면 됩니다
Client ID:  opsman # opsman 고정입니다
Client secret: 그냥 빈칸 엔터해서 넘김
User name: [OpsManager ID]
Password: [OpsManager PW]

4. uaac context # access_token 값이 출력됨
5. export TOKEN="TOKEN 값 입력"

Max Inflight 설정 방법

Max Inflight 설정을 위해서는 max_in_flight API 엔드포인트를 사용해야 합니다.
다만, 해당 API를 호출하기 전에 사전 작업으로 인증 토큰(TOKEN)이 필요합니다.
이 토큰은 uaac 명령어를 통해 발급받아 설정할 수 있습니다.


curl -k "https://[Ops Manager URL]/api/v0/staged/products/[Deployment GUID]/max_in_flight" \

-X PUT \

-H "Authorization: Bearer $TOKEN" \ 

-H "Content-Type: application/json" \

-d '{

      "max_in_flight": {

        "diego_cell-5153f061269326de270f": "[변경하고자 하는 값 %]" # %외 숫자일때는 ""를 입력하지 않습니다.
        예시) "diego_cell-5153f061269326de270f": 3
        예시) "diego_cell-5153f061269326de270f": "50%"

      }

    }'

위 명령어를 통해 Max Inflight 값을 수정한 후, 다시 설정값을 확인하면 아래 사진처럼 기존 값인 1에서 3으로 변경된 것을 확인할 수 있습니다.

설정 이후 Apply Changes를 진행하면, 기존에는 롤링 방식으로 1대씩 적용되던 작업이 이제는 한 번에 3대씩 병렬로 진행됩니다.


마무리

저희는 Diego Cell이 컨테이너와 직접 연관되어 있기 때문에 Max Inflight 수치를 약 30%로 설정하여 사용 중입니다. 이때 주의할 점은, 해당 30%의 Diego Cell이 업데이트되는 동안 그 위에 올라가 있던 컨테이너들이 나머지 70%의 Diego Cell로 일시적으로 이동하게 되므로, 나머지 70%에 충분한 리소스가 확보되어 있는지 반드시 확인해야 합니다.

반면 Diego Cell이 아닌, 예를 들어 Gorouter나 Log 관련 VM처럼 상대적으로 대수가 많은 VM들은 50% 수준으로 Max Inflight 값을 설정하여 적용하는 경우가 많습니다.

VM 수가 많아질수록 Apply Changes 작업 시간이 길어지기 때문에, 대규모 환경에서는 위 명령어를 활용해 Max Inflight 값을 조정함으로써 작업 시간을 단축하는 것이 효과적인 방법입니다.

profile
VMware Tanzu Application을 사용하여 PaaS 플랫폼 운영/구축 담당을 하고 있습니다.

0개의 댓글