문서의 각 단락이 어느 리비전에서 마지막으로 수정되었는지 확인할 수 있습니다. 왼쪽의 정보 칩을 통해 작성자와 수정 시점을 파악하세요.

Corosync | |
정식 명칭 | 코로싱크 클러스터 엔진 (Corosync Cluster Engine) |
개발자 | 코로싱크 개발자 커뮤니티 (The Corosync Development Community) |
최초 발표일 | 2008년 |
안정화 버전 | 3.1.10[1] |
프로그래밍 언어 | C |
운영 체제 | 크로스 플랫폼 |
종류 | 그룹 커뮤니케이션 시스템 |
라이선스 | New BSD License |
공식 웹사이트 | corosync.github.io/corosync/ |
상세 정보 | |
저장소 | github.com/corosync/corosync |
기술 설명 | 토템 싱글 링 오더링 앤드 멤버십 프로토콜(Totem Single Ring Ordering and Membership protocol)의 오픈 소스 구현체 |
기원 | OpenAIS 프로젝트 |
목표 | 커뮤니티가 정의한 오픈 소스 클러스터의 개발, 출시, 지원 |

코로싱크 클러스터 엔진은 고가용성 클러스터를 구성하기 위한 핵심적인 그룹 커뮤니케이션 시스템이다. 이 소프트웨어는 클러스터 내의 여러 노드들이 서로의 상태를 인식하고, 메시지를 신뢰할 수 있는 순서로 전달하는 기능을 제공한다. 코로싱크의 주요 목표는 커뮤니티가 정의한 오픈 소스 클러스터 기술의 개발과 지원에 있다.
이 엔진은 OpenAIS 프로젝트에서 기원하였으며, 토템 싱글 링 프로토콜이라는 신뢰성 높은 통신 프로토콜의 오픈 소스 구현체이다. C 언어로 작성되었고, New BSD License 하에 배포되어 자유롭게 사용, 수정, 배포할 수 있다. 2008년에 처음 발표된 이후 크로스 플랫폼으로 개발되어 다양한 운영 체제에서 동작한다.
코로싱크는 단독으로 실행되기보다는 페이스메이커 같은 클러스터 리소스 관리자와 함께 사용되는 것이 일반적이다. 코로싱크가 노드 간의 통신과 멤버십을 관리하면, 페이스메이커는 이 정보를 바탕으로 애플리케이션이나 서비스의 장애 조치와 관리를 수행한다. 이러한 조합은 리눅스 기반의 고가용성 클러스터 솔루션에서 사실상의 표준으로 자리 잡았다.
코로싱크 개발은 공개된 GitHub 저장소를 통해 이루어지며, 전 세계의 개발자 커뮤니티에 의해 유지보수되고 있다.

코로싱크 클러스터 엔진은 2008년에 최초로 발표된 오픈 소스 그룹 커뮤니케이션 시스템이다. 이 프로젝트의 기원은 OpenAIS 프로젝트로 거슬러 올라간다. OpenAIS는 서비스 가용성에 필요한 기본적인 기능을 제공하는 클러스터 인프라의 오픈 소스 구현체를 목표로 했으며, 코로싱크는 그 핵심 구성 요소 중 하나로 개발되었다.
코로싱크는 토템 싱글 링 프로토콜이라는 신뢰할 수 있는 멀티캐스트 프로토콜의 구현체로서 시작했다. 이 프로토콜은 고가용성 클러스터에서 노드 간의 통신과 상태 동기화를 위한 안정적인 기반을 제공하는 데 중점을 두었다. 프로젝트는 BSD 허가서 하에 공개되어 자유롭게 사용, 수정, 배포될 수 있도록 했다.
시간이 지나며 코로싱크는 독립적인 프로젝트로 성장했고, 코로싱크 개발자 커뮤니티에 의해 활발히 유지보수되고 발전해 왔다. 그 주요 목표는 커뮤니티가 정의한 표준에 부합하는 오픈 소스 클러스터 기술의 개발과 지원을 지속하는 것이다. 이를 통해 코로싱크는 리눅스 기반 고가용성 솔루션 생태계의 중요한 기반 기술로 자리 잡게 되었다.

