백엔드

Private Cloud 구축을 위한 DC/OS 설치

CyberI 2018. 2. 6. 16:05

 

 

DC/OS 관련돼서 아티클을 연재하고 있습니다. 이번 글에서는 DC/OS 의 설치과정에 꼭 필요한 핵심 정보 및 설치과정에 대해 알려드리도록 하겠습니다.

DC/OS는 설치방법은 크게 3가지가 있습니다. 개발용으로 개인PC에 설치하는 방법, Amazon,이나 Azure와 같은 Cloud 기반에 설치하는 방법, 그리고 마지막으로 사내 Private Cloud 환경 구축을 위한 On-premises 설치방법 입니다.

현재 DC/OS 버전은 1.10 버전이 최신이며 이번 아티클은 사내 Private Cloud 환경을 구성하는 위한 방법으로 설치해 보도록 하겠습니다.

 

전체적인 상세 설치 매뉴얼은 아래 URL을 참조하면 됩니다.

https://docs.mesosphere.com/1.10/installing/oss/

이 아티클은 매뉴얼 대체 목적이 아닌 핵심적인 주요 사항에 대해서만 알려드리며 별도의 추가사항 및 경험상 매뉴얼대로 안되었던 부분에 대한 설명이 들어가 있으면 이점 유의해서 확인해 보시고 설치해 보면 좋겠습니다.

 

Hardware Requirements

DCOS를 설치하기 크게 3가지중 한가지 역할을 맡기 위한 서버가 필요합니다. DC/OS운영을 위한 최소 서버설치대수는 3대라는 의미입니다.

 

Master nodes

 마스터 노드는 여러 Agent 노드의 교통정리를 하는 역할을 합니다. 실질적인 작업은 각 Agent node에서 수행이 되며, Agent 노드에 문제가 발생하거나 자원 재할당이 필요한 경우, 그리고 각종 주요 설정정보를 보관하고 있는 역할을 하는 서버가 Master node 역할입니다.

기본적으로 1대부터 시작할 수 있지만, 추천 대수는 3대입니다. Master node는 기본적으로 왕 역할을 하는 서버는 동작중인 master node 중 한대만 하기 때문에 왕선출을 위해 홀 수 개수의 서버를 준비해야 합니다.

 

되도록 가지고 있는 서버 중 안정적이며, CPU/RAM 자원이 충분한 서버를 Master 서버로 이용하면 됩니다. HDD 자원은 로그성만 기록되기 때문에 큰 용량의 HDD는 필요 없습니다.

 

Agent nodes

실질적으로 작업(work, process)을 하는 노드입니다. 따라서 성능이 좋으면 좋을수록 좋겠지만, 꼭 성능이 좋지 않아도 ,Master node에서 적절히 자원을 분배해 주기 때문에 2core CPU 에 메모리 16G이상만 되면 충분히 이용할 수 있습니다. 매뉴얼 상으로는 최소 16G RAM이 최소사양인데 8G만 되어도 최소 역할 수행은 가능합니다.

Docker 기반의로 각 프로세스가 실행되기 때문에 Docker Host 역할로 문제가 없는 하드웨어 사양이라면 큰 문제가 없습니다.

Hadoop(HDFS)이나 Apache Spark 와 같은 CPU RAM을 많이 사용하는 process라면 8core 이상에 32G RAM 이상을 추천합니다.

또한 Agent Node는 실행시키려는 프로그램에 따라 private agent node public agent node 이렇게 2가지로 역할이 나누어 집니다. DC/OS로 웹서비스를 구축하려 한다면 최소 agent node 2대가 필요하게 됩니다.

 

Bootstrap node

DC/OS의 설치 본 파일을 가지고 있으며 추가되는 master node agent node를 설치를 위한 부트스트랩(bootstrap) 서버 역할을 합니다.

Master node 중 하나를 bootstrap node로 해서 설치해봤는데 가능하기도 하지만 추천하지 않습니다. 사내에서 제일 성능이 좋지않은 PC를 이용해도 상관없습니다. 실제 서비스할 때는 아무런 역할을 하지 않습니다. 단지 node 추가를 위한 설치목적밖에는 역할이 없습니다.

 

위에 설명한 최소대수를 계산해 보면 bootstrap 1, master node 1, agent node 2(private/public) 4대가 필요합니다.

최소의 Fail-Over 환경을 위해서는 bootstrap 1, master node 3, private agent node 2, public agent node 2, 8대의 서버가 필요합니다.

 

Software Requirement

