# HA

70개의 포스트
post-thumbnail

[MySQL] Orchestrator 응용 - 1 (auto-rejoin)

OS : CentOS 7.9 64bit MySQL : 8.0.34 - commercial Replica Set : 1(Soure), 2(Replica) Server VIP : 10.1.247.13 node1(DB) : 10.1.247.10 node2(DB) : 10.1.247.11 node3(DB, Orchestrator) : 10.1.247.12 지난 포스팅에서, Orchestrator 구성을 다루었습니다. 이번에는, Orchestrator 운영 중 필요할 수 있는 구성들과 VIP를 이용한 HA를 도달하는것이 목적입니다. Hooks DB 운영 중 여러가지 상황으로 Switchover 혹은 Failover가 필요할 때가 있습니다. 오케스트레이터는 아래와 같은 후크를 제공하며, 이름에서 쉽게 유추할 수 있습니다

2023년 9월 8일
·
0개의 댓글
·

Redis (Stand alone) HA 구성 feat. Pacemaker

Redis (Stand alone) HA 구성 feat. Pacemaker 1. 개요 redis를 공부하던 중 aof 파일을 통해 데이터를 백업 및 복구 한다는 것을 알게 되어 혹시 해당 파일을 각 서버가 공유한다면 redis stand alone을 사용하더라도 n중화를 통한 HA구성이 가능하지 않을까 라는 생각이 들어 환경을 구성하여 테스트 해보았다. redis cluster나 sentinel을 통해 HA 구성을 하지만 실질적으로 필요한 물리적 서버가 너무 많다는 것이 문제이기도 하고 cluster 같은 경우는 failover 시 master, slave node를 다시 수동으로 바꿔줘야 하기 때문에, 그리고 sentinel은 quorum 이상의 sentinel server가 살아있어야 하기 때문에 이런 기타 등등의

2023년 8월 21일
·
0개의 댓글
·

vault ha cluster on kubernetes

vault on k8s(kubernetes) k8s 노드 구조 yaml 파일 작성 sc.yaml pv.yaml values.yaml apply 순서 StorageClass PersistentVolume (PV) helm install vault HA 설정 1. pod 확인 2. active할 pod (vault-0) init 1) pod에 직접 접속 2) pod 외부에서 명령어 입력 init 3. active pod (vault-0) unseal unseal login 확인

2023년 8월 4일
·
1개의 댓글
·
post-thumbnail

RHCS - Pacemaker 구축

KVM 환경에서 Guest OS 노드를 다음과 같이 구성하였다. > Hostname: cs-01 / cs-02 OS: RHEL 8.4 CPU: 4 cores Memory: 4 GB Disk OS Volume: 20 GB Swap: 2 GB Local Repository 설정 기존 AppStream/BaseOS 에 High Availability Repo 추가 등록 HA Repo는 https://access.redhat.com 사이트에서 다운로드 가능 iSCSI 및 Multipath 설정 각 노드에 initiator 및 multipath 구성 1. 사전 작업 1. 방화벽 및 SELinux 비활성화 2. 각 노드 Hostname 및 /etc/hosts 설정 3. 공유 볼륨 설정 // LVM이 공유 볼륨을 식별하는데 사용하는 소스를 설정한다. // 기존 initramfs 이미지 백업

2023년 8월 4일
·
0개의 댓글
·
post-thumbnail

RHCS - Requirements

RHCS를 구축하기 위해선 다음과 같은 사항이 요구된다. Network 서비스 네트워크(Public) / 클러스터 노드 간 통신 네트워크(Private) 분리 VIP(Service IP) 필요 각 노드당 호스트 Real IP (Public) 각 노드당 Fencing Device 용 IP (RSA, iLO, IMM, iDRAC, IPMI 등등...) 각 노드당 HeartBeat IP 필요(Private 망은 별도의 스위치로 구성을 권장) Fencing Device 와 HeartBeat 네트워크를 같은 대역대로 구성 권장 HeartBeat 망 구성 시 Bonding 구성 권장 (Active-backup or RRP) Shared Storage 공유 스토리지 볼륨 필요

2023년 8월 4일
·
0개의 댓글
·
post-thumbnail

RHCS - Pacemaker Architecture

