Showing posts with label Open Source. Show all posts
Showing posts with label Open Source. Show all posts

Friday, October 10, 2014

오픈스택(OpenStack)이란?


오픈스택이란?

오픈스택은 오픈소스 클라우드 컴퓨팅 소프트웨어로 2010년 나사와 랙스페이스 (Rackspace)의 공동프로젝트로 시작되었고 현재는 오픈스택 재단에서 운영되고 있습니다. 오픈스택은 현재 HP, AT&T, Intel과 우리 나라 기업 중 삼성과 KT등 많은 대기업들의 지원을 받고 있으며 2014년 10월 현재 408개의 회사 그리고 18,813명의 개발자가 개발에 참여하고 있는 전 세계에서 가장 큰 오픈 소스 커뮤니티를 보유하고 있는 클라우드 프로젝트입니다. 오픈스택 소프트웨어는 하나의 소프트웨어가 아닌 여러 개의 소프트웨어(또는 컴포넌트)로 구성이 되어 있는데 다음 파트에서 각각의 소프트웨어에 대해 좀더 상세히 다루도록 하겠습니다. 오픈스택은 현재 6개월 단위로 새 버전을 출시하고 있으며 매 버전마다 프로젝트 이름 (또는 릴리즈명)이 있는데 현재 가장 최근 버전의 프로젝트 이름은 지난 4월에 나온 아이스하우스(IceHouse)이며 이달 중순에 새 버전인 주노(Juno)가 출시 예정입니다.

오픈스택의 구성 및 구성원 각각의 정보
위에 언급한 것처럼 오픈스택은 여러 개의 컴포넌트로 구성이 되어있는데 2014년 10월 현재 총 10개의 컴포넌트가 정식으로 오픈되어 있으며 각각의 컴포넌트에 대한 간략한 설명은 아래와 같습니다. (*괄호 안의 이름은 해당 컴포넌트에 대한 프로젝트 이름입니다.)
  • Compute (Nova): 컴퓨트는 오픈스택 시스템에 연결된 하이퍼바이저에 행하는 모든 행위 (예를 들어 VM의 생성 또는 삭제)를 시행/ 관리하는 역할을 하는 사실 상 오픈스택에서 가장 중요한 역할을 하는 컴포넌트입니다. 
  • Dashboard (Horizon): 대쉬보드는 오픈스택 시스템 관리자를 위한 Web UI이며 관리자는 이 UI를 통해 오픈스택을 관리할 수 있습니다.
  • Object Storage (Swift): 오픈스택은 두가지 타입의 스토리지 서비스를 제공하는 그 중에 하나인 Object Storage 스위프트입니다. 오브젝트 스토리지에 대해 간략하게 설명하면 데이터를 오브젝트 단위로 저장하는 방식입니다.
  • Block Storage (Cinder): Swift와 함께 오픈스택이 제공하는 또 다른 스토리지 서비스는 Block Storage - Cinder 입니다. 이 스토리지 서비스는 우리가 일반적으로 사용하는 컴퓨터의 하드디스크에서 사용되고 있는 방식으로 데이터를 블록 단위로 저장하는 방식입니다.
  • Networking (Neutron): 네트워킹 서비스인 Neutron은 오픈스택 내의 IP address들과 네트워킹을 관리하는 기능을 제공하는 컴포넌트입니다.
  • Identity Service (Keystone): 아이덴티티 서비스는 오픈스택 내의 Authentication과 Authorization 기능을 제공하는 컴포넌트입니다.
  • Image Service (Glance): 이미지 서비스는 VM으로 생성될 이미지 파일들을 관리하는 기능을 제공하는 컴포넌트입니다. 이미지 서비스를 이용하게 되면 자주 생성하는 VM 같은 경우에 매번 이미지 파일을 업로드하지 않고 업로드한 이미지 파일을 템블릿처럼 사용할 수 있습니다.
  • Telemetry (Ceilometer): 텔레메트리는 사용자의 사용량을 측정해서 알려주는 기능을 제공하는 컴포넌트로 서비스 프로바이더 회사들에게 유용한 기능을 제공하는 컴포넌트입니다.
  • Orchestration (Heat): 오케스트레이션은 미리 작성된 스크립트와 준비된 템플릿을 이용해서 자동으로 개발 인프라를 구축할 수 있는 기능을 제공하는 컴포넌트입니다.
  • Database Service (Trove): 데이터 베이스 서비스는 이름 그대로 오픈스택 시스템 상에서 데이터 베이스 서비스를 구축할 수 있게 도와주는 기능을 제공하는 컴포턴트입니다.

