IT/AWS

[AWS] EC2 인스턴스 ENA driver Upgrade 하기 (feat. image builder)

반응형

Intro

최근 EC2 AMI Golden image를 만드는 작업을 자동화하는 파이프라인을 구성하고 있습니다. Jenkins, Ansible, Image builder을 사용하고 있고 그 과정에서 ENA driver upgrade를 추가 하려고 할때 겪었던 경험을 공유 하고자 합니다.

오늘의 키포인트는 4세대 이전의 인스턴스에서는 EC2 instance 재부팅 없이 ena업그레이드가 가능하고, 5세대 이상부터는 반드시 재부팅이 필요하다는 점입니다.

AWS ENA dirver release 정보

2021년 8월 06일 2.6.0 버전까지 출시가 되었네요

https://github.com/amzn/amzn-drivers/releases

AWS ENA driver 다운로드 경로

파일명은 버전에 맞도록 변경하면 이전 버전도 다운로드가 가능합니다.

https://github.com/amzn/amzn-drivers/archive/refs/tags/ena_linux_2.6.0.zip

ena 버전 확인

modinfo ena

AWS ENA dirver 업그레이드 스크립트

5세대 인스턴스 (t타입경우 3세대) 이상에서 modprobe -r ena && insmod ena.ko 이 명령어를 실행하면 ssh 세션이 끊기면서 EC2 instance가 프리징이 됩니다. 이때 EC2를 재부팅시키고 나머지 명령어를 실행하면 됩니다.

sudo yum install gcc kernel-devel-$(uname -r) -y
cd /usr/src/
wget https://github.com/amzn/amzn-drivers/archive/refs/tags/ena_linux_2.6.0.zip
unzip ena_linux_2.6.0.zip
yes | rm ena_linux_2.6.0.zip
cd amzn-drivers-ena_linux_2.6.0/kernel/linux/ena
make
modprobe -r ena && insmod ena.ko
make -C /lib/modules/`uname -r`/build M=`pwd` modules_install
dracut -f -v
depmod

참고 : https://github.com/amzn/amzn-drivers/tree/master/kernel/linux/ena

활용

만약 aws image builder 를 사용해서 EC2 5세대의 골든이미지를 만든다고 했을때 ena upgrade 과정을 넣게되면 ec2가 재부팅되어야하기 때문에 image builder가 생성한 EC2 instance가 프리징이되어서 더이상 진행이 되지 않습니다. 따라서 ena upgrade를 해놓은 ami 이미지를 만들어서 사용할 것을 추천드립니다.

회고

AWS Image builder를 처음 사용해보았는데, 이미지를 하나 만드는데 대략 50분에서 60분이 소요가 됩니다. 그 이유는 Image builder가 실행되면 Builder EC2가 실행이 되는데 내부적으로 image builder실행을 위한 agent들을 설치와 설정들을 진행하고 완료가되면 Builder EC2를 stop상태로 둔 다음 Test EC2를 생성하고 기존 Builder EC2를 terminate하고 테스트가 완료되면 최종 ami 이미지 배포가 진행이 됩니다. 이 과정이 너무너무 오래 걸려서 이걸 정말 써야하는가 싶을 정도 입니다. AWS에 문의해보니 속도를 향상시킬 수 있는 방법은 없다고 하네요. 향후 packer를 도입해보고 비교해보도록 하겠습니다.

반응형