Messaging / Infrastructure 계층 Corosync 계층이라고도 하며 "I'm alive" 신호와 기타 정보가 포함된 메시지를 보내는 구성 요소가 포함되어 있다. High Availability Extenstion 의 프로그램은 해당 계층에 상주한다. > Node 간에 서로 연결되어 생사 여부를 확인하며 corosync daemon 이 감지한다. Resource Allocation 계층 자원을 할당하는 계층으로 가장 복잡하다. 다음과 같은 요소로 구성된다. 1. Cluster Resource Manager 리소스 할당 계층에서 수행되는 모든 작업은 클러스터 리소스 매니저를 통해 전달된다. 리소스 할당 계층의 다른 구성 요소(또는 상위 계층 구성 요소)가 통신해야 하는

2023년 8월 4일
·
0개의 댓글
·
post-thumbnail

DataKeeper 디스크 I/O 에러

Q: DataKeeper 데이터 동기화는 블록 방식으로 복제되는데, Active 및 Standby 노드의 데이터 블록에 문제가 있을 경우 동기화는 어떻게 동작하는지 알고 싶습니다. 1. Active 노드의 데이터 블록 장애 상황 문제가 있는 데이터 블록까지 전부 복제를 한다. 2. Standby 노드의 데이터 블록 장애 상황 동일하게 복제를 진행하지만, 해당 블록에 쓰여진 데이터 값의 무결성 깨질 수 있다. (데이터가 정상적으로 써진다고 장담할 수 없다.)

2023년 8월 1일
·
0개의 댓글
·
post-thumbnail

DataKeeper 데이터 동기화

Q: DataKeeper 로컬 볼륨 데이터 동기화의 동작 원리가 궁금합니다. DataKeeper Sync 아키텍처 구조에 따라 mdadm 으로 구성된 Software RAID Device 를 확인할 수 있다. DataKeeper 의 데이터 흐름도는 다음과 같다. HA VIP (Active Node) Database Listener Filesystem Mount Point (/sync1) Kernel Software RAID Device (RAID 0 - /dev/mdN) Local Disk (/dev/syncVG/syncLV1) / NBD Device (/dev/nbdN) Standby Node NBD Server (Data sync) NetRAID DataKeeper 는 NetRAID 장치를 생성하고 보호한다. NetRAID 장치는 로컬 디스크 또는 NBD(네트워크 블록 장치)로 구성된 RAID1 장치이다.

2023년 8월 1일
·
0개의 댓글
·
post-thumbnail

genAPP 등록 정보

Q: 스틸아이로 등록된 리소스 중 genAPP 유저 파라미터 설정 값을 확인하고 싶습니다. 스틸아이 App 리소스를 등록할 때 유저 파라미터 값을 변경한 후 등록한다. 해당 파라미터 값은 아래 경로에 App 리소스 이름으로 등록된다. 또한 각 노드의 해당 파라미터 값을 수정하여 genAPP 동작을 변경할 수 있다.

2023년 8월 1일
·
0개의 댓글
·
post-thumbnail

Steeleye - 요구사항

스틸아이(Steeleye)를 설치하기 위해선 다음과 같은 요구사항이 필요하다. 하드웨어 1. 서버 2 개 이상의 Linux 용 서버 2. NIC 각 서버에는 최소 서비스용 NIC 하나와 COMMPATH 용 NIC 하나로 총 2개 이상의 NIC(독립된 서브넷을 사용하는 두 개의 개별 LAN 기반 통신 경로 권장) 가 필요하며 TCP 와 TTY 조합으로도 사용 가능하다. DataKeeper 의 경우 데이터 미러링 특성상 서버 간 네트워크 트래픽이 증가할 수 있어 복제를 위한 Data Replication 망을 별도 구성하는 것을 권장한다. 3. 스토리지 LifeKeeper: 두 서버가 동일하게 연결된 공유 볼륨 DataKeeper: 각각의 로컬에 할당된 볼륨 DataKeeper 의 경우 Active / Standby 노드의 볼륨 크기가 동일하거나 Standby 노드가 더 커야한다. 소프트웨어 스틸아이 설치를 위한 필수 패키지는 다음과 같다.

2023년 7월 31일
·
0개의 댓글
·
post-thumbnail

Steeleye

