본문 바로가기
Linux/Pacemaker

Pacemaker) LSB 리소스란 무엇인가?

by LILO 2023. 7. 16.
반응형

INTRO

Pacemaker Resource를 등록할 때 OCF로 형태로 제공하는 리소스로 등록하면 간편하게 등록할 수 있습니다.

하지만 OCF 형태로 제공되지 않는 자사 솔루션 및 기타 솔루션들이 많기 때문에 이러한 서비스들은 LSB 리소스, systemd 등으로 등록하여 서비스를 관리해야 됩니다.

 

RHEL 9버전부터 /etc/init.d의 function이 제공되지 않고 /etc/init.d 역시 사용되지 않기 때문에 앞으로 systemd를 이용하여 서비스를 관리할 필요가 있습니다. 

아직까지는 RHEL 8.X까지의 OS가 도입된 곳이 많기 때문에 LSB Resource Agent에 대하여 공유드리려고 합니다.

 

 

LSB Resource Agent란?

LSB Resource Agent란 작성한 init script(init 스크립트)를 Pacemaker 리소스에 등록하는 것입니다.

Init 스크립트는 작성한 스크립트가 서버가 생성 및 부팅시에 자동으로 실행시킬 수 있게 도와주는 기능입니다.

 

Init Script

 

guide.ncloud-docs.com

 

 

Init Script Actions

Note: This specification does not define the concept of a package upgrade. Implementations may do different things when packages are upgraded, including not replacing an init script if it is marked as a configuration file, particularly if the file appears

refspecs.linuxbase.org

 

 

LSB Resource 검증 방법

LSB 호환 여부와 관련된 ClusterLabs 문서를 참고하면 start, stop에 대한 return 값 검증을 중요시 여기는 것으로 확인됩니다. 자세한 부분은 아래의 문서를 참고해주세요.

 

8.3. LSB Resource Agents (Init Scripts)

The relevant part of the LSB specifications includes a description of all the return codes listed here. Assuming some_service is configured correctly and currently inactive, the following sequence will help you determine if it is LSB-compatible: Start (sto

clusterlabs.org

 

1. 시작(start) 검증

- 서비스가 정상적으로 실행되었는지?

- return 값이 0으로 출력되었는지?

# /etc/init.d/example.sh start
# echo "result: $?"

 

2. 시작 상태 확인

- status 옵션이 수행이 정상적으로 되는지?  (status 명령이 수행되지 않는다면 function 재확인 필요)

- return 값이 0으로 출력되었는지?

# /etc/init.d/example.sh status
# echo "result: $?"

 

3. 시작 명령 2번 이상 실행시 서비스가 계속 실행중인지 확인

- 서비스가 계속 실행중인지? (ps 명령을 통해 프로세스 시간 확인 필요)

- return 값이 0으로 출력되었는지?

# /etc/init.d/example.sh start
# echo "result: $?"

# ps -ef |grep -i <서비스 명>
--> 실행중인 프로세스의 시작 시간 확인 필요 (스크립트 start시 재기동이 되었는지 확인 용도)

 

4. 중지 명령어가 정상적으로 수행되는지 확인

- 서비스가 정상적으로 종료되었는지?

- return 값이 0으로 출력되었는지?

# /etc/init.d/example.sh stop
# echo "result: $?"

 

5. 중지 상태 확인

- status 옵션이 수행이 정상적으로 되는지?  (status 명령이 수행되지 않는다면 function 재확인 필요)

- return 값이 0이 아니거나 3으로 출력되었는지?

# /etc/init.d/example.sh status
# echo "result: $?"

 

6. 중지 명령 2번 이상 실행시 서비스가 계속 중지중인지 확인

- 서비스가 종료된 상태로 유지되고 있는지?

- return 값이 0으로 출력되었는지?

# /etc/init.d/example.sh stop
# echo "result: $?"

 

7. 서비스의 status 검증은 스크립트 status function을 참고하므로 스크립트의 status 검증은 필수적이며 가장 중요한 부분입니다.

 

 

LSB init Script 예시

start, stop, status function은 필수로 있어야 하며 op monitor(리소스 모니터링) action을 위해 monitor도 작성되어 있으면 좋습니다.

#!/bin/sh

start() {

}

stop() {

}

restart() {

}

status() {

}

monitor() {

}


case "$1" in
  start)
      start
      ;;
  stop)
      stop
      ;;
  restart)
      restart
      ;;
  status) 
      status
      ;;
  monitor) 
      monitor
      ;;

  *)
      echo $"Usage: $0 {start|stop|restart|status|monitor}"
      exit 1
esac

 

 

추가로 몇 개의 Practice들을 참고용으로 더 공유드립니다.

 

클럭스

클럭스, S/W 프로젝트

www.chlux.co.kr

 

GitHub - hazaq/ocf-lsb-example

Contribute to hazaq/ocf-lsb-example development by creating an account on GitHub.

github.com

 

반응형