왜 사용하나요?
많은 기업들이 오픈스택 사용을 결정하는 가장 큰 이유는 아래와 같습니다.
  • Open Source: 아무래도 가장 큰 장점 중에 하나가 바로 라이센스 비용없이 무료로 사용할 수 있는 오픈소스라는 점일 것입니다.
  • 거대한 커뮤니티: 위에 언급한 대로 오픈스택은 현재 많은 회사와 개인 개발자들이 참여/기여하고 있는 프로젝트이기 때문에 지속적으로 업데이트가 되고 있고 앞으로도 발전 가능성이 큰 프로젝트입니다. (반대로 커뮤니티가 작은 경우에는 중간에 프로젝트 자체가 중단이 되거나 버그가 발생했을 때 해결책이 빠르게 업데이트가 되지 않아서 직접 문제를 해결해야하는 일들이 발생할 수 있기 때문에 실제 제품화 할 때는 큰 문제가 될 수 있습니다.)
  • 다양한 하이퍼바이저 지원: 오픈스택은 다양한 하이퍼바이저(ESXi, Hyper-V, KVM, Xen 등)들을 지원하기 때문에 오픈스택을 사용해서 여러 다른 종류의 하아퍼바이저가 설치된 호스트들을 연결/관리할 수 있는 시스템을 제작할 수 있는 이점이 있습니다. 
그렇지만 위와 같은 장점에도 불구하고 아직까지 오픈스택은 많은 회사들이 사용에 어려움을 표현하고 있으며 아래는 오픈스택 사용시 어려운 점 또는 개선해야 할 점입니다.
  • 아직 완성되지 않은 서비스: 이제 출범한지 4년 정도 밖에 안된 프로젝트이고 오픈 소스 프로젝트이기 때문에 아직 부족한 기능이 많고 프로젝트가 컴포넌트 단위로 진행이 되기 때문에 이미 구축된 시스템도 하나의 컴포넌트에 문제가 발생했을 때 시스템 전체에 문제가 생기는 등 아직 전반적으로 불안정한 상태입니다. 
  • 시스템 구축의 어려움: 제대로된 오픈스택 시스템의 구축을 위해서는 클라우드 관련 다양한 지식 뿐만 아니라 네트워크나 시스템 관련 많은 경험/지식이 필요합니다. 또한 문제 발생 시 진단할 수 있는 API의 제공도 아직 부족하기 때문에 문제 해결에 많은 어려움이 있습니다.  
  • 협력업체와의 애매한 포지션으로 인해 생기는 문제점 (예:VMware, Citrix) 오픈스택 프로젝트를 지원하는 가장 큰 업체 중에 하나인 VMware는 협력업체이자 경쟁사이고 이런 애매한 포지션 때문에 전폭적인 지원을 받지 못하는 편입니다.
  • 체계적이지 못한 문서: 오픈스택 웹사이트에서 많은 문서들을 지원하고 있지 못하나 겹치는 부분도 많고 체계적이지 못 한 것이 사실입니다. 
이상 오픈스택에 대해 간략하게 정리해봤습니다. 혹시 잘못된 정보가 있거나 부족한 점이 있다면 글 남겨주세요. 나중에 시간이 된다면 간단한 오픈스택 시스템을 구축하는 과정에 대한 블로그를 작성해서 올리도록 하겠습니다.

Hope this helps!

Friday, September 19, 2014

