티스토리 뷰

728x90
반응형

aurora database의 클러스터 구조를 살펴볼께요

 

RDS 메뉴에서 Amazon Aurora를 선택하고

 

 

mysql 호환버전으로, 프로비저닝됨 형태의 5.7 버전을 선택해서 만들어보겠습니다

 

 

자동으로 리전 클러스터라는 것이 생기는데요

 

해당 리전에 클러스터 형태로 자동으로 데이터베이스를 구축해줍니다

 

 

첫 시작에서는 클러스터 하위에 2개의 리더(reader) 인스턴스가 있는것이 보입니다

 

 

그리고 약간 시간이 흐르고 세팅이 계속 되면 2대의 리더중 1대가 라이터(writer) 인스턴스로 승격되는것을 볼수 있습니다

 

aurora db는 자동으로 클러스터 형태의 관계형 데이터베이스를 자동으로 구현합니다

 

다중 라이터 인스턴스를 구성하는것도 가능하고,

 

단일 라이터 인스턴스와 다수의 리더인스턴스 형태로의 구성도 매우 손쉽게 구성할수 있습니다

 

 

그리고 라이터 인스턴스가 장애가 발생하면 리더 인스턴스중의 하나가 자동으로 라이터 인스턴스로 승격되어 장애에 대비하도록 되어있습니다

 

 

 

클러스터를 선택해보시면 라이터와 리더인스턴스의 엔드포인트를 볼수 있는데 바로 이값이 인스턴스에 접속할수 있는 host입니다

 

이런 리더와 라이터의 인스턴스의 구분은 실제 어플리케이션에서

 

라이터 인스턴스는 insert, update, delete용으로 사용하시고

 

리더인스턴스는 select용으로 사용하시면 됩니다

 

라이터인스턴스는 리더용으로 쓸수 있지만 리더인스턴스에 라이트 작업은 되지 않습니다

 

 

 

하나의 writer와 여러개의 reader는 대부분의 ORM에서 손쉽게 지원되고 있습니다

 

nodejs의 예를 들어 대표적인 sequelize, typeorm을 살펴보면 다음과 같이 공식적으로

 

read와 write 데이터베이스 커넥션 정보를 따로 기록하여 orm 단에서 자동적으로 쿼리 인스턴스를 조정합니다

 

 

Sequelize

const sequelize = new Sequelize('database', null, null, {
  dialect: 'mysql',
  port: 3306,
  replication: {
    read: [
      { host: '8.8.8.8', username: 'read-1-username', password: process.env.READ_DB_1_PW },
      { host: '9.9.9.9', username: 'read-2-username', password: process.env.READ_DB_2_PW }
    ],
    write: { host: '1.1.1.1', username: 'write-username', password: process.env.WRITE_DB_PW }
  },
  pool: { // If you want to override the options used for the read/write pool you can do so here
    max: 20,
    idle: 30000
  },
})

 

 

typeorm

{
  type: "mysql",
  logging: true,
  replication: {
    master: {
      host: "server1",
      port: 3306,
      username: "test",
      password: "test",
      database: "test"
    },
    slaves: [{
      host: "server2",
      port: 3306,
      username: "test",
      password: "test",
      database: "test"
    }, {
      host: "server3",
      port: 3306,
      username: "test",
      password: "test",
      database: "test"
    }]
  }
}

 

 

손쉽게 리더 인스턴스의 auto scaling을 적용할수 있습니다

 

복제본 Auto Scaling 추가를 선택하고

 

 

auto scaling 정책을 추가합니다

 

 

늘어나는 리더 인스턴스가 보이시나요

 

리더인스턴스는 리더엔드포인트 하나만 사용하면 자동적으로 분산 요청이 되기 때문에

 

여러개의 리더인스턴스의 엔드포인트를 어플리케이션단에서 일일이 적을 필요가 없습니다

 

참쉽죠?

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함