폐쇄망 환경에서 서비스 운영을 위한 환경 구축 방법
외부 환경에서 dnf download --resolve로 의존성까지 받아 내부망에서 rpm으로 설치하는 흐름. postgresql15, java11, nginx 사례.
폐쇄망 환경에서 서비스 운영을 위한 환경 구축 방법
인터넷이 끊긴 폐쇄망(air-gapped) 서버에는 dnf install이 원격 저장소를 못 받아 그대로 실패한다. 해결의 핵심은 인터넷이 되는 동일 환경에서 의존성까지 통째로 내려받아, 그 rpm 묶음을 내부망으로 옮겨 설치하는 것이다.
흐름은 세 단계로 같다.
- 대상과 같은 OS·아키텍처 컨테이너를 띄운다 (재현 가능한 다운로드 환경).
dnf download --resolve로 패키지 + 의존성 rpm을 한 폴더에 모은다.- rpm 묶음을 폐쇄망으로 옮겨
rpm -ivh *.rpm으로 설치한다.
아래는 postgresql15·java11·nginx 세 가지 사례다.
1. 동일 환경 컨테이너 생성
- 시스템 아키텍처 확인
1
uname -m
- 동일 환경 컨테이너 생성
1
sudo docker run --platform linux/amd64 -it rockylinux:8 /bin/bash # 아키텍처에 맞는 이미지 사용
- dnf util 설치
1
dnf install -y dnf-utils # dnf 명령어 사용을 위한 패키지 다운로드
2. 각 패키지 다운로드 (ex> postgresql15, java11, nginx)
postgresql15
- postgres 폐쇄망용 패키지 준비
1 2 3 4
dnf module list postgresql # 설치 가능한 postgresql 버전 확인 dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm # 다른 버전 사용 원할시 저장소 연결 dnf -qy module disable postgresql # 기존 기본 postgresql 모듈 별칭 비활성화 dnf download --resolve postgresql15-server -y # --resolve를 통해서 의존성 패키지 모두 설치
- 폐쇄망 설치 (1.파일을 내부망 환경에 이동 후)
1 2 3 4
rpm -ivh *.rpm # 옮긴 패키지 모두 설치 /usr/pgsql-15/bin/postgresql-15-setup initdb # postgresql 초기화 systemctl enable postgresql-15 # 부팅시 자동 실행 systemctl start postgresql-15 # 서비스 시작
java11
- java 폐쇄망용 패키지 준비
1 2
dnf list java*jdk-devel # 설치 가능한 java 버전 확인 dnf download --resolve java-11-openjdk-devel.x86_64 -y # --resolve를 통해서 의존성 패키지 모두 설치
- 폐쇄망 설치 (1.의 파일을 내부망 환경에 이동 후)
1 2 3 4 5
rpm -ivh *.rpm # 옮긴 패키지 모두 설치 # echo "export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el8_4.x86_64" >> /etc/profile # JAVA_HOME 설정 source /etc/profile echo $JAVA_HOME
nginx
- nginx 폐쇄망용 패키지 준비
1 2
dnf list nginx # 설치 가능한 nginx 버전 확인 dnf download --resolve nginx # --resolve를 통해서 의존성 패키지 모두 설치
- 폐쇄망 설치 (1.의 파일을 내부망 환경에 이동 후)
1 2 3 4 5
rpm -ivh *.rpm # 옮긴 패키지 모두 설치 # # nginx 설정 변경 (ex> /etc/nginx/nginx.conf) systemctl enable nginx systemctl start nginx
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.