스틸아이(Steeleye)는 SIOS 에서 제공하는 상용 HA 솔루션이다. 또한 DR 서비스를 지원하며 데이터 복제에 대한 뛰어난 기능을 제공한다. 스틸아이는 2가지 구성이 존재한다. 공유 볼륨을 이용하는 LifeKeeper 로컬 볼륨 복제를 이용하는 DataKeeper 단독적인 상용 솔루션으로 운영 체제에 의존적이지 않아 호환성이 좋다. Windows 및 Linux 모두 지원한다. 10년 넘은 자체 기술력으로 검증된 솔루션 데이터 무결성을 위한 I/O Fencing 사용 하드웨어 전원 제어가 아닌 Reservation Key 를 이용한 스토리지 접근 차단 (참고문서: http://docs.us.sios.com)

2023년 7월 31일
·
0개의 댓글
·
post-thumbnail

Fencing Mechanism

I/O Fencing I/O Fencing Mechanism 을 통하여 Active / Standby 서버 간에 공유 볼륨에 대하여 Read / Write 권한을 가지므로 Data Corruption 을 방지한다. 해당 메커니즘이 동작하기 위해 SCSI Reservations 를 사용한다. 해당 기능은 스토리지 레벨에서 지원하므로 구축 시 스토리지 레벨에서 지원 여부를 확인해야 한다. (대부분의 스토리지가 지원한다.) 리눅스에서 sg3utils 패키지가 설치되어야 하며, sgpersist 명령어로 Locking 을 시도한다. > **로킹이 되는 최소 단위는 LUN(Logical Unit Number)로 스토리지에서 서버로 할당해주는 sda, sdb 디바이스이다. sda1, sdb1 처럼 파티션 및 sda, sdb 가 속한 VG는 로킹 대상이 아니다. 따라서 실제 물리적으로 할당되는 디바이스가 대상이다.** sg_persist 명령어 LUN에 대하여 Lockin

2023년 7월 31일
·
0개의 댓글
·
post-thumbnail

HA(High Availability)

Cluster 클러스터는 두 개 이상의 컴퓨터(노드 또는 멤버)가 작업을 실행하기 위해 함께 동작하는 것을 의미한다. 클러스터는 주로 4개의 유형으로 구성되어 있다. 스토리지(Storage) 고가용성(High Availability) 로드 밸런싱(Load Balancing) 고성능(High Performance) HA(High Availability) HA(High Availability)는 SPOF(Single Points Of Failure) 가 발생하지 않게 하고 노드가 실행 불가능할 경우 하나의 클러스터 노드에서 다른 노드로 서비스를 장애 조치하여 서비스 down time 을 최소화한다. 기본 구성은 Active-Standby 구성으로 1+1 구성이지만, 여러 대의 Active(N)에 대하여 Standby 노드 또는 다중(M) N+M 구성으로 구축할 수 있다. 1. 대기 구성(Active / Standby) ![](https://ve

2023년 7월 31일
·
0개의 댓글
·
post-thumbnail

네트워크 컨설팅 프로젝트 (1) - End-to-End HA 구성

들어가며 예전에 워드프레스 기반의 블로그를 운영하였으나, 운영 상의 이슈로 블로그를 닫은 지 벌써 6년 정도가 지났다. 그 동안에는 notion을 통해 개인적으로 작업 히스토리를 관리하고 있었으나 포트폴리오 관리 측면, 그리고 지식 공유 차원에서 다시금 퍼블릭한 공간에 문서를 작성해 보려 한다. 이 시리즈는 내가 프리랜서로 일하면서 설계한 네트워크 디자인에 대하여, Design Decision과 Lessons and Learn을 이야기하는 것을 목적으로 한다. 작업 배경 고객사는 프로그램 매매를 주력으로 하는 금융 스타트업으로, 직접 개발한 서비스가 Power Outage, Network Component Failure 상황에서도 중단 없이 동작하는 것을 원했다. 프로그램 매매가 시간 동기화에 굉장히 민감한 애플리케이션이기 때문에 PTP 기반의 시간 동기화를 위한 시스템/네트워크 아키텍처를 디자인 및 구축하였고, 장비 딜리버리 이슈 때문에 지연된 HA 구성 작업을 나

2023년 3월 27일
·
0개의 댓글
·
post-thumbnail

kakao Cloud school 2기 D+19

1. 가상화 (Virtualization) 1-1 Where? 1-2 How? Full Virtualization VS Para Virtualization (요즘은 상호 보완적이기 떄문에 큰 의미는 없다) 2. KVM (Kernel - based Virtual Mach

2022년 11월 27일
·
0개의 댓글
·
post-thumbnail

SQL Server 2022_비즈니스 연속성 및 데이터베이스 복구

참고자료: https://learn.microsoft.com/ko-kr/sql/database-engine/sql-server-business-continuity-dr?view=sql-server-ver16 SQL Server의 고가용성 및 재해 복구를 위한 비즈니스 연속성 필요 비즈니스 연속성의 목표는 중단을 최소화하거나 중단 없이 비즈니스를 계속 운영하는 것 가용성 기능을 사용할 수 있는 주요 방법 1) 고가용성(HA) 2) 재해 복구 3) 마이그레이션 및 업그레이드 4) 하나 이상의 데이터베이스에서 읽을 수 있는 복사본 확장 SQL Server 복제는 가용성 기능으로 공식 지정되지는 않았지만 특정 시나리오에서 데이터 중복을 위해 종종 사용됨 [고가용성] 클라우드 지역의 데이터 센터 또는 단일 지역에 국한된 문제가 발생하는 경우 SQL Server 인스턴스 또는 데이터베이스를 사용할 수 있도록 하는 것 **-

2022년 11월 15일
·
0개의 댓글
·
post-thumbnail

HA 정의 및 종류

HA 정의 > 💡 High Availability , 고가용성 \- 정보 기술에서 HA란 바람직한 정도로 긴 시간동안 지속적으로 운영이 가능한 시스템이나 컴포넌트를 가르킨다. 가용성이란 흔히 "100% 가용" 등과 같이 상대적으로 측정되거나 또는 "절대 고장나지 않음" 등과 같이 표현될 수 있다. 널리 쓰이고 있지만 달성하기 결코 쉽지 않은 시스템 및 제품에 대한 가용성 표준에 흔히 "파이브 나인 (five 9)" 이라고 부르는 99.999%의 가용성을 들 수 있다. 하나의 컴퓨터 시스템이나 네트워크는 전체의 운영을 위해 모두가 사용 가능한 상태로 있어야만 하는 가능한 수많은 부품으로 구성되었기 때문에 고 가용성에 대한 많은 계획들이 백업이나 장애극복 처리 및 데이터 저장 및 액세스 등에 집중되어 있다. 저장 장치의 경우에는 RAID가 그 중 하나의 접근 방법이며, 보다 최근에는 SAN과 같은 방법을 이용한다. 일부 가용성 전문가들은 만약 어떤 시

2022년 10월 31일
·
0개의 댓글
·
post-thumbnail

서버 이중화 솔루션

개요 > 💪 HA (High Availability) 를 한국어로 간단히 직역하자면 "고가용성" 이다. 즉, 사용할 가능성이 높다는 뜻으로 "절대 고장 나지 않음" 을 의미. 즉, 네트워크나 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말한다. 최근 들어 기업의 모든 비즈니스가 디지털화 되면서, 고 가용성이 보장된 서비스를 제공해야 하는 케이스가 점점 많이 발생하고 있다. 또한 단 한번의 예상치 못한 서버 다운은 기업 신용 실추 등의 문제와 직결되어 손실이 매우 크다. 제 14회 한국자바개발자 컨퍼런스 가이드집 * 이미지 출처 - 제 14회 한국자바개발자 컨퍼런스 가이드집

2022년 10월 28일
·
0개의 댓글
·
post-thumbnail

MySQL InnoDB Cluster의 동시성 제어(group_replication_consistency)

InnoDB Cluster는 5가지의 동시성 제어 모드를 제공하며groupreplicationconsistency 파라미터 설정으로 변경할 수 있다. 1. Eventual 데이터는 최종적으로 일관성이 유지되나, 각 노드 간의 읽기 트랜잭션 결과가 일치하지 않는 순간이 발생할 수 있다. Eventual 모드에서 트랜잭션 처리 과정은 아래와 같다. Primary Node에서 Write transaction 요청 수신 Consensus (합의) 수행 다른 노드들로 트랜잭션 데이터를 전파 과반수 노드로부터 ACK 수신시 Majority 획득 인증 자기 DB의 선행 트랜잭션을 검사해서 충돌 여부를 검사 충돌 발생시 트랜잭션 롤백 RW트랜잭션을 수신했던 노드는 binary log에 로그 선행 기입 RW트랜잭션을 전파받은 노드는 relay log에 로그선행 기입 후, applier thread에서 릴레이 로그에 기록된 트랜잭션을 실행하

2022년 10월 28일
·
0개의 댓글
·
post-thumbnail

[MongoDB] replicaset 설정

PSA 방식으로 구성 replicaset은 홀수의 노드가 필요함. secondary(슬레이브)에서 몽고 프로세스를 하나 더 실행한다. primary(마스터)에서 conf 파일의 해당 부분 수정 및 저장. replSetName 값이 같아야한다. secondary에서 conf 파일 수정(추가) arbiter(secondary에서 mongo 프로세스 하나 더 띄운다.) 기존 mongod.conf 파일 카피 후 새로만든 arbiter 디렉터리로 경로를 바꾼다. 정상구동 확인 primary에서 replicaset initiate mongo 혹은 mongo localhost:27017/admin 접속 후 아래 입력 **primary, secondary

2022년 10월 26일
·
0개의 댓글
·