코로싱크
1. 개요
1. 개요
코로싱크 클러스터 엔진은 클러스터 컴퓨팅 환경에서 노드 간의 통신과 상태 관리를 위한 오픈 소스 그룹 커뮤니케이션 시스템이다. 이 소프트웨어는 고가용성 클러스터를 구성하는 핵심 기반 기술로, 다수의 서버가 하나의 시스템처럼 협력하여 동작할 수 있도록 한다. 주로 리눅스 기반의 서버 환경에서 페이스메이커와 같은 클러스터 리소스 관리자와 결합되어 널리 사용된다.
코로싱크는 OpenAIS 프로젝트에서 파생되었으며, 2008년에 처음 발표되었다. 이 엔진의 핵심은 토템 프로토콜이라는 신뢰성 있는 메시지 전달 및 멤버십 프로토콜을 구현하는 데 있다. 이를 통해 클러스터 내 모든 노드에 메시지가 순서대로, 정확하게 전달되도록 보장하며, 노드의 가입 또는 이탈과 같은 멤버십 변화를 실시간으로 감지하고 합의에 도달한다.
C 언어로 작성된 코로싱크는 크로스 플랫폼을 지향하며, New BSD License 하에 배포되어 상용 및 비상용 목적으로 자유롭게 사용, 수정, 재배포할 수 있다. 개발은 코로싱크 개발자 커뮤니티에 의해 주도되며, 지속적인 유지보수와 새로운 안정화 버전이 출시되고 있다.
2. 역사
2. 역사
코로싱크의 역사는 2008년으로 거슬러 올라간다. 이 프로젝트는 OpenAIS 프로젝트에서 기원했으며, 그 목표는 커뮤니티가 정의한 오픈 소스 클러스터 엔진을 개발하고 지원하는 것이었다. 초기에는 하트비트 프로젝트와 함께 리눅스 기반 고가용성 클러스터 솔루션의 핵심 구성 요소로 자리 잡았다.
코로싱크는 토템 프로토콜이라는 신뢰할 수 있는 그룹 통신 시스템을 구현한 것이 특징이다. 이 프로토콜은 가상 동기성 모델을 기반으로 하여, 클러스터 내 노드들 간에 메시지의 순서가 보장된 전달과 정확한 멤버십 정보를 제공한다. 이러한 기술적 기반 덕분에 코로싱크는 페이스메이커와 같은 클러스터 리소스 관리자와 결합되어 널리 사용되었다.
프로젝트는 지속적으로 발전을 거듭하여 2025년 11월에 안정화 버전 3.1.10이 발표되었다. New BSD 라이선스 하에 배포되는 코로싱크는 크로스 플랫폼을 지원하며, C 언어로 작성되어 높은 성능을 유지하고 있다. 이는 코로싱크가 단순한 포크를 넘어 독립적이고 활발한 개발 생태계를 구축했음을 보여준다.
3. 기술적 특징
3. 기술적 특징
3.1. 토템 프로토콜
3.1. 토템 프로토콜
토템 프로토콜은 코로싱크 클러스터 엔진의 핵심 통신 메커니즘이다. 이 프로토콜의 정식 명칭은 토템 싱글 링 오더링 앤드 멤버십 프로토콜(Totem Single Ring Ordering and Membership protocol)이다. 이는 클러스터 내의 여러 노드 간에 메시지가 전달되는 순서를 보장하고, 현재 클러스터에 참여 중인 노드들의 구성원 정보를 일관되게 유지하는 역할을 담당한다.
이 프로토콜은 신뢰할 수 있는 순서화된 메시지 전달을 구현하여, 모든 노드가 동일한 순서로 동일한 메시지를 수신하도록 한다. 이는 고가용성 클러스터에서 자원 관리나 장애 조치와 같은 중요한 결정을 내릴 때 데이터의 일관성을 유지하는 데 필수적이다. 또한, 노드가 추가되거나 제거될 때, 또는 네트워크 분할이 발생했을 때 클러스터의 새로운 멤버십을 신속하게 합의하여 구성한다.
토템 프로토콜은 기본적으로 토큰 패싱 방식을 사용하는 논리적 링 구조를 형성한다. 토큰이 링을 순환하면서 메시지 전송 권한을 부여하고, 네트워크 상태를 확인하는 데 사용된다. 이 설계는 분산 시스템에서 발생할 수 있는 뇌 분열 현상을 방지하고, 시스템의 안정성과 예측 가능성을 높이는 데 기여한다. 코로싱크는 이 프로토콜의 대표적인 오픈 소스 구현체로 자리 잡았다.
3.2. 아키텍처
3.2. 아키텍처
코로싱크의 아키텍처는 고가용성 클러스터를 구성하는 노드들 간의 안정적인 통신과 상태 동기화를 보장하는 데 중점을 둔다. 핵심은 토템 프로토콜을 기반으로 한 멀티캐스트 또는 유니캐스트 통신을 통해 메시지의 순서 있는 전달과 클러스터 멤버십을 관리하는 것이다. 이 프로토콜은 하나의 논리적 링을 형성하여 모든 노드가 동일한 순서로 메시지를 수신하도록 보장하며, 노드의 추가 또는 장애 발생 시 빠르게 새로운 멤버십을 합의한다.
시스템은 크게 CPG (Closed Process Group) 모델과 QUORUM 시스템으로 구성된다. CPG는 확장된 가상 동기성 모델을 구현하여, 애플리케이션 프로세스 그룹 내에서 메시지 전달 순서와 멤버십 변경 알림을 제공한다. 쿼럼 서비스는 클러스터의 가용성을 결정하는 데 필수적이며, 과반수 이상의 노드가 정상적으로 통신할 때만 서비스를 활성화함으로써 스플릿 브레인 현상을 방지한다.
또한 코로싱크는 확장성과 성능을 위해 KNET이라는 네트워크 추상화 계층을 포함한다. KNET는 다양한 네트워크 트랜스포트와 링크 장애 감지 메커니즘을 지원하며, 노드 간 다중 통신 경로를 구성하여 네트워크 복원력을 높인다. 이러한 모듈식 설계는 리눅스 및 유닉스 기반 시스템에서 페이스메이커와 같은 클러스터 리소스 관리자와 원활하게 통합되어 완전한 고가용성 솔루션을 구축할 수 있는 기반을 제공한다.
3.3. 주요 기능
3.3. 주요 기능
코로싱크의 주요 기능은 클러스터 내의 노드들 간에 안정적인 통신과 상태 정보를 동기화하는 데 있다. 이는 고가용성 서비스를 구축하기 위한 핵심 기반을 제공한다. 코로싱크는 토템 프로토콜을 구현하여 멀티캐스트 또는 유니캐스트를 통해 메시지의 순서 있는 전달과 노드의 멤버십 변화를 감지한다. 이를 통해 클러스터의 모든 구성원이 동일한 정보를 동일한 순서로 받아들이도록 보장한다.
코로싱크는 쿼럼 및 투표 시스템을 관리하여 클러스터의 일관성을 유지한다. 네트워크 분할 상황에서도 정족수를 확보한 노드 그룹만이 서비스를 계속 실행하도록 하여 스플릿 브레인 현상을 방지한다. 또한, 확장 가상 동기성 모델을 지원하여 애플리케이션에 신뢰할 수 있는 메시징 계층을 제공한다.
이 엔진은 페이스메이커와 같은 클러스터 리소스 관리자에게 필수적인 인프라를 공급한다. 리소스 관리자는 코로싱크가 제공하는 멤버십 정보와 메시징 채널을 통해 서비스의 상태를 모니터링하고, 장애 발생 시 다른 노드로 자동으로 페일오버를 조정한다. 따라서 코로싱크는 고가용성 클러스터링 솔루션의 통신 백본 역할을 수행한다.
4. 라이선스
4. 라이선스
코로싱크는 New BSD License를 채택한 오픈 소스 소프트웨어이다. 이 라이선스는 사용, 수정, 배포에 있어 매우 제한이 적은 퍼미시브 라이선스로 분류된다. 사용자는 소스 코드 형태나 바이너리 형태로 자유롭게 코로싱크를 재배포할 수 있으며, 상용 소프트웨어에 포함시켜 판매하는 것도 가능하다.
라이선스의 주요 조건은 소프트웨어를 재배포할 때 원저작자의 저작권 고지사항과 라이선스 조건을 유지해야 한다는 점이다. 하지만 수정된 버전을 배포할 때 반드시 소스 코드를 공개해야 할 의무는 없다. 이러한 자유로운 라이선스 정책은 코로싱크가 기업 환경을 포함한 다양한 클러스터 컴퓨팅 시나리오에서 널리 채택되는 데 기여했다.
코로싱크의 라이선스 모델은 그 모체가 된 OpenAIS 프로젝트의 라이선스와도 연관이 있다. 이처럼 허가적 라이선스를 채택함으로써, 코로싱크 개발자 커뮤니티는 프로젝트의 광범위한 사용과 커뮤니티 주도의 지속적인 개발을 장려하는 환경을 조성했다.
5. 사용 사례
5. 사용 사례
코로싱크는 고가용성 클러스터를 구성하는 핵심 기반 기술로 널리 사용된다. 주로 리눅스 기반의 서버 환경에서 클러스터 내 노드 간의 통신, 멤버십 관리, 메시지 순서화를 담당하여 시스템의 안정성과 신뢰성을 보장한다. 그 핵심 사용 사례는 페이스메이커와 같은 클러스터 리소스 관리자와 결합하여 완전한 고가용성 솔루션을 제공하는 것이다.
가장 대표적인 사용 사례는 웹 서버, 데이터베이스, 파일 서버와 같은 중요한 엔터프라이즈 애플리케이션을 위한 고가용성 클러스터 구축이다. 예를 들어, PostgreSQL이나 MariaDB와 같은 데이터베이스를 이중화하거나, Apache HTTP Server나 Nginx와 같은 웹 서비스의 장애 조치 클러스터를 구성할 때 코로싱크가 하부 통신 계층을 제공한다. 이를 통해 한 노드에 장애가 발생하더라도 다른 노드가 서비스를 즉시 인계받아 다운타임을 최소화할 수 있다.
또한, 코로싱크는 스토리지 클러스터링에도 활용된다. DRBD와 같은 복제 스토리지 솔루션과 함께 작동하여 공유 스토리지가 없는 환경에서도 고가용성 블록 스토리지를 제공할 수 있다. 이는 가상화 플랫폼이나 클라우드 컴퓨팅 인프라에서 중요 서비스의 지속성을 보장하는 데 기여한다. 코로싱크의 경량 설계와 효율성은 이러한 다양한 IT 인프라 시나리오에서 선호되는 선택지가 되게 한다.
6. 관련 소프트웨어
6. 관련 소프트웨어
6.1. 페이스메이커
6.1. 페이스메이커
페이스메이커는 코로싱크를 핵심 클러스터 통신 계층으로 사용하는 고가용성 클러스터 리소스 관리자이다. 이 소프트웨어는 리눅스 기반 클러스터 컴퓨팅 환경에서 애플리케이션과 시스템 리소스의 가용성을 모니터링하고 관리하는 역할을 담당한다. 페이스메이커는 노드 장애나 서비스 중단 시 자동으로 리소스를 다른 정상 노드로 이전하여 서비스의 연속성을 보장한다.
페이스메이커의 아키텍처는 코로싱크가 제공하는 안정적인 그룹 통신과 쿼럼 형성, 멤버십 관리 기능 위에 구축된다. 이를 통해 클러스터 내 모든 노드는 일관된 상태 정보를 공유하며, 리소스 할당과 펜싱 같은 중요한 결정을 조율할 수 있다. 관리자는 XML 기반의 CIB (Cluster Information Base)를 통해 클러스터 구성을 정의하고, CRM (Cluster Resource Manager)이 이 구성을 실행한다.
주요 기능으로는 리소스 에이전트를 통한 다양한 서비스 지원, 고급 리소스 제약 조건 설정, 그래픽 및 명령줄 관리 도구 제공 등이 있다. 페이스메이커는 가상 머신 클러스터, 데이터베이스 서비스, 웹 서버 팜 등 다양한 고가용성 시나리오에 널리 사용된다. 코로싱크와의 긴밀한 통합 덕분에 확장성과 안정성이 뛰어난 클러스터 솔루션을 구성할 수 있다.
7. 여담
7. 여담
코로싱크는 원래 OpenAIS 프로젝트의 일부로 개발되기 시작했다. OpenAIS는 고가용성 클러스터링을 위한 표준 API인 애플리케이션 인터페이스 명세를 구현하는 오픈 소스 프로젝트였다. 이후 코로싱크는 핵심 그룹 통신 시스템으로 독립하여 발전했으며, OpenAIS의 기능 중 상당수는 페이스메이커와 같은 상위 레이어 클러스터 관리자에 의해 계승되었다.
이 프로젝트의 이름 '코로싱크(Corosync)'는 '협력적인 동기화(Collaborative Synchronization)'라는 개념에서 유래했다. 이는 분산된 노드들이 마치 하나의 시스템처럼 협력하고 상태를 동기화하는 소프트웨어의 핵심 목적을 반영한다. 개발 초기부터 커뮤니티 주도의 오픈 소스 모델을 채택했으며, 이는 New BSD 라이선스 하에 활발한 개발과 광범위한 채용으로 이어졌다.
코로싱크는 리눅스 기반 고가용성 솔루션의 사실상의 표준 구성 요소 중 하나로 자리 잡았다. 특히 레드햇의 RHEL 고가용성 애드온과 SUSE Linux Enterprise Server의 고가용성 확장에 기본적으로 포함되어, 엔터프라이즈 환경에서 클러스터 인프라의 핵심을 이루고 있다. 또한 Kubernetes 등의 현대적인 컨테이너 오케스트레이션 플랫폼이 등장한 이후에도, 전통적인 가상 머신과 물리적 서버를 기반으로 하는 중요한 애플리케이션들의 고가용성을 보장하는 근간으로서 여전히 널리 사용되고 있다.
