개인 저장용 블로그

Coherence death detection 본문

Oracle Fusion Middleware/Coherence

Coherence death detection

우엉잇 2022. 5. 10. 11:19

코히런스 클러스터 멤버가 remove 되기 위해서는 크게 두가지 형태로 나누어 진다. 

 

1. process 체크 

 

 inbound용, 클러스터 멤버인 해당 process에 일정 interval로 packet을 보내 정해진 timeout 까지 ack를 받지 못하면 클러스터 멤버에서 remove함. (default 1초에 한번씩 300초 timeout)

<cluster-config>
.
.
<packet-publisher>
  <packet-delivery>
    <timeout-milliseconds>300000</timeout-milliseconds>
    <heartbeat-milliseconds>1000</heartbeat-milliseconds>
  </packet-delivery>
</packet-publisher>
.
.
</cluster-config>

 

2. HW health 체크 

 

 outbound용, 해당 host 자체가 reachable 한지를 InetAddress.isReachable을 통해 체크 함

(default 5초 timeout으로 3번 시도)

<cluster-config>
.
.
<tcp-ring-listener>
  <ip-timeout system-property="tangosol.coherence.ipmonitor.pingtimeout">5s</ip-timeout>
  <ip-attempts>3</ip-attempts>
</tcp-ring-listener>
.
.
</cluster-config>

 

코히런스에서 InetAddress.isReachable는 IpMonitor에 의해 수행됩니다. 

즉 IpMonitoer는 코히런스 클러스터 구성원을 호스팅 하는 시스템에 "ping"을 요청을 주기적으로 보냅니다. 

 

isReachable는 일반적인 적으로 권한을 얻을 수 있는 경우 ICMP ECHO REQUEST를 사용하고, 그렇지 않으면 대상 호스트의 포트 7(에코)에서 TCP 연결을 시도합니다.

https://docs.oracle.com/javase/6/docs/api/java/net/InetAddress.html#isReachable(int)

--------------------------------------------------------------------------

* 아래 내용은 자문자답한 내용임 // 정확하지 않음 

 

Q1) 코히런스 서버와 멤버가 각각 다른 장비 환경이고, (HW shutdown으로) 클러스터 멤버가 죽었을 경우
     TCP Ring을 통해 death detection을 할텐데 TCP Ring이 동작하기 위한 조건은 무엇일까? 

 

     -->
  IpMonitoer를 통해 ping을 받는데 true 값을 받을 경우 정상적으로 통신이 되기 때문에 TCP Ring이 동작하지 않음 
  (IpMonitoer가 ping을 몇초에 한번씩 쏘는지는 확인이 필요함)

  false 값을 받을 경우 TCP Ring 이 동작하는 것으로 보임 

 

Q2) inbound, outboud용 이란 장비 기준을 말하는 건지 

 

   유니캐스트 설정 환경에서 테스트 한 내용임. 

 

   1. 오라클 문서를 유니캐스트에도 inbound, outbound에 대한 내용이 나옴. 

https://docs.oracle.com/middleware/1221/coherence/develop-applications/cluster_setup.htm#COHDG5876

    유니캐스트 경우 두개의 포트를 사용함, 한개는 큰 패킷에 사용되고, 나머지 한개는 네트워크 MTU 이하의 크기를 가      진 패킷에 대해 사용됨

아래 명령어로 MTU를 확인 할 수 있슴 

[weblogic@localhost ~]$ netstat -i
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
enp0s3           1500      167      0      0 0           200      0      0      0 BMRU
enp0s8           1500       56      0      0 0            65      0      0      0 BMRU

  해당 포트들은 인바운드와 아웃바인드 트패픽 간의 경합을 줄인다고 나와 있고, 유니캐스트 포트에 대해 와이어샤크    를 이용하여 패킷 흐름을 확인한 결과 MTU 미만의 패킷은 설정포트+1에서 이상은 설정포트에서 패킷이 주고 받아지는 걸 확인 

 

결론 prcoess는 inbound, hw health는 outbound는 기본적으로 it에서 사용하는 뜻과 다른 것으로 보인다. 

inbound은 software, outbound는 hw로 보면 될것같다.