본문 바로가기
IBM - old/IBM APIC

[APIC]API Portal 클러스터 구성 및 fail-over 테스트

by freeman98 2016. 10. 11.

안녕하세요 이정운 입니다.

기본적으로 IBM API Connect 의 Portal 은 클러스터 구성이 가능하며 요즘 많이 사용하는 3중안을 권장사항으로 하고 있습니다. (https://www.ibm.com/support/knowledgecenter/en/SSMNED_5.0.0/com.ibm.apic.install.doc/capim_portal_HA.html)

다 만, API Portal 의 경우에는 API 검색이나 등록과 같이 서비스 초기 사용을 위한 목적으로 사용되고 실제 수행되는 서비스와 직접적으로 연관되지는 않기 때문에 API Gateway 나 이런 컴포넌트에 비해서 그렇게 높은 고가용성 요건이 필요하지 않는 경우가 실제로 많습니다.

그러한 경우를 가정하여 API Portal 에서는 manual fail-over 기능을 하단과 같이 지원하고 있습니다.

High availability configurations for the Developer Portal
https://www.ibm.com/support/knowledgecenter/en/SSMNED_5.0.0/com.ibm.apic.install.doc/capic_portal_ha_config.html

여기서는 API Portal 클러스터 구성과 fail-over 작업을 테스트 해보고 그 내용을 공유드리오니 참고하시기 바라겠습니다.
(추가적으로 혹여 도움이 될까 crontab 에 등록해서 주기적으로 check 및 장애 발생시에 자동으로 manual fail-over 테스트도 같이 테스트해서 공유드리도록 하겠습니다.)



APIC Portal 클러스터 & fail-over

- Cluster 상태 확인
bootstrap_cluster -s


- HA 작업 전에 cluster 구성할 node 간의 시간 동기화 작업 수행 : NTP 서버 활용
set_ntp 192.168.225.10
set_ntp -d


- Portal Clustering 을 위해서 설정 변경 : 기존 Portal 에서 수행하면 되며(Portal01) Cluster 로 설정하겠다는 명령
set_cluster_members -c


- 추가할 Portal 노드에서 기존에 설정한 Portal Cluster 에 추가 (위에서 설정한 원래 Portal 의 IP 사용)
set_cluster_members 192.168.225.20


 - 완료된 후에 양쪽 다 status 확인 - File Sync 는 시간이 필요하며 약 5분 정도면 완료


 - 작업이 정상적으로 완료되면 하단과 같이 확인 가능


- 구성 완료


테스트로 APIC Portal 중의 한 대를 강제 종료한 경우

 - 상태 확인 : 문제가 없는 Portal 도 내부적 투표에서 50% 를 초과하지 않으므로 non-Primary 로 변경된 것을 확인할 수 있음
status


 - 정상 상태인 APIC Portal 에서 manual fail-over 가능
bootstrap_cluster -pi 또는 set_primary 수행


 - 서비스 복구 확인


** 해당 작업은 간단한 script 작성과 crontab 등록을 통해서 원하는 형태로 자동화 가능

- 로컬에서 dbstatus 확인해보고 remote 로 dbstatus 결과를 받아서 로컬이 non-Primary 이고 remote 가 Unreachable 인 경우 즉, 로컬은 정상인데 remote 에서 장애가 발생했고 단순 투표에서 50% 가 넘지 않아 primary 가 아닌 경우 자동으로 fail-over 수행


---------check_failover -------------------------------------------------------------
#!/bin/bash
IP01=192.168.225.20
IP02=192.168.225.30

DB_STATUS_SHORT=$(/home/admin/bin/dbstatus)
PEER_DBSTATUS=$(ssh -n -o LogLevel=quiet -o Batchmode=yes -o PasswordAuthentication=no -o ConnectTimeout=5 $IP02 dbstatus 2> /dev/null) && PEER_OK=1 || PEER_OK=0

if [[ $PEER_OK -eq 0 ]]
then
  PEER_DBSTATUS=Unreachable
fi

if [[ $DB_STATUS_SHORT == "non-Primary" && $PEER_DBSTATUS == "Unreachable" ]]
then
        echo $DB_STATUS_SHORT,$PEER_DBSTATUS >> /home/admin/logs/HA_STATUS.log
        STATUS_TEXT="manual fail-over is needed"
        FAIL01=$(/home/admin/bin/bootstrap_cluster -pi)
        FAIL02=$(/home/admin/bin/set_primary)
fi
------------------------------------------------------------------------

script 작성이 완료되었으면 하단과 같이 crontab 을 수정하고 restart 해서 바로 적용 가능 (하단의 예제는 3분마다 체크)
crontab -e : crontab 수정

crontab -l



sudo /etc/init.d/cron restart : crontab 재시작


참고 : var/log/syslog 에 APIC Portal 관련 syslog 를 확인할 수 있으므로 필요시 debug 가능


참고 #2: 추가 Node 에 IBM APIC Portal 설치

- OVF 이미지 설치 후에 network 설정 변경

sudo vi /etc/network/interfaces

allow-hotplug eth0
iface eth0 inet static
address 192.168.225.30
netmask 255.255.255.0
gateway 192.168.225.2


- 네트워크 재시작
sudo service networking restart
sudo ifup eth0


- CMC 관리콘솔에 Portal 설정 key 확인해서 key file 로 저장
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfd1WdVqJxsLX84LXfCyeyZwZnRUlbaWMQFlNXrbDbI05aj8tJBh14sFT8oQf2Kjdt5bM9YiI09qNrc7Yafpy2n+eFVpxT1jQwxNcOCH2snwbNfMYEpmAV0+vcupOgdlqxAZu8cCzL2lZHTVlfmk61576it5iN1uF3N9Im9pl5e4307XMD3FTwTV0FIQRAHAIE+CjroE5jYgTa/Lwt5o58Z5PDC42UepnRQhHJiYJc5RmnM4WKvSqA9QMi45wAfK+wU7oUXYucsDOO91MVSR8aCjA9cAhT9eOTs1XdnUT4xFYQNAAaGDGQA9hNUSdaHzC6xmy6Gk+AcFkiT7L6M/9L apim_advanced_portal_ssh_key " > key_file_name


- 해당 key 파일로 API Portal 설정
cat key_file_name | set_apim_host portal.ibm.com 192.168.225.100


댓글