Comprehensive Deployment Guide를 따라서 OpenShift를 설치할 때 Node 설치 전 미리 설치해야 하는 패키지들

  • mlocate 설치

  • dbus 설치 - oddjobd가 통신을 하기 위해서 messagebus가 필요한데 dbus messagebus의 구현체이다.

  • nodejs 설치 - Javascript Runtime 프레임워크

  • rubygem-passenger

  • mod-passenger

  ruby193-mcollective 관련 트러블 슈팅

OpenShift Origin을 OpenStack 환경에서 설치하는 중에 각각의 컴포넌트들(Broker, Node, ActiveMQ, MongoDB)을 각각 VM에 설치하고 있는데, 항상 모두 완료한 후 oo-accept-node를 수행하면 아래와 같은 메시지와 함께 실패했다

# oo-accept-node
FAIL: service ruby193-mcollective not running
FAIL: Could not get SELinux context for ruby193-mcollective
2 ERRORS

그래서 facts.yml 파일에서 이상해 보이는 내용을 수정하고
ps aux | grep mcollective를 해보니 프로세스가 3개나 돌고 있길래 모두 종료 시그널을 보내 강제 종료하고, pid파일을 저장하는 run 디렉토리가 없어서 생성해준 후 서비스를 다시 실행했다.
# mkdir /opt/rh/ruby193/root/var/run
# service ruby193-mcollective start
# service ruby193-mcollective status
mcollectived is running (pid 32013)
헐.. 된다. 만세!


그러나 끝나지 않았다. 여전히 브로커에서 District에 추가하면 small profile을 갖는 노드를 찾을 수 없다고 나온다.


MCollective 설정 중에 가장 답답한 것은 서비스가 running이라고 해도, 이게 ActiveMQ와 연결이 되어있는지 안되어있는지, 메시지는 받고는 있는지, RPC 호출은 되는지 하는 부분이다. 이걸 도통 알 수가 없다.


oo-mco ping을 해보면 노드에 핑을 보내고 응답을 받지만, District에서 찾을 수 없는 것은 왜일까?

브로커는 RPC로 노드의 프로시져를 원격으로 수행하는데, 원격 프로시져 실행을 위한 메시지 풀(큐)로 ActiveMQ로 사용하고 Publisher/Subscriber 로 MCollective를 사용한다.

ActiveMQ의 Admin콘솔에서 큐의 내용을 확인해보면 브로커가 보낸 메시지는 있지만, 노드가 응답한 기록은 없다. ActiveMQ의 로그도 마찬가지였다.


그렇다면 노드의 MCollective 서버가 ActiveMQ에 연결되지 않았음을 의미하므로, 열심히 또 구글링을 하고 메일링 리스트를 뒤져보다가 MCollective의 설정 파일(/opt/rh/ruby193/root/etc/mcollective/server.cfg)의 내용을 다시 점검해보았는데, 설치 가이드에서는 찾을 수 없었던 설명을 볼 수 있었다.

direct_addressing 옵션의 값이 0으로 설정되어 있었는데 1로 바꾸어줘야했다.

설정값을 바꿔준 후 서비스를 재시작하고 브로커에서 oo-mco 스크립트를 이용해 확인해보니 정상적으로 메시지를 주고 받는 것을 확인할 수 있었다.


oo-mco rpc openshift echo msg="I_am_here"

Discovering hosts using the mc method for 2 second(s) .... 1


 * [ ============================================================> ] 1 / 1



osnode1.java2game.com                    

   Message: I_am_here

      Time: nil




Finished processing 1 / 1 hosts in 28.48 ms

# oo-mco facts node-profile -v

Discovering hosts using the mc method for 2 second(s) .... 1

Report for fact: node-profile



---- rpc stats ----

           Nodes: 1 / 1

     Pass / Fail: 1 / 0

      Start Time: 2014-09-22 07:20:26 +0100

  Discovery Time: 2034.33ms

      Agent Time: 47.55ms

      Total Time: 2081.88ms


그리고 다시 Small Gear Profile로 설정한 District에 노드를 추가했더니 드디어 됐다.

추가적으로 브로커와 노드의 MCollective 설정 시 유의 사항으로는 securityprovider와 plugin.psk의 값, username과 password가 동일해야 한다.



참고 자료

https://lists.openshift.redhat.com/openshift-archives/dev/2014-July/msg00215.html

https://docs.puppetlabs.com/mcollective/configure/server.html#directaddressing

https://lists.openshift.redhat.com/openshift-archives/users/2013-December/msg00077.html




  카트리지 설치 관련 트러블 슈팅

OpenShift 설치 후 실제로 애플리케이션을 생성하기 위해서는 카트리지가 필요하다. (애플리케이션을 생성할 때 기본 카트리지를 하나 이상 지정해야 하므로)