토템 싱글 링 프로토콜은 코로싱크의 핵심 통신 계층을 구성하는 프로토콜이다. 이 프로토콜은 클러스터 내의 모든 노드 간에 메시지를 신뢰할 수 있고 순서가 보장된 방식으로 전달하는 것을 목표로 설계되었다. '싱글 링'이라는 이름은 프로토콜이 논리적으로 단일 순환 구조를 사용하여 메시지를 순서화하고 멤버십 정보를 관리하는 데서 유래한다.
이 프로토콜의 주요 작동 원리는 토큰 패싱 메커니즘에 기반한다. 하나의 특수 메시지인 토큰이 클러스터 링을 따라 각 노드를 순차적으로 방문한다. 노드는 이 토큰을 소유할 때만 멀티캐스트 메시지를 전송할 수 있는 권한을 얻으며, 이를 통해 네트워크 상의 충돌을 방지하고 메시지 전송 순서를 엄격하게 통제한다. 이 방식은 분산 시스템에서 매우 중요한 전체 순서 브로드캐스트를 구현하는 기반이 된다.
토템 프로토콜은 또한 클러스터의 멤버십을 동적으로 관리하는 역할을 수행한다. 새로운 노드가 클러스터에 참여하거나 기존 노드에 장애가 발생하면, 프로토콜은 신속하게 이 변화를 감지하고 나머지 정상 노드들 간의 새로운 멤버십 목록에 대한 합의를 이루어낸다. 이 과정은 클러스터의 일관성과 가용성을 유지하는 데 필수적이다. 이러한 신뢰성 있는 메시징과 멤버십 서비스는 고가용성 클러스터 솔루션의 토대가 된다.

코로싱크의 핵심 임무는 클러스터 멤버십을 정확하게 관리하는 것이다. 이는 클러스터를 구성하는 모든 노드가 현재 누가 멤버인지에 대해 동일한 뷰를 공유하도록 보장하는 것을 의미한다. 코로싱크는 토템 싱글 링 프로토콜을 기반으로 하여, 네트워크를 통해 정기적인 하트비트 메시지를 교환함으로써 각 노드의 가용성을 지속적으로 모니터링한다.
노드에 장애가 발생하거나 네트워크 연결이 단절되면, 프로토콜은 이 변화를 감지하고 새로운 클러스터 멤버십을 형성하기 위한 합의 프로세스를 시작한다. 이 과정에서 모든 생존 노드들은 새로운 멤버십 구성에 동의하게 되며, 이는 분산 합의의 한 형태이다. 결과적으로 클러스터의 모든 노드는 정확히 동일한 시점에 동일한 멤버 목록을 인지하게 되어 데이터 불일치를 방지한다.
이러한 신뢰할 수 있는 멤버십 관리 기능은 고가용성 클러스터의 기반이 된다. 예를 들어, 페이스메이커 같은 클러스터 리소스 관리자는 코로싱크로부터 정확한 멤버십 정보를 제공받아, 장애가 발생한 노드에서 실행 중이던 서비스를 건강한 노드로 자동으로 이전하는 페일오버 결정을 내릴 수 있다. 멤버십 관리의 정확성 없이는 이러한 자동 복구 메커니즘이 신뢰할 수 없게 된다.
코로싱크는 멤버십 변화를 클러스터 애플리케이션에 알리기 위한 표준화된 인터페이스를 제공한다. 애플리케이션은 이러한 이벤트 알림을 구독하여 클러스터 상태 변화에 즉각적으로 대응할 수 있다. 이는 단순한 노드 모니터링을 넘어, 클러스터 인프라 전체의 조정된 행동을 가능하게 하는 필수적 서비스이다.
코로싱크의 핵심 기능 중 하나는 클러스터 내 모든 노드 간에 메시지가 신뢰할 수 있고 순서가 보장된 방식으로 전달되도록 하는 것이다. 이는 고가용성 클러스터에서 여러 노드가 동일한 상태 정보를 공유하고 일관된 결정을 내리는 데 필수적이다. 코로싱크는 이를 위해 토템 싱글 링 프로토콜을 구현하여, 네트워크를 통해 전송되는 각 메시지에 전역적으로 동일한 순서를 부여한다.
이 신뢰할 수 있는 메시지 순서화는 확장 가상 동기성 모델을 기반으로 한다. 이 모델은 클러스터 멤버십이 변경되는 시점을 기준으로 메시지 전달이 보장되는 그룹을 형성한다는 개념이다. 즉, 모든 노드는 멤버십 변경 전에 전송된 메시지를 동일한 순서로 수신하게 되며, 이는 분산 시스템에서 데이터 일관성을 유지하는 데 결정적인 역할을 한다.
이러한 메커니즘은 페이스메이커와 같은 클러스터 리소스 관리자가 정확한 장애 감지와 페일오버 결정을 내리는 토대를 제공한다. 또한 쿼럼 서비스와 같은 다른 클러스터 구성 요소들이 일관된 상태 정보를 바탕으로 동작할 수 있게 한다. 결과적으로, 코로싱크의 순서화 기능은 전체 클러스터 컴퓨팅 시스템의 안정성과 신뢰성을 보장하는 근간이 된다.
코로싱크는 고가용성 클러스터가 네트워크 분할이나 노드 장애와 같은 상황에서도 일관된 의사 결정을 내리고 데이터 무결성을 보장할 수 있도록 쿼럼 및 펜싱 기능을 제공한다.
쿼럼은 클러스터가 운영을 계속하기 위해 필요한 최소한의 온라인 멤버 수 또는 투표권을 의미한다. 코로싱크는 클러스터의 총 투표권을 기반으로 쿼럼을 동적으로 계산한다. 네트워크가 분할되거나 다수의 노드에 장애가 발생하면, 쿼럼을 유지하는 파티션(과반수 이상의 투표권을 가진 그룹)만이 클러스터 서비스를 계속 실행할 수 있다. 쿼럼을 잃은 파티션은 자동으로 중단되어 스플릿 브레인 현상(두 개의 독립적인 클러스터가 동시에 실행되어 데이터를 손상시키는 상황)을 방지한다.
펜싱은 쿼럼을 잃은 노드나 파티션을 격리시키는 메커니즘이다. 주로 STONITH(Shoot The Other Node In The Head) 방식으로 구현되며, 문제가 발생한 노드의 전원을 차단하거나 네트워크 접근을 차단하여 클러스터의 공유 자원(예: 디스크 어레이)에 대한 접근을 완전히 차단한다. 이는 장애 노드가 여전히 공유 저장 장치에 쓰기를 시도하여 데이터를 손상시키는 것을 방지하는 데 필수적이다. 코로싱크 자체는 펜싱 작업을 실행하지 않지만, 페이스메이커 같은 클러스터 리소스 관리자에게 정확한 멤버십 및 쿼럼 정보를 제공하여 펜싱을 트리거하는 데 결정적인 역할을 한다.

