::: IT인터넷 :::

우분투 서버 20.04를 22.04로 업그레이드

곰탱이푸우 2023. 1. 30. 08:20
샘플서버망에서 Ubuntu Server 운영체제의 버전을 20.04에서 22.04로 업그레이드 하는 방법을 정리한다. 
업그레이드를 진행하기 위해서는 do-release-upgrade 도구를 사용하면 쉽게 판올림을 할 수 있다.
 
해당 방법을 간략하게 정리한다.
 

사전 작업

Ubuntu 서버의 배포판을 업그레이드하기 위해서는 아래와 같은 사전 작업이 필요하다.
  • SSH 터미널로 서버 연결
  • 최신 업데이트 적용
  • 실행 중인 서비스 중단
  • 서버 재부팅

 

 

ssh 터미널로 서버 연결

일반적인 서버 배포판 업그레이드는 해당 서버에서 직접 작업하는 것이 가장 안전하다.
하지만 서버실에서 작업하기에는 작업 환경이 녹록하지 않다. (스탠딩 작업 + 서버들의 팬 소음)
 
서버 업그레이드 작업에 RDP 연결이나 SSH 연결을 권장하지 않는다.
원격으로 작업할 경우 연결이 유실 되면 복구가 어렵기 때문이다.
여러 방법으로 테스트를 진행한 결과 SSH 연결을 통한 업그레이드로 진행이 가능하므로 아래와 같이 SSH로 서버에 연결한다.
$ ssh 계정명@서버IP주소

# 계정명은 sudo 권한이 부여되어 있어야 한다.​

 

RDP로 연결하여 터미널을 실행하여 업그레이드를 진행하면 오류 발생

RDP로 연결하여 터미널을 실행한 상태에서 업그레이드를 진행하면 오류가 발생한다.
- xrdp, xfce4 업그레이드를 진행하면서 RDP 연결이 끊어진다.
- 새로운 세션으로 연결하면 이전 세션에서 실행 중인 프로세스가 존재한다.
- 업그레이드 도중 선택할 부분이 존재하는데 이전 세션의 프로세스에 접근할 방법이 없다.
- 새로 업그레이드를 진행하려고 해도 apt 자체가 이전 세션에서 실행 중이라서 잠겨있다. 
 
SSH로 연결하여 진행하는 경우 1022 포트 추가 개방 등에 대한 메시지는 출력되지만 정상적으로 업그레이드가 진행된다.
중간에 연결이 끊기거나 진행이 중단되는 경우 복구가 어려울 수 있으므로, 업그레이드 설치 완료까지 자리를 지키고 있어야 한다. 

 

 

최신 업데이트 적용

아래 명령을 통해 최신 업데이트를 적용한다.
$ sudo apt update && sudo apt upgrade
$ sudo apt dist-upgrade  # 최신 업데이트 적용하면 설치할 항목이 없다고 나오는게 정상
$ sudo apt autoremove  # 사용하지 않는 불필요한 패키지 및 설치 파일 제거
$ sudo apt install update-manager-core  # 최신 업데이트 적용하면 이미 설치되었다고 나오면 정상
 
업데이트 도중 docker.io 서비스 재시작 여부를 묻는 경우 Yes를 선택한다.
 

실행 중인 서비스 중단

서버 업그레이드를 진행하기 전에 서버에서 실행 중인 서비스 들을 중단한다.
  • 진행 도중 서비스의 재시작 또는 재부팅이 필요한 경우 존재
  • 실행 중인 서비스에 연결된 프로세스 등이 중단되면서 서비스 영향 가능
 
업무상 서버에서 운영하는 서비스는 아래와 같은 원칙으로 구축했다.
  • 모든 서비스는 Docker 기반 운영
  • 추가로 필요한 환경은 VirtualBox의 가상 환경으로 구축
 
따라서 VirtualBox와 Docker 중심으로 진행했다. 각자 환경에 맞춰서 진행하면 된다.
 
VirtualBox
실행 중인 가상 환경이 있는 경우 Suspend 적용 (종료가 가능한 경우 종료)
 
Docker
실행 중인 컨테이너가 존재하는 경우 Stop 적용
  • docker-compose로 실행한 경우 docker-compose stop
  • docker run으로 실행한 경우 docker stop
 

서버 재부팅

최신 업데이트가 완료되면 아래 명령으로 서버 재부팅을 진행한다.
$ sudo reboot now
 
 

업그레이드 진행

서버 업그레이드는 아래 방법으로 진행했다.
  • 설정 파일 수정 (프록시 환경만 해당)
  • 업그레이드 도구 실행
  • 설치 전 주의사항 체크
  • 설치 중 변경 사항 선택
  • 설치 완료 후 재부팅
  • 업그레이드 확인
 

