MCCS-Enterprise 관제서버 Unknown 표시되는 증상

1. Environment   

   MCCS-Enterprise 4.5.0

2. Symptoms

    관제서버에 등록된 모든 클러스터 상태가 Unknown 상태로 표시되며 (?표시) 그룹 상태 조회가 불가능
    기본적인 내용 확인 후에도 증상이 동일할 경우 하기 상태 확인 필요 : 관제서버 Unknown 증상 확인

3. Cause & Solution

 3-1. Devicemapper 영역 Disk full
  – /dev/dm-3 영역이 특정 로그가 쌓여 full 될 경우 Unknown 상태로 표시가 될 수 있음
image.png
  – Daily로 생성되는 nagios log로 인하여 해당 볼륨 size 10G(default) 공간이 full 됨
  – nagios.cfg 파일에 로그 Daily로 Log 적재됨  (경로 : /opt/docker/devicemapper/mnt/88fc646943c83e1fd8dd96578b957a89793fd6118cb881c29a79c7e1a6c8bc31/rootfs/usr/local/nagios/etc/nagios.cfg)
    -> 위 경로 중 bold 처리된 부분은 Docker container에 대한 값으로 서버마다 상이함
    -> 현재 : log_rotation_method=d (d = daily)
    -> 수정 : log_rotation_method=n (n = none)

 3-2. 관제서버 DB data 상의 그룹 정보 확인
  3-2-1. DB 쿼리 적용을 위해 DB 접속
    #docker exec -it gam /bin/bash
    #su – mccs
    #psql -d mccs 로 접속

  3-2-2. DB Data 상 등록된 그룹 수 파악
    #select max(ha_grp_id) from ha_groups;
    이 명령어를 수행하면 현재 관제서버에 등록된 그룹개수의 정보를 알 수 있습니다.
    본문 이미지 1
    현재 2개의 그룹정보를 가지고 있음을 알 수 있습니다.
    관제버서의 그룹정보 Max 값은 9999입니다. 만약 위 명령어로 확인 시 9999로 표시된다면 어떠한 그룹정보 Data가 지속적으로 발생했는지 확인이 필요합니다.  3-2-3. DB Data 상 등록된 그룹 수 상세정보 파악
   #select * from ha_groups order by ha_grp_id desc;
   세부적인 그룹 정보를 표시해주는 명령어입니다.

본문 이미지 2

      3-2-4. 비정상적인 경우 하기와 같이 del_tm 에 특정 날짜값이 조회됨
   위 항목 중 del_tm 이란 부분이 관제서버에서 그룹 정보를 삭제했는지에 대한 여부를 나타내주는 항목입니다. 

본문 이미지 3

      현재 정상적으로 구성되어 있다면 dem_tm에는 null 값이 들어가 있어야 하며 위와 같이 특정 날짜 및 시간이 설정되어 있다면 그룹정보를 삭제했지만 실제 Data값에는 남아 있는 상태입니다.   3-2-5. del_tm 값이 존재하는 항목 제거   #delete from ha_event_hists
   where ha_grp_id in (select ha_grp_id from ha_groups where del_tm is not null);

   #delete from group_states
   where ha_grp_id in (select ha_grp_id from ha_groups where del_tm is not null);

   #delete from ha_group2nodes
   where ha_grp_id in (select ha_grp_id from ha_groups where del_tm is not null);

   #delete from ha_groups
   where del_tm is not null;
   위 명령어는 del_tm에 null값이 아닌 값이 들어가 있는 항목들을 삭제하는 명령어 입니다.   4개의 명령어를 순차적으로 적용하시면 됩니다.   3-2-6. null 값이 아닌 그룹정보 최대값 확인   #select max(ha_grp_id) from ha_groups;   null값이 아닌 그룹정보의 최대값을 나타냅니다. 그룹개수가 Full이라면 다음과 같은 결과값을 출력할 것입니다.

본문 이미지 4

   #select max(ha_grp_id) from ha_groups where ha_grp_id != ‘G9999’;    3-2-5번 항목에서 del_tm 의 not null값인 data를 모두 삭제했기 때문에 최대값에서 바로 아래 현재 등록되어 있는 그룹의 number를 체크해 줍니다.   예) 그룹개수가 85개일 경우

본문 이미지 5

   3-2-7.    del_tm 값 초기화 후 실제 등록된 그룹정보는 86번부터 시작을 해야 하므로 다음 명령어로 수동 설정을 합니다.   #ALTER SEQUENCE ha_groups_seq RESTART WITH 86;    -> WITH 뒤에는 6번 항목에서 도출된 값 다음값을 입력   정상적으로 설정이 되었다면 “ALTER SEQUENCE” 라는 결과값을 출력할 것입니다.    -> 이후 추가 구성된 클러스터 정보 정상적으로 가져오는지 확인