글을 쓰는 현재 OpenShift Origin의 릴리즈는 4이다. 그래서 Comprehensive Deployment Guide에서 처음에 설정하는 yum repos 파일의 baseurl도 release4이다.

카트리지 설치 시에 다른 것들은 문제없이 의존성 패키지들도 함께 잘 설치가 되지만 속을 썩이는 놈이 있다면 JBoss 카트리지 군이다. (Jekins 카트리지에서도 의존성 패키지 문제가 있긴 하지만 yum install jekins로 버전을 빼고 설치하면 된다)

  • openshift-origin-cartridge-jbosseap

  • openshift-origin-cartridge-jbossews

  • openshift-origin-cartridge-jbossas


위 카트리지들을 꼭 설치하지 않아도 상관은 없지만, 내가 자바 유저이기도 하거니와, 이 프로젝트에서 다른 회사가 테스트하기 위한 애플리케이션이 자바 웹 애플리케이션이라 JBoss 카트리지를 설치해야한다. 그런데 의존성 패키지들을 찾을 수 없어서 설치하지 못하는 게 문제.


또 열심히 구글링... 한 결과로 문제를 얘기하자면, Openshift Origin의 RPM Repository의 Dependencies의 내용이 다르다. 필요가 없어져서 다르다면 모를까 버전 업 된 Repository에서는 필요한 패키지들이 쏙쏙 빠져있다. maven3나 tomcat6, tomcat 7같은.. 조금 불편하지만 일일히 수동으로 해주었다.

Error: Package: ... 로 시작하는 Dependency 관련 에러 메시지가 뜨면, 해당 패키지를 수동으로 설치해주면 된다. 아래는 Maven3, Tomcat, JBoss AS의 RPM 주소이다.

yum install <주소> 를 실행하면 RPM을 다운로드 받아 설치를 진행한다.

  • Maven 3 : yum install https://mirror.openshift.com/pub/origin-server/release/3/rhel-6/dependencies/x86_64/maven3-3.0.3-4.noarch.rpm 
  • Tomcat 6 : yum install https://s3-us-west-2.amazonaws.com/getup-mirror/getup-openshift-origin-release-3/noarch/tomcat6-6.0.39-1.noarch.rpm 
  • Tomcat 7 yum install https://s3-us-west-2.amazonaws.com/getup-mirror/getup-openshift-origin-release-3/noarch/tomcat7-7.0.50-1.noarch.rpm 
  • JBoss AS : yum install https://s3-us-west-2.amazonaws.com/getup-mirror/getup-openshift-origin-release-3/noarch/jboss-as7-7.1.1.Final-1.noarch.rpm

# yum -y install https://mirror.openshift.com/pub/origin-server/release/3/rhel-6/dependencies/x86_64/maven3-3.0.3-4.noarch.rpm https://s3-us-west-2.amazonaws.com/getup-mirror/getup-openshift-origin-release-3/noarch/tomcat6-6.0.39-1.noarch.rpm https://s3-us-west-2.amazonaws.com/getup-mirror/getup-openshift-origin-release-3/noarch/tomcat7-7.0.50-1.noarch.rpm https://s3-us-west-2.amazonaws.com/getup-mirror/getup-openshift-origin-release-3/noarch/jboss-as7-7.1.1.Final-1.noarch.rpm https://mirror.openshift.com/pub/origin-server/release/3/rhel-6/dependencies/x86_64/jboss-as7-modules-7.1.1.Final-1.noarch.rpm


JBoss AS와 EWS는 이렇게 설치 할 수 있지만, EAP는 라이선스를 구매해서 사용해야 하는 듯 하다. AS와 EAP의 비교는 아래 글에 잘 나와있다.

http://opennaru.tistory.com/44


아래는 Openshift Origin Release 3의 Dependencies

https://mirror.openshift.com/pub/origin-server/release/3/rhel-6/dependencies/x86_64/



참고 자료

http://stackoverflow.com/questions/25729796/missing-jboss-tomcat-cartridge

http://stackoverflow.com/questions/25582773/how-can-i-install-jboss-eap-and-jboss-ews-support-in-openshift-origin

https://access.redhat.com/solutions/223043

https://lists.openshift.redhat.com/openshift-archives/dev/2014-July/msg00224.html



  10.6.1. Configuring SSH to Pass Through the GIT_SSH Environment Variable

Comprehensive Deployment Guide의 10.6.1. 항을 보면 아래와 같이 되어있다.

# cat <<EOF >> /etc/ssh/sshd_config

AcceptEnv GIT_SSH

EOF

그런데 이렇게 했을 때 설정 파일의 끝에 AcceptEnv GIT_SSH가 추가가 되긴 하지만 줄바꿈이 되지 않고 마지막 줄의 끝에 붙게 된다. 따라서 sshd_config 파일을 따로 수정하거나, 처음 추가할 때 줄바꿈을 추가해서 위의 명령을 수행해준다.

+ Recent posts