설정 파일 수정 (프록시 환경만 해당)

사내에서 운영하는 서버망의 경우 기본적으로 외부 인터넷 연결이 제한된 경우가 많다.
이러한 환경에서는 do-release-upgrade 도구를 실행하면 연결 오류가 발생한다.

 

https로 지정 된 해당 서버 주소에 연결이 되지 않는 것이 원인이다.
아래와 같은 메시지가 출력된다.
Checking for a new Ubuntu release Failed to connect to https://changelog.ubuntu.com/meta-release.
Check your Internet connection or proxy settings
There is no development version of an LTS available.
To upgrade to the latest non-LTS development release set Prompt=normal in /etc/update-manager/release-upgrades.

 

해당 서버의 HTTPS 연결에 필요한 인증서 정보를 받아오지 못해 발생하는 오류로 해결 방법은 간단하다.
 
https로 연결하는 것을 http로 연결하도록 아래와 같이 설정을 변경하면 된다.
$ sudo vi /etc/update-manager/meta-release

## FROM
https://changelogs.ubuntu.com/meta-release
https://changelogs.ubuntu.com/meta-release-lts
## TO
http://changelogs.ubuntu.com/meta-release
http://changelogs.ubuntu.com/meta-release-lts
 

업그레이드 도구 실행

아래 명령을 실행하여 업그레이드 도구를 실행한다.
$ sudo do-upgrade-release
 
 

설치 전 주의사항 체크

SSH로 설치할 경우 1022 포트를 추가로 개방할 것인지 묻는 화면이다.
오류 발생을 대비한 비상용이므로 y를 입력한다. 실제로 사용하지는 않는다.
 
y를 입력하면 1022 포트 사용안내 및 터널링에 대한 설명을 제공한다. 엔터를 입력한다.

 

apt 설치를 위한 mirror 주소 변경 (sources.list)안내이다.

 

y를 입력하면 /etc/apt/sources.list의 배포판 버전이 focal (20.04)에서 jammy (22.04)로 변경된다. 
 
Nexus3 사설 저장소를 사용하는데 오류가 발생하는 경우

Nexus3 사설 저장소를 사용하는 경우 업그레이드를 위해 APT 패키지를 받아 오면서 Bad Gateway가 발생하는 경우가 있다.
Nexus3의 버전이 낮아서 발생하는 것으로 3.39.0-01 버전에서 수정되었다.
Nexus3를 최신 버전으로 업그레이드하면 해결된다.
https://community.sonatype.com/t/apt-proxy-repo-for-ubuntu-2204-results-in-502-bad-gateway/8670
 
 

설치 중 변경 사항 선택

설치 도중 서비스 재시작 여부를 선택하는 화면이 나오면 Yes를 선택한다.
 
Docker 재시작 여부를 묻는 화면이 나오면 Yes (예)를 선택한다.
 
ssh server 관련 설정도 Keep the local version currently installed를 선택한다.

 

설치 완료 후 재부팅

22.04 업그레이드 이후 불필요한 패키지를 삭제한다는 메시지이다. Y를 입력한다.
 
설치가 완료 되면 재부팅 여부를 확인하는데, y를 입력해서 재부팅한다.

 

재부팅이 완료되면 ssh 연결을 통해 정상 접속 되는지 확인한다.

 

 

업그레이드 확인

아래 명령으로 정상적으로 판올림 되었는지 확인한다.
$ sudo cat /etc/issue
Ubuntu 22.04.1 LTS \n \l

$ uname -a
Linux HOSTNAME 5.15.0-58-generic #64-Ubuntu SMP Thu Jan 5 11:43:13 UTC 2023 
x86_64 x86_64 x86_64 GNU/Linux
 

정상 동작 확인

업그레이드 이후 중단했던 프로그램과 서비스가 정상 동작하는지 확인한다.
 

공통 프로그램

VirtualBox와 Docker의 정상 동작 여부를 확인한다.
 
VirtualBox
아래와 같이 VirtualBox가 정상 동작하는지 확인한다.
 
사용중인 가상 머신이 있는 경우 정상적으로 동작하는지 확인한다.
 
Docker
아래 명령으로 Docker와 컨테이너가 정상 동작하는지 확인하고, 중단 된 컨테이너는 재시작한다.
$ docker info
$ docker ps
$ docker ps -a
 
 

Docker로 구동 중인 서비스

Docker 컨테이너로 실행 중인 서비스들의 정상 동작 여부를 확인한다.
 

참고문서

아래 문서를 참고하여 진행하였다.