Weblogic Coherence

Weblogic에서는 Coherence라는 Data Grid 툴을 제공한다. 이를 통해, Weblogic에서는 Session을 caching하여 session cache를 복제 및 분산이 가능하다.

Cluster와 동작구조가 매우 비슷하나, cache data를 별도의 coherence server에 저장하여 다양한 이점을 얻을 수 있다.

Multicast 설정


기본적으로 Weblogic 설치시, Coherence는 Oracle_Home에 함께 설치된다.
[Coherence_Home]/bin 으로 이동시, .cache-server.sh 가 존재한다.

cache-server.sh 수정

...

JAVA_OPTS="-D:Name=${COH_NAME} -Xms$MEMORY -Xmx$MEMORY 
JAVA_OPTS="${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom $JMXPROPERTIES"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cacheconfig=default-session-cache-config.xml"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.session.localstorage=true"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cluster=my_cluster"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.clusteraddress=224.2.1.2"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.clusterport=14199"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.ttl=1"
JAVA_OPTS="${JAVA_OPTS} -Djava.net.preferIPv4Stack=true "

$JAVAEXEC -server -cp "$COH_HOME/lib/coherence-web.jar:$COH_HOME/lib/coherence.jar"\
$JAVA_OPTS com.tangosol.net.DefaultCacheServer $1

managed server 기동 스크립트 수정

...
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cacheconfig=default-session-cache-config.xml"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.session.localstorage=false"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cluster=my_cluster"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.clusteraddress=224.2.1.2"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.clusterport=14199"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.ttl=1"
JAVA_OPTS="${JAVA_OPTS} -Djava.net.preferIPv4Stack=true "

네트워크 설정

-Dcoherence.clusteraddress
-Dcoherence.clusterport
-Dcoherence.ttl
위 옵션 정보를 통하여 서로의 장비에서 통신이 가능한지 확인이 우선시 되어야 한다.

Unicast 설정

cache-server.sh 수정

...

JAVA_OPTS="-D:Name=${COH_NAME} -Xms$MEMORY -Xmx$MEMORY 
JAVA_OPTS="${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom $JMXPROPERTIES"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cacheconfig=default-session-cache-config.xml"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.session.localstorage=true"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cluster=my_cluster"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.localport=8090"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.localhost=192.168.10.10"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.localport.adjust=true"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.wka=192.168.10.0/24"
JAVA_OPTS="${JAVA_OPTS} -Djava.net.preferIPv4Stack=true "

$JAVAEXEC -server -cp "$COH_HOME/lib/coherence-web.jar:$COH_HOME/lib/coherence.jar"\
$JAVA_OPTS com.tangosol.net.DefaultCacheServer $1

managed server 기동 스크립트 수정

...
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cacheconfig=default-session-cache-config.xml"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.session.localstorage=false"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cluster=my_cluster"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.localhost=192.168.10.10"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.localport=8091"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.localport.adjust=true"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.wka=192.168.10.0/24"
JAVA_OPTS="${JAVA_OPTS} -Djava.net.preferIPv4Stack=true "

네트워크 설정

-Dcoherence.localhost
-Dcoherence.localport
위 설정을 통해 Coherence Server와 Managed Server가 session cache를 주고받을때, 해당 인스턴스가 사용할 IP주소 및 Port를 할다한다.
-Dcoherence.localport.adjust
혹 설정중, 중복된 포트가 존재할시, +1 하여 localport를 자동으로 할당해준다
-Dcoherence.wka
well known address. 해당 설정이 되어있으면 강제로 unicast 모드를 설정한다.
wka에 적힌 네트워크 주소 및 인스턴스 주소를 향해 session cache 정보를 교환한다.

localstorage


위 옵션중, localstorage라는 옵션이 존재한다. 해당 옵션은 기본적으로 cache server에는 true로, managed server에는 false로 지정한다.
해당 옵션이 하는 기능은, session cache를 해당 인스턴에서 저장할지 여부를 물어본다.

in-process


모든 localstorage 옵션을 true로 설정시, 기본적으로 in-process 모드로 동작한다. 해당 모드에서는 managed server에서 session data를 저장한다. 별도의 cache server가 필요하지 않지만, 기본적으로 운영모드에서는 권장되지 않으며, managed server에 session cache를 저장하여, Heap memory에 부하가 증가한다.

out-of-process


cache server만 localstorage 옵션을 true로 설정시, out-of-process모드로 동작한다.

좋은 웹페이지 즐겨찾기