마크 서버 하나 더 파기 (그리고 Java 25 함정)
온도도 잡았겠다(전전 글) 마크 서버를 하나 더 팠다. 이번엔 바닐라 감성으로. 엔진은 순정 대신 Paper를 썼다. 플레이 경험은 바닐라랑 같은데 성능이 낫고, CoreProtect 같은 플러그인을 쓸 수 있어서.
버전 고르기
최신 릴리스는 26.2인데 Paper 빌드가 아직 전부 베타 채널이었다. 한 단계 아래 26.1.2는 STABLE 빌드가 있고. 그리고 결정타로 CoreProtect(누가 블록 부쉈나 추적하는 플러그인)의 공식 지원이 26.1.2까지였다.
베타 서버에 미지원 플러그인 조합은 도박이다. 특히 CoreProtect처럼 데이터를 쌓는 플러그인은 겉으론 도는데 기록이 조용히 깨질 수도 있고... 그래서 26.1.2로 갔다. 접속하는 애들이 런처에서 26.1.2를 직접 골라야 하는게 유일한 불편함.
메모리 배분
기존에 마크 2대(힙 8G짜리들)에 팰월드까지 있어서 가용 램이 10GB 정도였다. 새 서버 힙은 4G. 더 주고 싶었는데 팰월드가 저녁마다 몇 기가씩 먹는걸 감안하면 여기가 적정선이었다. 어차피 바닐라 소수 인원이면 4G도 남는다. 힙 크다고 빨라지는것도 아니고.
크래시 루프
systemd 유닛 만들고(기존 서버 패턴 그대로: tmux 세션 + Restart=always) 올렸는데 포트가 안 열린다. 서비스는 active라는데 월드 파일이 안 생김. journalctl을 보니 10초마다 재시작을 반복하고 있었다. 카운터 58.
paper.jar를 손으로 직접 실행해보니 한 줄 나온다.
Minecraft 26.1 and newer requires running the server with Java 25 or above.
아... 서버에 있는건 Java 21이었다.
Restart=always는 크래시 복구엔 좋은데 이런 경우엔 안되는 걸 10초마다 무한 반복한다. tmux 안에서 죽으니 로그도 systemd엔 안 남고. 서비스가 active인데 뭔가 안되면 데몬 믿지 말고 바이너리를 손으로 한번 돌려보는게 빠르다.
Java 25 설치, 근데 기본은 21 유지
Ubuntu 24.04 저장소에 openjdk-25가 있어서 설치 자체는 한 줄이다. 함정은 update-alternatives가 새로 깐 25를 시스템 기본 java로 잡아버린다는 것. 기존 Paper 서버가 /usr/bin/java를 그대로 쓰고 있어서, 놔두면 걔가 다음 재시작 때 25로 뜨게 된다. 새 서버 하나 파면서 기존 서버를 볼모로 잡을 뻔 했음
- 시스템 기본 java는 21로 고정 (
update-alternatives --set) - 새 서버 start.sh만 java-25 경로를 직접 지정
자바 여러개 굴리는 서버면 어차피 각 서비스가 자기 자바 경로를 박아두는게 맞다. 기본값에 기대는 순간 이런 일이 생긴다.
결과
월드 생성 14.5초, CoreProtect 로딩 확인, 포트 정상. 서버 3대에 팰월드까지 돌리는데 CPU는 52도.
마치며
이제 진짜 화리 걸고 겜만 하면 된다. 이번엔 방치 안하고.