SonarQube 설치 (CentOS 6.5 64-bit)

  1. SonarQube 설치 전에 필요한 것
    1. CentOS 6.5 (64-bit)가 설치된 시스템 (또는 VM)
    2. Java 설치 (최소 1.6 버전 이상)
  2. SonarQube 설치
    1. http://www.sonarqube.org/downloads 에서 최신 버전 다운로드 (이 포스트에서는 4.3.2 버전이 사용되었습니다.)
    2. 압축을 푼 후 '/opt' 폴더로 이동
  3. PostgreSQL 설치 
    1. SonarQube를 사용하기 위해서는 기본적으로 DB가 설치 되어 있어야 하며 이 포스트에서는 PostgreSQL을 사용하도록 하겠습니다. 
    2. Dependency 관련 문제 발생을 막기 위해 '/etc/yum.repos.d/CentOS-Base.repo' 파일에 있는 '[base]' 부분과 '[update]' 부분에 아래의 라인을 추가.
      1. exclude=postgresql*
    3. CentOS 6 64-bit 버전용 PostgreSQL 9.3의 PGDG RPM 파일 인스톨
      1. yum localinstall http://yum.postgresql.org/9.3/redhat/
        rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
      2. 추가설명: 이 버전은 2014년 9월 현재 가장 최신 버전이며 만약 더 나중 버전이
        나왔다면 그 버전의 RPM 파일을 인스톨 하시기 바랍니다. 
    4. PostgreSQL 인스톨
      1. 아래의 명령어를 이용해서 인스톨 가능한 poastgreSQL 패키지들을 출력한 후
        1. yum list postgres*
      2. 가장 최근의 stable한 버전의 PostgreSQL 패키지를 찾아서 인스톨하면 됩니다.
        예를 들어 가장 기본적인 PostgreSQL 9.3 Server 패키지를 인스톨하려고 한다면
        아래의 명령어를 실행하세요. 
        1. yum install postgresql93-server
  4. PostgreSQL JDBC 드라이버 다운로드
    1. 웹사이트 (https://wiki.postgresql.org/wiki/YUM_Installation)에서 JDBC4
      Postgresql 드라이버를 다운로드하세요.
    2. 다운로드 받은 드라이버를 '/opt/sonarqube-4.3.2/extensions/jdbc-driver/postgresql' 폴더로 옮기고 기존에 있던 'postgresql-[version].jebc4.jar' 파일은 삭제를 하세요. (참고로 sonarqubu-4.3.2는 postgresql-9.1-901-1.jdbc4.jar를 기본으로 포함하고 있습니다.)
  5. 'root' 아이디로 'sonar' 아이디 생성
    1. adduser sonar
      passwd sonar
      New password: sonar
      Retype new password: sonar
  6. 'sonarqube' 폴더의 owner를 새로 생성한 'sonar'로 변환
    1. chown -R sonar /opt/sonarqube-4.3.2
  7. PostgreSQL 셋팅 설정
    1. PostgreSQL 설정 파일을 다른 네트워크나 웹서버에서 유저 아이디와 패스워드를 이용해서 접속할 수 있도록 변경
      1. vim /var/lib/pgsql/9.3/data/pg_hba.conf
      2. pg_hba.conf 파일의 'local'과 'host'의 method 부분을 아래와 같이 'trust'로 변경
      3. local all all              trust
        host  all all 127.0.0.1/32 trust
    2. PostgreSQL 서비스를 시작하고 유저를 'postgres'로 변경
      1. service postgresql-9.3 start
        su - postgres
    3. PostgreSQL에 접속(실행)한 후 PostgreSQL 안에서 새 유저 sonar를 생성한 후 실행 종료
      1. psql
        postgres=# CREATEUSER -d sonar;
        postgres=# CREATE DATABASE sonar OWNER sonar;
        postgres=# ALTER USER sonar SET search_path to sonar;
        postgres=# \q
    4. 리눅스 시스템에서 유저를 'sonar'로 변경한 후 PostgreSQL을 다시 실행하고 'sonar' 스키마를 생성
      1. su - sonar
        psql
        sonar=# CREATE SCHEMA sonar;
        sonar=# \q
  8. SonarQube 셋팅 설정
    1. '/opt/sonarqube-4.3.2/conf/sonar.properties' 에 있는 파일에 있는 데이터베이스 관련 설정을 아래와 같이 변경
      1. sonar.jdbc.username=sonar
        sonar.jdbc.password=sonar
        sonar.jdbc.url=jdbc:postgresql://localhost/sonar
  9.  SonarQube 서비스 시작
    1. /opt/sonarqube-4.3.2/bin/sonar.sh start
  10. SonarQube의 웹 UI 화면 Access
    1. 웹브라우저에서 http://localhost:9000 을 입력하면 아래와 같은 화면이 나옵니다. 

  11. Troubleshooting
    1. Firewall 문제
      1. 만약 웹 UI에 접속이 안된다면 리눅스 시스템의 Firewall을 아래의 리눅스 커맨드를 이용해서 disable한 후에 다시 시도하세요
        1. service iptables stop
  12. Sources
    1. http://docs.codehaus.org/display/SONAR/Requirements
    2. https://wiki.postgresql.org/wiki/YUM_Installation
    3. http://www.cyberciti.biz/faq/psql-fatal-ident-authentication-failed-for-user/ 
    4. http://docs.codehaus.org/display/SONAR/Installing