DC/OS설치전에 OS및 기타 소프트웨어 설치에 관련된 핵심적인 사항만 정리해 봅니다.

      * centos 7.4+ 설치

      * /var  10G 이상 free space

      * firewall 중지

 sudo systemctl stop firewalld && sudo systemctl disable firewalld

       * Disable Sudo password prompts  (/etc/shdoers 파일에 아래내용 추가

 %wheel ALL=(ALL) NOPASSWD: ALL

       * 시간동기화

 sudo yum install -y chrony

  

      * NFS 설정  (Node 별 공유 파일 영역, 필요시)

      * /etc/security/limits.conf 에 추가 (open file 갯수 증가)

*               soft    nofile          16384

*               hard    nofile          16384

 

 Docker 관련 설정

 

 OS 업데이트

sudo yum upgrade --assumeyes --tolerant

sudo yum update --assumeyes

아래 전체 복사해서 실행

sudo tee /etc/modules-load.d/overlay.conf <<-'EOF'

overlay

EOF 


reboot

 

overlay 결과 확인

lsmod | grep overlay

 

아래 전체 복사해서 실행

sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'

[dockerrepo]

name=Docker Repository

baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/

enabled=1

gpgcheck=1

gpgkey=https://yum.dockerproject.org/gpg

EOF


아래 전체 복사해서 실행

sudo mkdir -p /etc/systemd/system/docker.service.d && sudo tee /etc/systemd/system/docker.service.d/override.conf <<- EOF

[Service]

ExecStart=

ExecStart=/usr/bin/dockerd --storage-driver=overlay

EOF

 

sudo yum install -y docker-engine-1.13.1 docker-engine-selinux-1.13.1

sudo systemctl start docker

sudo systemctl enable docker 

 

docker ps 명령으로 정상 설치 확인

 

DC/OS 설치 (GUI 방식)

https://docs.mesosphere.com/1.10/installing/oss/custom/gui/

 

각 서버가 준비되었으면

Boot strap 노드 컴퓨터에서 아래 명령을 수행합니다

curl -O https://downloads.dcos.io/dcos/stable/dcos_generate_config.sh

 

다음 브라우저에서 http://{bootstrap ip}:9000 으로 접속합니다.

 




Agent private IP List에는 private agent node 역할을 하는 ip 목록을 기입합니다.

Agent Public IP List에는 public agent node 역할을 하는 ip 목록을 기입합니다. 보통 public agent node에는 외부 접속을 담당하는 marathon-lb(HAPROXY) 가 설치되면 대부분의 서비스나 task private agent node 에서 실행됩니다.

 Master public ipmaster node 로 설정한 서버의 ip를 기입합니다.

 

 

모두 설치가 완료되고 경험상 각 서버 리부팅을 수행후 master node ip 로 브라우저를 접속하여 아래의 화면이 나오면 잘 설치된 것 입니다.

 

제가 위에 설명한 주요 설치과정을 빠트리지 않았다면 별 문제없이 설치되었을 것입니다. 저 경우는 각 서버의 시간 동기화가 잘 안되어 문제가 발생했는데 chrony를 설치하고 문제가 없었습니다.


추가 Node 설치

추가적인 Node를 확장하고자 하는 경우는 아래의 방법을 수행합니다.

boot 노드 서버 터미널 접속 

 

ssh-copy-id root@192.XXX.XXX.XXX    (192.XXX.XXX.XXX 는 새로 추가되는 agent node IP)

scp ~/dcos-install.tar root@192.XXX.XXX.XXX ~/dcos-install.tar

 

신규 Agent 노드 서버(192.XXX.XXX.XXX)  접속 

mkdir /opt/dcos_install_tmp

sudo tar xf dcos-install.tar -C /opt/dcos_install_tmp

sudo bash /opt/dcos_install_tmp/dcos_install.sh slave  (private node 설치인 경우)

sudo bash /opt/dcos_install_tmp/dcos_install.sh slave_public  (private node 설치인 경우)

 

 

 

설치 실패시 기존 설치 정보를 삭제하고자 하는 경우  - 아래 명령 2번 반복 후 위의 script 실행

rm -rf /opt/mesosphere

rm -rf /etc/systemd/system/dcos*

 

reboot

 위 DC/OS 설치 삭제 방법은 공식적인 방법이 아닙니다. DC/OS에서는 공식적인 uninstall을 제공하고 있지 않습니다. 따라서 OS 설치부터 다시 해야 할 수 도 있습니다.


DC/OS 운용 장점

-       사내 전체 서비스들에 대한 가시성 확보

 -> 사내 각 서비스들이 어디 어느 서버에 설치되어 있고, 잘 작동되는지 일일이 기억할 필요가 없어졌습니다.


-       안정적 서비스 인프라 스트럭처 확보

-       기타 유휴 장비 재활용

-    서비스간의 조합 및 운영 편리로 진정한 DevOps 환경 구현

-    능동적 서비스 부하 관리 및 Fail-over 관리

-       설치환경에 대한 설정정보(json)에 대해 수월한 백업 및 복구

 

사내에 DC/OS를 설치하면서부터 장점을 기술하면서 이 아티클을 마무리하겠습니다.  다음에는 각 서비스의 설치(deploy) 및 관리 노하우에 대해 설명하도록 하겠습니다. 사실 DC/OS는 docker기반의 서비스 컨테이너에 대한 orchestration 즉 조정자 역할만 하는 것이기 때문에 docker자체에 대한 기반지식이 매우 중요합니다. Docker에 대한 공부를 열심히 해두시고 다음 글에서 뵙겠습니다.