티스토리 뷰
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 단에서 자동적으로 쿼리 인스턴스를 조정합니다
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
},
})
{
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 정책을 추가합니다
늘어나는 리더 인스턴스가 보이시나요
리더인스턴스는 리더엔드포인트 하나만 사용하면 자동적으로 분산 요청이 되기 때문에
여러개의 리더인스턴스의 엔드포인트를 어플리케이션단에서 일일이 적을 필요가 없습니다
참쉽죠?
'AWS' 카테고리의 다른 글
elasticsearch 손쉽게 설치하기 (0) | 2022.02.27 |
---|---|
데이터베이스도 사용한 만큼만 요금 지불해볼까? aurora serverless (0) | 2022.02.11 |
ecs fargate codepipeline 연결하기 (0) | 2022.02.08 |
aws ecs fargate 사용하기 (0) | 2022.02.07 |
docker 파일 하나로 단일 컨테이너 elastic beanstalk에 배포하기 (0) | 2022.02.05 |
- Total
- Today
- Yesterday
- android
- 스마트폰
- 벤처
- 게임
- 대학생
- 앱
- 웹표준
- 구글
- 아이폰
- 어플리케이션
- 자바스크립트
- AWS
- 트위터
- 네이버
- 안드로이드
- 소프트웨어
- 창업
- 경진대회
- Apple
- 공모전
- php
- JavaScript
- CSS
- 모바일
- 애플
- iPhone
- 앱스토어
- 아이디어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |