ERP 서버이전

3~4년 정도 사용한 ERP 서버를 가지고 있는데

서버 노후화로 인해 문제 발생시 빠르게 장애처리를 할 수 없는 불안감에 서버를 이전하기로 생각만 해오다가 오늘 드디어 서버를 이전 하기로 결심 했다.

사실은 그동안 사용해오던 사설 인증서를 letsencrlypt로 교체하기 위한 작업을 하려다 보니까. 서버 운영체제가 centos 6.1이다.

처음에 리눅스를 접하게 되어 사용하던 것이 centos이지만 지금은 우분투를 사용하고 있어서 centos의 모든 설정이 매우 낯설게 느껴져서 힘들었는데 거기에 더해 인증서를 자동 갱신하기 위한 certbot 설치에서 난관이 있어 서버 이전을 결심하게 되었다. (거의 에라 모르겠다. 아 짜증나 이런 심정에 결심을 하였다.)

서버는 iwinv.kr에서 제공하는 가상 클라우드 서버를 사용하고 docker 기반으로 서버 구성을 잡으려고 한다.  4개의 물리 컴퓨터 하드에 복제 저장되는 스토리지에 volume을 위치해두면 차후에 서버 장애시 저장된 이미지의 OS를 서버를 재생성하고 docker를 up하는데 10분이 걸리지 않을 것으로 예상한다.

서버 장애감지와 복구도 자동으로 해야겠지만 위에서 말하는 장애는 물리 컴퓨터의 고장으로 서버가 죽어버리를 상황에 대한 복구 처리이다. 보통은 장애 발생시 반나절 이상이 걸리를 것을 예상해보면 10분이란 시간이 얼마나 짧은 시간인지 알 수 있다.

 

작업 절차는 아래와 같다.

  1. 클라우드 서버를 생성한다.
  2. docker와 docker-compose를 설치한다.
  3. MTU 문제를 해결한다.
    (docker의 기본 네트워크 설정의 mut값은 1500(일반적인 값)인데 반해서 iwinv에서 사용하는 openstack으로 생성된 가상머신은 mtu가 1450으로 셋팅이 되어있다.  때문에 50의 최대 전송패킷의 차이로  들어오는 모든 패킷마다 50의 손실이 발생하고 이때문에 엄창난 네트워크 트래픽 처리 지연이 발생해 버린다..ㅠ 거의 통신불능에 가깝다.
    docker의 네트워크를 생성하여 mtu값을 지장하고 docker-compose를 시작할때 생성된 네트워크를 사용하도록 지정한다. 복잡한 이야기지만 docker의 기본 네트워크를 변경시킬 수도 있으나 docker-compose를 사용해서 컨테이너를 시작할 경우 임이의 네트워크를 생성하여 컨테이너 그룹을 시작하는데 이때는 docker의 기본 설정을 따르지 않기 때문에 네트워크를 미리 생성하여 docker-compose의 시작히 해당 네트워크를 사용하도록 지정을 해야한다. 전에 이것때문에 서버 반영하는날 새벽까지 개고생을 한 기억이 있다. )
  4. ERP 서버를 컨테이너 환경을 docker-compose를 이용하여 구축한다.
    apache, php, mysql 환경과, tomcat, oracle-xe 환경이다.
  5. DB 데이터 이전과 소스 반영 후 성능 테스트를 진행한다.
  6. crontab과 certbot 에이전트를 이용하여 letsencrypt SSL생성을 적용한다.
  7. 문제가 없는 것을 확인하여 최종 사용자에게 서버 이전을 공지한다.
  8. 서버 이전작업 당일 새벽 1시 생성된 최종 DB 데이터를 사용하여 데이터 이관 후 도메인 연결을 신규 서버로 변경한다.

생각해보니 공지를 미리 안해서 오늘 서버 이전은 불가능 할 것 같다… 아아아아.!

공지사유

1.  물리서버 노후화 문제 : 장애발생시 복구시간 및 하드 장애시 데이터 손실 문제.

2.  1이 가장 큰 이유이다. 사실 가상머신으로 서버를 이전하면 성능이 60%가량으로 떨어지기 때문에 하하하 1의 문제가 없다면 사용자 입장에서는 서버이전을 할 필요가 없다.ㅡㅡㅋ

이상 서버이전 준비 끝.