...
bsr defines a set of nodes for replication as a replication cluster, and basically supports a single primary mode that can act as a primary resource on only one node of the replication cluster member. Dual or multiple primary modes are not supported. The single primary mode, the Active-Passive model, is the standard approach to handling data storage media in a highly available cluster for failover.
복제 방식
bsr은 3가지 복제 방식을 지원합니다bsr supports three replication methods.
Protocol A.
...
비동기 방식은 Primary 노드에서 로컬 디스크에 쓰기를 마치고 동시에 TCP의 송신 버퍼에 쓰기가 완료되었을 때 복제 완료로 간주합니다. 따라서 이 방식은 절체(Fail-over)를 할 경우 로컬에는 썼지만 버퍼에 있던 데이터가 대기노드로 완전히 넘어가지 못할 수 있습니다. 절체 후 대기노드의 데이터는 일관성은 가지지만, 절체 시 발생한 쓰기의 일부 전송되지 못한 업데이트 내용은 손실될 수 있습니다. 이 방식은 로컬 I/O 응답성능이 좋으며 원거리 복제 환경에 적합한 방식입니다.
Protocol B. 세미 동기 방식
세미 동기방식은 Primary 노드에서 로컬 디스크 쓰기가 발생하면 복제 패킷을 상대 측 노드에서 수신 완료한 단계에서 복제 완료로 간주합니다.
일반적으로 강제 절체(Fail-over)시 데이터 손실이 발생되지는 않는 편이지만 양쪽 노드의 전원이 동시에 나가거나 Primary 스토리지에서 복구할 수 없는 손상이 발생한다면 Primary에서 가장 최근에 기록된 데이터는 손실될 수 있습니다.
Protocol C. 동기 방식
동기 방식은 로컬과 원격 양쪽 디스크에 모두 쓰기가 완료되어야 Primary 노드에서 복제 완료로 간주합니다. 따라서 어느 한쪽 노드에서 손실이 발생하더라도 데이터가 유실되지 않음을 보장합니다.
물론, 양쪽 노드(또는 노드의 스토리지 서브시스템) 모두가 동시에 되돌릴 수 없는 손상을 입는다면 데이터의 손실은 불가피합니다.
일반적으로 bsr은 Protocol C 방식을 많이 사용합니다.
복제 방식은 운영정책을 결정하는 요소인 데이터 정합성 여부와 로컬 I/O 지연(Latency) 성능, 처리량(Throughput) 등에 의해 결정되어야 합니다.
Info |
---|
동기 방식 복제는 운영과 대기노드의 정합성을 완전히 보장하지만, 하나의 쓰기 I/O 에 대해 대기노드에 쓰기를 완료한 후 로컬의 I/O 를 완료하기 때문에 로컬 I/O 지연(Latency) 측면의 성능저하는 감수해야 합니다. I/O depth에 따라 작게는 수배에서 많게는 수십배 이상까지 Latency 저하가 발생할 수 있으며, 처리량 기준으로는 1 Gbps 네트워크에서 평균 70MB/s 의 성능을 보입니다. |
복제 모드를 구성하는 예제는 리소스 작성 부분을 참고하세요.
복제 전송 프로토콜
bsr의 복제 전송 네트워크는 TCP/IP 전송 프로토콜을 지원합니다.
TCP(IPv4/v6)
bsr의 기본 전송 프로토콜이며 IPv4/v6를 지원하는 모든 시스템에서 사용할 수 있는 표준 프로토콜 입니다.
효율적인 동기화
bsr에서 복제(replication)와 (재)동기화(resynchronization)는 구분하는 개념입니다. 복제는 Primary 역할의 리소스의 모든 디스크 쓰기 동작을 Secondary 노드로 실시간 반영하는 동작이고, 동기화는 실기간 쓰기 I/O를 배제한 전체 블록 디바이스 관점에서 데이터를 일치시키는 처리과정 입니다. 복제와 동기화는 개별적으로 동작하지만 동시에 처리될 수도 있습니다.
Primary와 Secondary간의 복제 연결이 유지된다면 복제가 지속적으로 수행됩니다. 그러나 Primary 또는 Secondary 노드에서 장애가 나거나, 복제 네트워크가 단절되는 등의 이유로 복제 연결이 중단되었다면 Primary와 Secondary 간의 동기화가 필요한 상황에 놓입니다.
bsr은 동기화 할 때 원본 I/O가 디스크에 쓰여진 순서대로 블럭을 동기화하지 않습니다. 동기화는 메타데이터의 정보를 기반으로 0번 섹터 부터 마지막 섹터까지 동기화 되지 않은 영역에 대해서만 순차적으로 동기화하고 다음과 같이 효율적으로 처리합니다.
동기화는 디스크의 블럭 레이아웃에 따라 블럭 단위로 동기화하므로 디스크 탐색을 거의 수행하지 않습니다.
여러 번 연속적으로 쓰기 작업이 발생한 블럭은 한 번만 동기화하여 효율적입니다.
동기화하는 동안 대기(Standby)노드의 전체 데이터 셋 중 일부는 과거의 변경 전 내용이고 일부는 최신으로 업데이트됩니다. 이러한 데이터의 상태를 Inconsistent 상태라고 하고 모든 블럭이 최신 데이터로 동기화 완료된 상태를 UpToDate 상태라고 합니다. Inconsistent 상태의 노드는 일반적으로 볼륨이 사용가능하지 않은 상태이므로 이 상태는 가능한 짧게 유지하는 것이 바람직합니다.
물론 백그라운드에서 동기화가 진행되더라도 Active 노드의 응용 서비스는 중단되거나 하지 않고 계속 운영 가능 합니다.
고정 대역 동기화(Fixed-rate synchronization)
고정 대역 동기화에서는 초당 상대 노드로 동기화하는 데이터 속도를 상한선 내에서 조정할 수 있으며(이를 synchronization rate라고 합니다) 최소값(c-min-rate)과 최대값(c-max-rate)으로 지정할 수 있습니다.
가변 대역 동기화(Variable-rate synchronization)
가변 대역 동기화는 가용한 네트워크의 대역폭을 감지한 후 애플리케이션으로부터 수신된 I/O와 비교하여, 적절한 동기화 속도를 자동적으로 계산합니다. bsr은 가변대역 동기화를 기본 설정으로 합니다.
체크섬 기반 동기화(Checksum-based synchronization)
체크섬 데이터 요약을 사용하면 동기화 알고리즘의 효율성을 더욱 개선할 수 있습니다. 체크섬 기반 동기화는 동기화하기 전에 블록을 읽고 현재 디스크에 있는 내용의 해시(hash) 요약을 구한 다음, 상대 노드로부터 같은 섹터를 읽어 구한 해쉬 요약 내용과 비교합니다. 해시 내용이 일치하면 해당 블럭에 대한 동기화 쓰기(re-write)를 생략합니다. 이 방식은 동기화 해야 될 블럭을 단순히 덮어쓰는 방식에 비해 성능에서 유리할 수 있으며 연결이 끊어진(disconnect 상태) 동안 파일 시스템이 섹터에 같은 내용을 다시 썼다면 해당 섹터에 대해선 재동기화를 생략하게 되므로 전체적으로 동기화 시간을 단축시킬 수 있습니다.
...
Asynchronous
The asynchronous method considers replication complete when the primary node finishes writing to the local disk and simultaneously writes to the send buffer of TCP. Therefore, this method is used locally when fail-over, but the data in the buffer may not be able to completely pass to the standby node. The data on the standby node after transfer is consistent, but some unsuccessful updates to the writes that occurred during transfer may be lost. This method has good local I / O responsiveness and is suitable for WAN remote replication environments.
Protocol B. Semi Synchronous
In the case of a semi-synchronous method, when a local disk write occurs on the primary node, replication is considered complete when the replication packet is received from the other node.
Normally, data loss does not occur during a fail-over, but if both nodes are powered off simultaneously or irreparable damage occurs in the primary storage, the most recently recorded data in the primary may be lost.
Protocol C. Synchronous
The synchronous method is considered complete when the primary node has completed writing to both the local and remote disks. This ensures that no data is lost in the event of loss on either node.
Of course, loss of data is inevitable if both nodes (or a node's storage subsystem) suffer irreparable damage at the same time.
In general, bsr uses the Protocol C method a lot.
The replication method should be determined by data consistency, local I / O latency performance, and throughput.
Info |
---|
Synchronous replication completely guarantees the consistency of the active and standby node, but because the local I/O is completed after writing to the standby node for one write I/O, the local I/O latency There is a performance penalty. Depending on the I/O depth, latency can be reduced from several times to as many as tens of times or more, and on a throughput basis, it averages 70 MB/s on a 1 Gbps network. |
For an example of configuring the replication mode, refer to create resources.
Replication Transport Protocol
bsr's replication transport network supports the TCP/IP transport protocol.
TCP(IPv4/v6)
It is the basic transport protocol of bsr and is a standard protocol that can be used on all systems that support IPv4/v6.
Efficient synchronization
In bsr, replication and (re)synchronization are separate concepts. Replication is a process that reflects all disk write operations of the resource of the primary role in real time to a secondary node, and synchronization is a process of copying block data from the perspective of all block devices excluding real-time write I/O. Replication and synchronization work individually, but they can be processed simultaneously.
If the connection between the primary and secondary is maintained, replication continues. However, if the replication connection is interrupted due to a failure of the primary or secondary node, or the replication network is disconnected, synchronization between the primary and secondary is required.
When synchronizing, bsr does not synchronize blocks in the order in which the original I/O was written to disk. Synchronization sequentially synchronizes only the areas that are not synchronized from sector 0 to the last sector based on the information in the metadata and efficiently processes as follows.
Synchronization is performed block by block according to the block layout of the disk, so disk search is rarely performed.
It is efficient because it synchronizes only once for blocks in which multiple writes have been made in succession.
During synchronization, some of the Standby node's entire dataset is past and some are updated to the latest. The status of this data is called Inconsistent, and the status that all blocks are synchronized with the latest data is called UpToDate. Nodes in an inconsistent state are generally in a state where the volume is not available, so it is desirable to keep this state as short as possible.
Of course, even if synchronization is performed in the background, the application service of the Active node can be operated continuously with or without interruption.
Fixed-rate synchronization
In fixed-rate synchronization, the data rate synchronized to the peer node can be adjusted within the upper limit in seconds (this is called the synchronization rate), and can be specified as the minimum (c-min-rate) and maximum (c-max-rate).
Variable-rate synchronization
In Variable-rate synchronization bsr detects the available network bandwidth and compares it to I/O received from the application, automatically calculates the appropriate synchronization speed. bsr defaults to variable-band synchronization.
Checksum-based synchronization
Checksum data summarization can further improve the efficiency of the synchronization algorithm. Checksum-based synchronization reads blocks before synchronization, obtains a hash summary of what is currently on disk, and then compares the obtained hash summary by reading the same sector from the other node. If the hash values match, the re-write of the block is omitted. This method can be advantageous in performance compared to simply overwriting a block that needs to be synchronized, and if the file system rewrites the same data to a sector while disconnected (disconnected), resynchronization is skipped for that sector, so you can shorten the synchronization time in overall.
Congestion Mode
bsr은 비동기 복제 시 복제 네트워크의 혼잡도를 감지하여 능동적으로 대처할 수 있는 혼잡모드 기능을 제공합니다. 혼잡모드는 Blocking, Disconnect, Ahead 의 3 가지 동작모드를 제공합니다.
...