CLOUD/Server

[DB 이중화] Active - Standby

alsruds 2023. 3. 6. 12:12

2023.03.02 - [클라우드/서버] - [DB 이중화] Active(읽기,쓰기) - Active(읽기,쓰기)

 

[DB 이중화] Active(읽기,쓰기) - Active(읽기,쓰기)

2023.03.02 - [클라우드/서버] - [DB 이중화] Active(쓰기) - Active(읽기) [DB 이중화] Active(쓰기) - Active(읽기) [ 준비 ] ※ CentOS 8 서버 2대 준비 ● 네트워크 설정 ● 방화벽 해제 setenforce 0 systemctl stop firwalld

alsrudalsrudalsrud.tistory.com

이어서 하기~

 

 

 

[ Master ]

● 가상 IP 설정

※ 참고 : 2023.02.15 - [클라우드/리눅스] - [Linux] 네트워크 설정

 

[Linux] 네트워크 설정

[ 명령어를 사용한 네트워크 설정 ] ● ifconfig 명령어 》 ifconfig [장치명] [IP 주소] netmask [서브넷 마스크] [ DHCP 서버를 이용한 설정 ] ● 파일로 설정 》 /etc/sysconfig/network-scripts/ifcfg-[장치명]

alsrudalsrudalsrud.tistory.com

새로운 장치명을 가진 네트워크 설정 파일을 생성

#기존 파일 복사 후 변경
cp /etc/sysconfig/network-scripts/ifcfg-ens160 /etc/sysconfig/network-scripts/ifcfg-ens160:1
vi /etc/sysconfig/network-scripts/ifcfg-ens160:1
  • UUID 삭제
  • NAME / DEVICE 장치명 변경
  • IP 변경

시스템 재시작

 

keepalived 설치 / 설정

#설치
yum install -y keepalived
#설정
vi /etc/keepalived/keepalived.conf

설정 파일 내용 지우고 다음 내용 추가

vrrp_script chk_mysql {
        script "pidof mysqld"
        interval 2                       # every 2 seconds
        weight 2
}

vrrp_instance VI_1 {
        interface ens160	# 장치명
        state MASTER
        virtual_router_id 123		# Slave랑 맞춰줘야 하는 값
        unicast_src_ip [Master IP]
        unicast_peer {
                [Slave IP]
        }

        priority 102			# Slave보다 Master가 높아야 하는 값

        track_script {
             chk_mysql
        }

        virtual_ipaddress {
                [가상ip]/24 dev ens160
        }
}

파일 설정 후 재시작 :  systemctl  restart  keepalived

 

[ Slave ] 

● 가상 ip 설정

#기존 파일 복사 후 변경
cp /etc/sysconfig/network-scripts/ifcfg-ens160 /etc/sysconfig/network-scripts/ifcfg-ens160:1
vi /etc/sysconfig/network-scripts/ifcfg-ens160:1
  • UUID 삭제
  • NAME / DEVICE 장치명 변경
  • IP 변경 : master 와 같은 가상 ip 설

 시스템 재시작

 

 keepalived 설치 / 설정

#설치
yum install -y keepalived
#설정
vi /etc/keepalived/keepalived.conf

 설정 파일 내용 지우고 다음 내용 추가

vrrp_script chk_mysql {
        script "pidof mysqld"
        interval 2                       # every 2 seconds
        weight 2
}

vrrp_instance VI_1 {
        interface ens160	# 장치명
        state BACKUP
        virtual_router_id 123		# Master랑 맞춰줘야 하는 값
        unicast_src_ip [Slave IP]
        unicast_peer {
                [Master IP]
        }

        priority 101			# Slave보다 Master가 높아야 하는 값

        track_script {
             chk_mysql
        }

        virtual_ipaddress {
                [가상ip]/24 dev ens160
        }
}

 파일 설정 후 재시작 :  systemctl  restart  keepalived

 

☞ 확인하기 ☜

설정했던 가상 ip 로 접속

show variables LIKE '%server_id%'\G;

 Active - Standby 일때는 Active 서버로만 접속되다가 Active 서버가 다운되면 Standby 서버로 접속됨

 

① Active - Standby 일 때 : Master 서버로 연결

server_id = 1 인 걸 확인!

 

② Active 서버 다운됐을 때 : Slave 서버로 연결

server_id = 2 인 걸 확인!