Day_08-2 (Keepalived)

HD.Y·2023년 11월 8일
0

한화시스템 BEYOND SW

목록 보기
9/58
post-thumbnail

Keepalived 설치 및 설정 하기

  • 지난 글에서 Active-Active 구현 및 HAProxy를 사용한 로드 밸런싱까지 실습을 해봤다.

  • 이번 글에서는 Active-Standby 구현을 위한 Keepalived 설치 및 실습을 해보겠다.

  • 실습을 위해 앞 글에서 사용했던 1, 2번 리눅스 컴퓨터를 사용할 예정이다.

  • 먼저 Active 역할을 수행할 컴퓨터를 설정하겠다. ( 나는 1번 컴퓨터로 정했다. )
    (1) keepalived 를 설치한다 : yum install -y keepalived
    (2) keepalived 설정 파일을 아래와 같이 수정한다
       명령어 : vi /etc/keepalived/keepalived.conf

    • 14번째 줄을 주석처리 해준다 : # 사용
    • 18번째 줄 밑으로 전부 삭제한다 : 18번째 줄에서 dG 사용
    • 제일 아래에 다음과 같이 코드를 추가한다.
 vrrp_script chk_mysql {
        script "pidof mysqld"
        interval 2                      
        weight 2
        }
  vrrp_instance VI_1 {
        interface ens160
        state Active
        virtual_router_id 123	# Standby랑 맞춰줘야 하는 값(임의지정, 범위는 255까지)
        unicast_src_ip 77.77.77.121   # Active 컴퓨터의 IP 주소
        unicast_peer {
               77.77.77.122   # Standby 컴퓨터의 IP 주소
       	}
   priority 103		# Active 컴퓨터가 Standby 보다 높아야 하는 값(임의 지정)
   track_script {
             chk_mysql
        	}
   virtual_ipaddress {
               77.77.77.110/24 dev ens160   # 가상의 네트워크 주소 임의 지정   
        	}
  }

(3) keepalived 설정 파일을 수정했으므로 재시작한다 : systemctl restart keepalived
(4) keepalived 가 정상적으로 동작 중인지 확인한다 : systemctl status keepalived
(5) IP를 확인해본다 : ip addr

- 위와 같이 가상의 네트워크 주소가 생성된 것을 확인할 수 있다.
  • 다음으로 Standby 역할을 수행할 컴퓨터를 설정하겠다. ( 나는 2번 컴퓨터로 정했다. )

  • 설정하는 방법은 위에서 한 것과 동일하다.
    (1) keepalived 를 설치한다 : yum install -y keepalived
    (2) keepalived 설정 파일을 아래와 같이 수정한다
       명령어 : vi /etc/keepalived/keepalived.conf

    • 14번째 줄을 주석처리 해준다 : # 사용
    • 18번째 줄 밑으로 전부 삭제한다 : 18번째 줄에서 dG 사용
    • 제일 아래에 다음과 같이 코드를 추가한다.
 vrrp_script chk_mysql {
        script "pidof mysqld"
        interval 2                      
        weight 2
        }
  vrrp_instance VI_1 {
        interface ens160
        state Active
        virtual_router_id 123	# Standby랑 맞춰줘야 하는 값(임의지정, 범위는 255까지)
        unicast_src_ip 77.77.77.122  # Standby 컴퓨터의 IP 주소
        unicast_peer {
               77.77.77.121  # Active 컴퓨터의 IP 주소
       	}
   priority 102		# Active 컴퓨터가 Standby 보다 높아야 하는 값(임의 지정)
   track_script {
             chk_mysql
        	}
   virtual_ipaddress {
               77.77.77.110/24 dev ens160  # 앞에서 지정해준 가상의 네트워크 주소
        	}
  }

  (3) keepalived 설정 파일을 수정했으므로 재시작한다 : systemctl restart keepalived
  (4) keepalived 가 정상적으로 동작 중인지 확인한다 : systemctl status keepalived


"Active-Standby" 가 정상적으로 동작하는지 테스트하기

  • 첫 번째 방법 : IP 주소 전환 테스트
    (1) Active 컴퓨터에서 ip addr 입력 후 ip를 확인한 뒤 mysqld를 정지한다.
    (2) Standby 컴퓨터에서 systemctl restart NetworkManager 입력 후
      ip addr를 입력하여 가상의 네트워크 주소가 출력되는지 아래와 같이 확인한다.

  • 두 번째 방법 : DB 서버 Fail-Over 테스트 (MySQL Workbench 이용)
    hostname : 77.77.77.110   # 지정한 가상 네트워크 주소
    username : test    # 지난 글에서 생성해줬던 사용자(아무 사용자나 생성해서 해도 됨) (1) Active 컴퓨터에서 서버가 동작중일때 접속하여 server-id 확인
    (2) Active 컴퓨터에서 서버를 종료하고 다시 접속하여 server-id 확인
  • 위 그림처럼 Active 컴퓨터에서 서버가 동작중일때는 server-id = 1이었으나,
    서버 종료 후 다시 접속했을때는 server-id = 2 로 변경된 것을 볼 수 있다.
  • 혹시나 Active 컴퓨터에서 서버 종료 후 재접속 시 오류가 뜰 수 있는데, 그것은 전환하는 과정에서 일정한 소요시간이 필요하기 때문에 발생하는 것이므로, 잠시 뒤에 다시해보면 이상없이 접속되는 것을 확인할 수 있다.

오늘의 느낀점 👀

  • 어제 배운 DB 서버 이중화에 대해서 오늘은 조금더 나아간 개념에 대해서 학습한 시간이었다. 결국은 대용량의 트래픽을 관리할 수 있는 기초 개념을 배웠다고 생각한다.

  • 지금은 2개의 서버를 가지고 했지만, 앞으로는 그 이상의 서버에 대해서 대용량 트래픽을 관리하기 위한 여러가지 기술들에 대해 공부를 해봐야겠다.

  • ❗참고사항으로 오늘 CentOS에서 리눅스 컴퓨터 1대를 새로 설치한 뒤 yum 명령어를 사용하니 아래와 같은 오류가 떴다.❗
    Errors during downloading metadata for repository 'appstream';

  • 해결한 방법으로 vi /etc/yum.repos.d/CentOS-Stream-AppStream.repo 입력 후
    "mirrorlist" 줄을 주석 처리해주고, "baseurl" 줄의 주석을 해제하니 정상적으로 작동했다.
  • 정확한 원인은 모르겠으나, 같이 수업을 듣는 다른 분들도 비슷한 증상이 있어서 알게된 해결방법이다. 아마 CentOS 자체의 문제가 아닌가 싶다...🤔
profile
Backend Developer

0개의 댓글