-
오픈소스로 구성하는 데브옵스 시스템 - Mesos 클러스터 구축DevOps 2017. 4. 10. 20:33
Mesos 클러스터 구축을 시작해 보겠습니다.
일단 서버의 역할 구성을 나눠야 할텐데요...
저는 처음에는 Mesos-Master와 Mesos-Slave만 구성을 하고, Zookeeper 구성은 고려하지 않은 standard alone 환경으로 구성을 하였습니다.
하지만 그건 어디까지나 테스트를 위한 환경이었기에...실제 운영환경은 아래와 같이 구성을 하고자 합니다.
호스트명
역할
설치 Application
Mesos-Master-01
Mesos-Master, Zookeeper
Docker, gitlab
Mesos-Master-02
Mesos-Master, Zookeeper
Docker, jenkins, Nexus
Mesos-Master-03
Mesos-Master, Zookeeper, Marathon
Docker, chronos
Mesos-Slave-01
Mesos-Slave, Marathon-lb
Docker
Mesos-Slave-02
Mesos-Slave, Marathon-lb
Docker
먼저 전체 서버의 /etc/hosts 파일에 hostname을 등록합니다. (만약 DNS에 서버 호스트 네임이 등록된다면 설정하지 않아도 됩니다.)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6server real ip1 Mesos-Master-01server real ip2 Mesos-Master-02server real ip3 Mesos-Master-03server real ip4 Mesos-Slave-01server real ip5 Mesos-Slave-02
1. Mesos-Master와 Zookeeper 설치 (Mesos-Master-01 ~ 03에 구성)
- 저장소 설치
rpm -Uvh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpmyum -y install mesos mesosphere-zookeeper2. Zookeeper 설정 (Mesos-Master-01 ~ 03 작업)
- /var/lib/zookeeper/myid 파일을 만들고 각 호스트별로 Zookeeper id 값을 만든다. 예를들어 Mesos-Master-01에는 아래와 같은 값을 입력한다.
1- /etc/zookeeper/conf/zoo.cfg 파일을 다음과 같은 형식으로 만든다. Zookeeper의 설치 된 수 만큼 입력한다.
server.1=Host IP or Host 명:2888:3888server.2=Host IP or Host 명:2888:3888server.3=Host IP or Host 명:2888:3888※ 실제 예시
server.1=Mesos-Master-01:2888:3888
server.2=Mesos-Master-02:2888:3888
server.3=Mesos-Master-03:2888:3888
- Zookeeper를 재시작한다.
systemctl restart zookeeper3. Mesos-master 설정 (Mesos-Master-01 ~ 03에 구성)
- /etc/mesos/zk 파일에 아래와 같은 Zookeeper URL을 설정한다.
zk://server.1 ip or Hostname:2181,server.2 ip or Hostname:2181,server3 ip or Hostname:2181/mesos※ 실제 예시
zk://Mesos-Master-01:2181,Mesos-Master-02:2181,Mesos-Master-03:2181/mesos
- /etc/mesos-master/quorum 파일에 마스터 노드 수를 2로 나눈 값보다 큰 수를 넣는다. 예를 들어, 마스터 노드가 3개이면 ((3/2)+1)=2로 설정한다.
2
- Mesos Master 서버의 ip와 hostname 파일을 만든다.
echo localhost-ip | sudo tee /etc/mesos-master/ipcp /etc/mesos-master/ip /etc/mesos-master/hostname- Mesos 슬레이브 서비스를 비활성화 한다.
systemctl stop mesos-slave.servicesystemctl disable mesos-slave.service- Mesos Master를 재시작한다.
systemctl restart mesos-master.service- Docker 서비스를 재시작 한다.
systemctl restart docker.service4. Marathon 설치 (Mesos-Master-03에 구성)
- yum으로 marathon을 설치 한다.
yum -y install marathon- marathon을 재시작 한다
systemctl restart marathon.service5. Mesos-slave 노드 설치 (Mesos-Slave-01~02에 구성)
- 저장소 설치
rpm -Uvh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpmyum -y install mesos- mesos Master 비활성화 한다.
sudo systemctl stop mesos-master.service
sudo systemctl disable mesos-master.service
- /etc/mesos/zk 파일에 아래와 같은 Zookeeper URL을 설정한다.
zk://server.1 ip or Hostname:2181,server.2 ip or Hostname:2181,server3 ip or Hostname:2181/mesos- selinux 비활성화 한다. : 이걸 안하면 volume 설정시 문제 발생
setenforce 0sed -ie 's/SELINUX=enforcing/SELINUX=disabled /g' /etc/selinux/config- containerizers 파일 생성 한다. (이걸 안하면 marathon에서 docker 컨테이너 실행이 안됨)
echo "docker,mesos" > /etc/mesos-slave/containerizers- Docker Pull의 시간을 고려해 Executor의 timeout을 10분으로 연장 한다.
echo "10mins" > /etc/mesos-slave/executor_registration_timeout- Mesos Slave 서버의 ip와 hostname 파일을 만든다.
echo localhost-ip | sudo tee /etc/mesos-slave/ipcp /etc/mesos-slave/ip /etc/mesos-slave/hostname- Docker 서비스를 재시작 한다.
systemctl restart docker.service- mesos-slave 서비스를 재시작 한다.
sudo systemctl start mesos-slave
http://Mesos-Master-01:5050으로 접속하면 아래와 같은 관리화면을 볼 수 있습니다.
각 관리화면에 대해서는 다음 글에서 자세히 다뤄보도록 하겠습니다.
'DevOps' 카테고리의 다른 글
오픈소스로 구성하는 데브옵스 시스템 - 서비스 디스커버리 구성 (2) 2017.05.21 오픈소스로 구성하는 데브옵스 시스템 - Marathon을 이용한 App실행 (0) 2017.04.26 오픈소스로 구성하는 데브옵스 시스템 - OS 와 Docker 설치 (0) 2017.04.04 오픈소스로 구성하는 데브옵스 시스템 - 빌드와 배포 (0) 2017.04.03 오픈소스로 구성하는 데브옵스 시스템 - 개념이해 (0) 2017.03.30