클라우드 엔지니어/클라우드 캠프과정

2022.09.26 AWS-DB 서버이중화 온프레미스 마스터 + AWS 슬레이브

해아's 2022. 9. 26. 13:03

3계층 아키텍쳐 를 AWS에서 적용해보기..

 

https://app.cloudcraft.co/

일단 우리가 AWS에서 DB를 배우지 않았기때문에 AWS에서 DB셋팅을 먼저 간단하게 해본다. 추후 제대로 배울예정

 

EC2에 db를 설치하면 업데이트나 문제점이 있을경우 사용자가 직접 업데이트를 해야함.

용량도 수동으로 늘려줘야하는 문제점이 있음 백업도 수동임

 

AWS RDS 에서는 모두 자동으로 해준다.

 

DB인스턴스

 

데이터베이스 생성

 

템플릿은 프리티어로 연습한다.

 

마스터 사용자와 암호가 중요하다.

t3는 유료라는 소리가 있다 t2로 바꾸자

 

스토리지 > 20기가로 설정되어있는데 ec2와 db를 합해 30기가가 프리티어이므로 잘 조정하자.

 

DB는 중요한업무가 아니면 내부망에서만 작동하게 하자.

추후 설정을 바꿀수 있으므로 일단 기본값으로 하고 VPC는 못바꾸니까 그것만 잘확인하면된다.

 

보안그룹은 DB만 따로 만드는게 좋다

 

인증방식이다.

암호인증 : 기본

iam: 은 aws에서 지원하는기능으로 추후에 배움

kerberos : 인증정보가 중앙에 허용

 

추가구성

 - 데이터베이스 옵션

 - 파라미터 그룹, 옵션그룹 conf파일을 설정

 

백업 - 자동백업

 

설정하고 생성하면 자동으로 만든다.

 

mysql-workbench-community-8.0.30-winx64이용해서 접속해보자

AWS db의 ip주소는 엔드포인트 주소 유저와 암호를 설정해준다.

 

일단 우리가 셋팅할떄 외부접속을 막아놨기때문에 허용해줘야한다.

수정 > 연결 > 추가구성  > 퍼블릭엑서스 가능

 

즉시적용을 눌러줘야 바로적용되며

 

실제 운영중인 db는 이렇게 변경하면안됨.

 

설정후 aws가 재시작하며 설정완료후 다시 프로그램으로 접속하면 아래와 같이 성공된다

 

RDS를 생성하면 보안그룹에 보안규칙이 자동으로 현재접속된 아이피로 설정된다.

그러므로 다른곳에서(집이나 외부에서) 접속할때는 인바운드 규칙을 변경해야한다.

 

 

 

 

 

DB 서버 이중화

 

  •  온프레미스 마스터 +  온프레미스 슬레이브 (이건 해봄)
  •  AWS 마스터 + AWS 슬레이브 (이거 해볼예정
  •  온프레미스 마스터 + AWS 슬레이브 (이거 해볼예정 AWS를 백업서버로 두는거)
  •   AWS 마스터 + 온프레미스 슬레이브 (이건 거의 없음 이미 클라우드는 백업이 돌기때문에)

온프레미스 마스터 설정하기

DB설치

초기설정

마스터설정

마스터에 접속할수 있는 계정생성

ps. 보안따위는 생각안하고 실습용 예제이므로 보안을 위해 아이피 대역 및 방화벽 설정을 정확히 지켜야한다.

 

    1) 방화벽 해제
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

    2) mysql 설치 및 초기 설정
yum install -y mysql-server
systemctl restart mysqld

mysql_secure_installationa

  (2) 마스터 DB 설정
    1) /etc/my.cnf.d/mysql-server.cnf 파일 설정
다음 내용을 추가한다.
[mysqld]
...
server-id = 1
log-bin = mysql-bin

systemctl restart mysqld

    2) Master 상태 확인
mysql -u root -p 로그인 후
show master status;

    3) Replication할 때 사용할 계정 생성
CREATE USER 'slave_user'@'%' IDENTIFIED BY '[DB 계정 패스워드]'; ex) CREATE USER 'slave_user'@'%' IDENTIFIED BY 'qwer1234';
GRANT REPLICATION SLAVE ON *.*  TO 'slave_user'@'%';

select Repl_slave_priv from mysql.user where user='slave_user'\G
Repl_slave_priv 속성이 Y로 되어있는지 확인

 

 

 

 AWS 슬레이브 설정하기

 

온프레미스랑은 설정방식이 다르다 AWS는 docs가 잘되있으므로 찾아서 하면된다.

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/mysql_rds_set_external_master.html

 

mysql.rds_set_external_master - Amazon Relational Database Service

MASTER_SSL_VERIFY_SERVER_CERT 옵션은 지원되지 않습니다. 이 옵션은 0으로 설정되어 있는데, 이는 연결이 암호화되었지만 인증서는 확인되지 않았음을 의미합니다.

docs.aws.amazon.com

 

CALL mysql.rds_set_external_master (
  '[마스터IP]'
  , [포트번호]
  , 'slave_user'
  , 'qwer1234'
  , 'mysql-bin.000001'
  , 1389
  , 0
);

 

CALL mysql.rds_start_replication;   // 연동시작

 

-알아두면 좋은 CALL mysql.rds_stop_replication;  // 연동중지

연동시작후 스테이터스 확인해서 둘다 yes 인지확인.
show slave status;


연동후의 데이타만 적용됨 그 이전데이타는 적용안됨

728x90
반응형