미루고 미룬 Ceph 오브젝트/블럭 스토리지의 설치 매뉴얼 작성을 시작한다...
글쓴이의 소개글에 써있지만 다른 얘기를 추가하자면,
현재 글쓴이가 근무하는 하와이 대학교 사범대학에는 캐노니컬 본사에서 파견나온 오픈스택 기술팀의 지원으로 구축되어진 오픈스택 클라우드 시스템이 운영되는 중이다. 다만, High Availability가 빠진채로 구축되어진 그들의 실력에 너무나도 큰 실망을 하게된 글쓴이의 사수가 이걸 갈아엎고자 오픈스택의 나름 초전문가 집단이라는 Mirantis와 기술지원 협약을 맺고 HA에 Ceph 스토리지를 붙여서 오픈스택 클라우드 시스템 전체를 제대로 구축하려는 계획을 갖고있다. Ceph를 개발한 사람이 세운 회사인 InkTank와도 글쓴이의 사수가 몇번의 전화통화를 했었는데, 그쪽 입장에서는 아무래도 정부쪽 도입 차원에서의 또다른 케이스 스터디도 될겸 (주립대학은 미국 주정부에서 하나의 부서이다), 어느정도의 기술지원을 해줄 것으로 보인다 (규모가 작긴 해도 주립대학에서 도입하는 것이다보니 나름 이름값은 하나보다). 미란티스 기술지원팀이 6월 중순에 하와이 들어와서 3주간 머무를 예정이며 7월이면 아마 Swift와 Quantum이 제외된 오픈스택 클라우드 시스템을 가질 것으로 예상 중이다.
이에 대비하기 위해, 글쓴이의 사수께서는 Ceph 스토리지 클러스터링 구축에 대한 노하우를 미리 쌓기위해 글쓴이에게 그 임무를 맡겼으며, 대략 3대로 이루어진 클러스터를 가상머신과 실제 서버에 약 5회 정도 설치하고 약간의 테스트를 실시하였다. 시간관계상, 인력관계상, 그리고 여건상 자세한 테스트는 할 수 없었다 (단 두명으로 사범대학 전체 서버를 관리한다). 미국 최대의 컴퓨터 소매점인 Bestbuy에서 최근 Ceph로 스토리지를 갈아탔다고 했는데, OSD용으로 900대를 세팅했다고 한다. 이외 몇군데 케이스가 더 있긴한데 자료가 공개된 게 없어서 자세한 건 알 수 없지만, Ceph가 이젠 더 이상 프로젝트 단계는 아닌 것만은 분명한 것 같다. 따라서, 자세한 테스트는 글쓴이의 사수도 그냥 믿고 건너뛰는 것 같았다.
본 매뉴얼은 Ceph 오브젝트/블럭 스토리지 클러스터를 우분투 리눅스 서버에 설치하는 방법을 기술한 매뉴얼이다. 매뉴얼이라고 얘기했지만 사용법에 대한 매뉴얼이 아니라 "설치법"에 대한 매뉴얼이다. 설치한 환경은 맥북과 패러럴즈를 이용하여 매뉴얼을 작성했지만, 실제 글쓴이는 맥북+패러럴즈 뿐만 아니라 리눅스+버츄얼박스와 실제 서버까지 합쳐 대략 5번 이상 설치를 해봤다고 위에 이미 언급했으므로, 분명히 "된다" 라고 말씀드린다. 따라서, 설치환경은 크게 문제가 되지않으므로 그냥 넘어가고 준비물에 대해 설명한다.
1. 본 매뉴얼을 따라할 수 있는 컴퓨터 최소 3대 이상 혹은 버츄얼박스/VMware/패러럴즈 등의 가상머신 프로그램
2. 만약 가상머신으로 실습해보실 분이라면, 3대 이상의 가상머신을 굴릴 수 있는 CPU와 램, 그리고 하드디스크 용량
3. 리눅스와 네트워크, 그리고 터미널 사용에 대한 충분한 상식
설치에 앞서 본 매뉴얼을 따라하는데 필요한 환경을 설정하고 그외 몇가지 사항에 대해 설명한다.
1. 필요한 서버: Ceph 1대, OSD 3대
2. Ceph 노드에는 하나의 운영체제용 하드디스크만 있으며, 자료 저장 용도(osd)로는 사용하지 않는다.
3. OSD 노드에는 3대의 하드디스크가 있으며 하나는 리눅스 OS 설치 및 운영용이며 나머지 2대는 Ceph 스토리지 클러스터용(osd)이다.
4. 각각의 OSD 노드에는 2기가의 램, OS 설치용으로는 10기가 하드디스크, 그리고 OSD용으로 30기가 하드디스크 2개씩을 생성한다.
5. OSD용으로 할당하는 2개의 하드디스크는 절대로 LVM으로 묶지 않도록 한다. 다만, 하드웨어 RAID 카드에 의한 RAID-0은 괜찮다.
5. 세번째 OSD 노드는 OSD 추가설치에 대해 설명할 예정이므로 기본적인 설치는 생략한다.
6. 글쓴이는 우분투 한국 로코팀의 공식 컨택터이므로, 운영체제는 모두 우분투 12.04 LTS 64비트판으로만 설명한다 (32비트로는 해보질 않았지만, 32비트로 스토리지 서버 운영하는 곳은 없을 거라고 본다).
7. Ceph에 대한 개념이나 기타 용어 설명 등은 여기나 혹은 구글을 참고하시고, 본 매뉴얼은 전적으로 Ceph의 공식 문서를 보고 작성했다. 참고로, Ceph 공식문서는 제대로 완성되지 않은게 많고, 최신 버전이 반영되어있지 않으며, 게다가 군데군데 대충 건너뛴 부분도 많다.
8. Ceph나 오픈스택 공식 문서에 의하면, 오픈스택에 Ceph 스토리지를 붙여서 사용하는 방법이나 Keystone 통합인증방법 등에 대한 설명이 있긴하지만, 오픈스택에 관련된 부분에서는 글쓴이의 개인 컴퓨터에 오픈스택을 구축해서 시연하는 것을 보여주는 것이 쉽지않기 때문에 이 부분은 생략한다.
9. DevStack은 완전한 오픈스택 시스템이라고 하기에는 좀 뭔가 부족한데다, 여러가지 설정과 경로가 조금 다르기 때문에 역시 제외한다 (글쓴이가 수도없이 많이 해봤는데, 이게 가상머신이라 안되는건지 devstack이라 안되는건지 알 수가 없어서 포기했다). 개인적인 의견으로는, devstack은 "오픈스택이란 대충 이런거다" 라고 맛만 보여주는 정도의 데모 버전이라고 생각한다.
10. 글쓴이가 근무하는 곳의 오픈스택 클라우드 시스템은 이미 여러가지 서비스가 운영되고 있기 때문에 절대 건드릴 수가 없다. 따라서, 어쨌든 오픈스택에 관한 부분은 Swift API에 대한 부분을 제외하고는 모두 생략한다.
11. 5월 7일자로 새로운 안정버전인 CuttleFish가 나왔고, 그러면서 매뉴얼대로 작동되지 않는 부분이 좀 있어서 심하게 많이 당황했었다. 게다가 아직 공식문서에도 제대로 반영이 된게 없어서, 결국 새로운 버전으로 매뉴얼을 제작하는건 에러메시지도 막 건너뛰고 그러는 것이 별로 보기좋지 않아서 이전 안정버전인 Bobtail로 설명하기로 한다. 참고로 CuttleFish는 CentOS에 대한 지원이 강화되었다. 다시 말하자면, 이전 버전까지는 우분투/데비안에서만 공식적으로 돌아갔었다.
12. 파일을 복사해서 각각의 스토리지들이 어떻게 복사가 되고 하는 등의 "테스트"는 진행하지 않는다. 테스트까지 진행할시 너무나도 양이 많아지기 때문에 본 매뉴얼은 전적으로 "설치"와 설치에 대한 확인작업만 설명하며, 테스트는 이 글을 읽는 분들께 부탁드린다.
13. 분명히 틀린 부분도 있을 것이고 잘못 설명한 것도 있을 것이며, 글쓴이가 제대로 이해하지 못한 부분도 있을 것이다. 이 매뉴얼을 작성하기 위해 많은 시간을 투자한 글쓴이를 위해, 이 글을 읽는 분들께 너그러움을 부탁드린다.
다음 편으로...