코로싱크는 자체적으로는 완전한 고가용성 클러스터 솔루션이 아니며, 주로 클러스터의 기본 통신 계층을 제공한다. 따라서 실제 애플리케이션과 서비스의 장애 조치 및 리소스 관리를 위해서는 클러스터 리소스 관리자가 필요하다. 페이스메이커는 바로 이러한 역할을 수행하는 핵심 구성 요소로, 코로싱크와 긴밀하게 연동되어 작동한다.
코로싱크는 페이스메이커에게 클러스터의 실시간 상태 정보를 전달한다. 이 정보에는 정확한 클러스터 멤버십 목록, 노드 간의 메시지 순서화, 그리고 쿼럼 상태가 포함된다. 페이스메이커는 코로싱크로부터 받은 이러한 정보를 바탕으로 클러스터 내 모든 노드에서 일관된 결정을 내린다. 예를 들어, 한 노드에 장애가 발생하면 코로싱크는 이를 감지하고 나머지 생존 노드들에게 통보하며, 페이스메이커는 이 정보를 받아 해당 노드에서 실행 중이던 서비스(가상 IP, 데이터베이스, 웹 서버 등)를 정상 노드로 자동으로 이동시킨다.
이러한 연동 구조는 리눅스 기반의 고가용성 클러스터 구성에서 사실상의 표준 스택을 형성한다. 시스템 관리자는 페이스메이커의 구성 도구(페이스메이커 CLI 또는 하우이)를 사용하여 리소스를 정의하고 모니터링하며, 코로싱크는 이 모든 노드 간 조정 작업의 신뢰할 수 있는 기반 통신 채널을 보이지 않게 유지한다. 결과적으로, 코로싱크와 페이스메이커의 조합은 단일 장애 지점을 제거하고 서비스의 연속성을 보장하는 강력한 플랫폼을 제공한다.
코로싱크는 고가용성 클러스터를 구성하는 핵심 기반 기술로 널리 사용된다. 고가용성 클러스터는 서버나 서비스의 중단 시간을 최소화하여 지속적인 가용성을 보장하는 것을 목표로 하며, 코로싱크는 이러한 클러스터 내 노드들 간의 통신과 상태 동기화를 담당한다. 코로싱크는 클러스터 멤버십을 관리하고 신뢰할 수 있는 메시지 전달을 제공함으로써, 리눅스 기반의 고가용성 솔루션을 구축할 수 있는 안정적인 토대를 마련한다.
일반적인 고가용성 클러스터 구성에서는 코로싱크가 클러스터 리소스 관리자인 페이스메이커와 함께 배포된다. 코로싱크는 클러스터의 '뇌'와 '신경계' 역할을 하여 모든 노드가 동일한 클러스터 뷰를 공유하도록 하고, 페이스메이커는 이 정보를 바탕으로 애플리케이션, IP 주소, 스토리지 같은 클러스터 리소스를 모니터링하고 장애 발생 시 다른 노드로 이동시키는 '팔과 다리' 역할을 수행한다. 이 조합은 웹 서버, 데이터베이스, 가상 머신 등 다양한 서비스의 고가용성을 구현하는 데 활용된다.
코로싱크를 사용한 클러스터 구성은 주로 액티브-패시브 방식으로 운영된다. 이 방식에서는 특정 리소스가 한 번에 하나의 노드(액티브 노드)에서만 실행되고, 다른 노드(패시브 노드)는 대기 상태를 유지하다가 장애 발생 시 즉시 인계받는다. 코로싱크의 쿼럼 시스템은 클러스터의 의사 결정 정족수를 관리하여, 네트워크 분할 상황에서도 데이터 손상이나 스플릿 브레인 현상을 방지하는 데 결정적인 역할을 한다.

