[우당탕탕] 서버이전 회고록 1편

2021. 5. 21. 14:55RS Team Develop

안녕하세요. 알에스팀 개발2팀 팀장 허윤입니다.

회사 서버 이전 중 심각한 문제가 발생해 해당 문제를 해결하기 위해 이리저리 뛰어다녔던 썰을 풀어보고자 합니다.....

 

 

알에스팀

저희 알에스팀은 AWS를 사용하기 이전 통큰아이에서 서버호스팅을 받아 서버를 운영해왔습니다. 하지만 스케일업/다운 등이 어렵고 항상 고정적일수 밖에 없었던 저희 회사는 AWS에서의 Lightsail 을 사용하게 되었습니다. 대부분의 서비스는 IDC에서 AWS로 이미 이전한 상황이었지만, 저희 서버에서 운영되고있던 외주 실제 운영 서비스는 오류에 의해 서비스가 중단되거나 PHP 버전이나 DB 버전과 같은 서버 환경이 바뀌어 오류가 발생하면 안되기 때문에 쉽사리 이전하지 못하고 있었습니다.

 

그래서 자사 서비스 혹은 테스트서버 등 대부분의 서비스들은 AWS에 이미 이전하여 잘 운영중이었지만 외부 서비스 때문에 IDC 비용을 월마다 불필요하게 납부하는 상황이었습니다.

 

발단

알에스팀에서 AWS의 Lightsail을 활용해 서버세팅을 수없이 많이 해오며 자신이 만만해졌던 저는 회사의 불필요한 비용유출을 줄이기 위해 서버이전에 따른 위험성에 대해 조사를 해보게 되었습니다.

 

1. PHP 버전은 어떠한가
2. DB 는 어떤 DB이고, 버전은 어떠한가
3. 현재 서버세팅과 webroot 구조를 파악하고 인증서는 어디에 있으며 어떻게 적용되어있는가
4. php.ini에 커스텀으로 수정되었거나 AWS 서버 설정값과 다른부분은 없는가
5. my.cnf에 커스텀으로 수정되었거나 AWS 서버 설정값과 다른부분은 없는가

 

각종 서버 환경을 파악해보니 사용하던 AWS Lightsail PHP 버전이 같았고, AWS RDS MariaDB 버전과 버전차이가 없었습니다. 물론 DB 버전이 마이너 업데이트에 따라 일부 다르기는 했지만, 이는 문제사항이 아니였습니다. 그래서 해당 서비스의 Data 와 DB를 모두 백업받아 AWS 테스트서버에 실제 구축을 해보기로 했습니다. 그 결과...

 

우려와는 달리 정상적으로, 서비스 작동에 문제가 없었다!!!

 

테스트 결과 문제가 없었던 저는 대표님께 해당 서비스를 AWS로 이전하자 제안하였습니다.

 

 

대표님 테스트서버에 임의로 서버이전해본 결과
정상작동 확인하였으며,

1시간 이내 서버이전을 완료할 수 있을 것 같습니다.

 

대표님의 대답은

YES!
단,
여유있게 서버이전을 3시간으로 잡죠.

 

그리고, 별 생각 없이 대표님께 RDS의 가격이 너무 부담스러운것같다. 로컬DB를 사용하면 안그래도 운영서버 사양 좋은데 비용도 아끼고 좋을것같다라고 제안을 드렸습니다. 그리고 이게 화근이 될줄은 꿈에도 몰랐습니다.

 

전개

해당 서비스 담당자와 서버이전날짜를 잡고, 서버 아이피가 변경되기 때문에 서버이전 3일 전부터 DNS ttl 을 최소치로 변경해주었습니다. 그리고 서버이전 날짜, 시간이 다가왔습니다.

 

때가 되었고, 자신만만했던 저는 서버 이전작업을 시작했습니다. 기존 서버에서 회사 아이피를 제외한 모든 아이피는 특정 페이지를 띄워주었고, DNS를 이전할 서버로 완벽하게 설정하였습니다. 그리고 가장 최신의 Data와 DB를 백업받아 이전하려는 운영서버로 이전하고, 운영서버 DB에 이전작업 또한 완료하였습니다.

 

예상했던것처럼 1시간정도 만에 완료하였고 한숨을 내쉬며 각종 홈페이지 테스트를 해보았습니다. 

어라?

로그인이 안된다?

 

오류나는부분을 검색해보니 Database 버전 오류라고 합니다.;;

분명히 버전 체크까지 다 했는데??? 하고 로컬 데이터베이스를 확인해보니 씌여있는건 Mysql이 아닌 MariaDB

 

 

저에게는 떠오르는 몇가지 방안이 있었습니다.

1. 현 서버에 MariaDB를 설치한다.

2. RDS를 그냥 사용한다.

 

다만 이렇게 했을경우의 문제도 있었습니다.

1. 직접 MariaDB를 설치했을경우, Bitnami Nginx 를 사용하기 때문에  저는 기본적으로 운영체제 자체적으로 설치된것을 수정해야하는데 이를 책임질 자신이 없고, /opt/bitnami/ctlscript.sh 에서 mariadb를 컨트롤하지 못할것같고, Mysql을 삭제하던지 하는 작업을 통해 서버 재시작시 Mysql 대신 MariaDB가 실행이 되야하는데 굉장한 부담이었습니다.

2. RDS를 그냥 사용할 경우, 비용을 줄이기위해 IDC -> AWS로 이전하는데, 이전에 대한 이유를 상당히 없애기 때문에 RDS의 사용은 최대한 지양해야했습니다.

 

그래서 다른 방법을 모색해보기로 했습니다. "Bitnami Nginx 서버에서 MariaDB가 설치된 서버는 없을까"라는 의문을 품고 AWS Lightsail 에서 새로운 Nginx 서버를 생성 해 보았습니다.

 

 

?
MariaDB?

뭐지?

 

그렇습니다. 운영서버를 만들고 시간이 지나면서 Bitnami Nginx 도 업데이트를 하였고, 그러면서 기본으로 설치되는 DB도 Mysql 에서 MariaDB로 변경된것이었습니다.

 

승리의 세레모니

PHP 버전도 확인해보니 문제가 없었고, 새롭게 운영서버 세팅을 시작하였습니다.

그렇게 40분동안 DB문제 해결방법을 확인했고,

1시간 20분동안 새로운 서버와 기존 서비스들을 이전하였습니다.

 

모든 서비스를 이전 완료하고 확인해보니 딱 3시간 경과..

완벽하게 서버이전을 완료하고 서비스를 재개하였습니다.

 

Respect. 대표님의 큰그림.

 


쓰다보니 너무 길어지는것 같아 2편에 이어서 쓰도록 하겠습니다~