코로싱크는 New BSD License로 배포되는 오픈 소스 소프트웨어이다. 이 라이선스는 매우 허용적인 조건을 가지며, 사용자에게 소스 코드의 사용, 수정, 재배포에 대한 광범위한 자유를 부여한다. 특히 상용 소프트웨어에 포함하여 재배포하거나 수정 버전을 배포하는 것에도 제한이 거의 없다는 점이 특징이다.
라이선스의 주요 내용은 저작권 고지사항과 면책 조항을 유지하는 조건 하에 자유롭게 소프트웨어를 활용할 수 있도록 하는 것이다. 이러한 허용적인 라이선스 정책은 코로싱크가 기업 환경을 포함한 다양한 고가용성 클러스터 구성에 널리 채택되는 데 기여한 중요한 요소 중 하나이다. 이는 리눅스 배포판이나 상용 제품에 쉽게 통합될 수 있게 한다.
코로싱크 프로젝트는 초기 OpenAIS 프로젝트에서 파생되었으며, 그 허용적인 라이선스 전통을 이어받았다. 프로젝트의 개발은 코로싱크 개발자 커뮤니티에 의해 주도되며, 공식 소스 코드 저장소와 이슈 트래커는 GitHub 플랫폼에서 호스팅되고 있다.

코로싱크는 주로 다른 클러스터 관리 소프트웨어와 함께 사용되며, 그 자체로 완전한 고가용성 솔루션을 제공하지는 않는다. 가장 대표적인 통합 사례는 페이스메이커(Pacemaker) 클러스터 리소스 관리자이다. 코로싱크는 페이스메이커에게 신뢰할 수 있는 클러스터 멤버십 정보와 메시지 전달 서비스를 제공하는 기반 통신 계층 역할을 한다. 이 조합은 리눅스 기반의 고가용성 클러스터를 구축하는 사실상의 표준 스택으로 자리 잡았다.
코로싱크의 기원은 오픈에이아이에스(OpenAIS) 프로젝트에 있다. 오픈에이아이에스는 서비스 가용성 포럼(Service Availability Forum)의 애플리케이션 인터페이스 사양(Application Interface Specification)의 오픈 소스 구현체였으며, 코로싱크는 초기에 그 통신 프레임워크로부터 분화되어 발전했다. 시간이 지나며 코로싱크는 더 가볍고 모듈화된 방향으로 진화하였고, 결국 오픈에이아이에스를 대체하게 되었다.
코로싱크와 유사한 목적을 가진 다른 그룹 커뮤니케이션 시스템으로는 크로노스(Kronos)나 스프레드(Spread) 툴킷 등이 있다. 또한, 코로싱크 엔진 자체는 다양한 상용 및 오픈 소스 고가용성 솔루션의 핵심 구성 요소로 채택되어 사용되고 있다. 프로젝트의 개발은 코로싱크 개발자 커뮤니티에 의해 주도되며, 공식 소스 코드 저장소와 이슈 트래커는 깃허브(GitHub) 플랫폼에서 호스팅되고 있다.

코로싱크는 원래 OpenAIS 프로젝트의 일부로 개발되기 시작했다. OpenAIS는 애플리케이션 인터페이스 사양을 구현하는 오픈 소스 프로젝트였으나, 이후 코로싱크는 독립적인 프로젝트로 분리되어 발전해 왔다. 이 분리는 커뮤니티 주도의 개발과 더 빠른 혁신을 가능하게 하는 데 기여했다.
코로싱크라는 이름은 프로젝트의 핵심 목표를 상징적으로 나타낸다. 'Co'는 협력(Cooperation) 또는 클러스터(Cluster)를, 'ro'는 신뢰성(Reliability)을, 'sync'는 동기화(Synchronization)를 의미한다. 따라서 이름 자체가 신뢰할 수 있는 클러스터 내 협력과 동기화를 위한 엔진이라는 프로젝트의 정체성을 함축하고 있다.
이 프로젝트는 주로 리눅스 기반의 고가용성 클러스터 환경에서 사용되지만, 그 설계는 크로스 플랫폼을 지향한다. 개발과 유지보수는 전 세계의 개발자들로 구성된 활발한 오픈 소스 커뮤니티에 의해 이루어지며, New BSD 라이선스 하에 배포되어 상용 및 비상용 프로젝트 모두에 자유롭게 통합될 수 있다.
