아래는 cluster peer에 대해 알고싶어서 정리한 개인적인 노트입니다.

cluster peer가 어떤애고 어떤식으로 붙고 떨어지는건지를 알고싶음.

2by2 구성에서 G2N1에 TCP로 세션A을 맺었다.
x$session@local로 확인해보니, G1N2에 cluster peer가 붙어있음? 왜 G1N2에 붙지?
세션B을 하나 더 붙여봄.
이번엔 G1N1, G2N2에 peer가 붙어있다고 나옴.
이 상황에서 세션B를 닫았떠니(그냥 cmd창 종료) 방금 G1N1, G2N2에 붙어있떤 peer는 그대로임.
세션C를 하나 더 붙여봄.
그대로다?쿼리 수행해봄 (gSQL> select * from x$instance;)
이번엔 G1N1, G1N2, G2N2에 하나씩 ....붙고...음..
세션D 붙임. G1N1 G1N2 G2N2에 하나씩 peer 뜸.
음...원래 정상적인게 세션 붙으면 나머지 노드에 peer가 떠야하나? (쿼리 수행시? 여기서 쿼리는 나는 gSQL> select * from x$instance; 로 테스트)
이제까지 붙인 세션 다 종료 해봄. (A, C, D) 모든 노드에서 cluser peer 종료됨.
@_@;;;



TCP 세션인지 여부는 상관이 없다?
DA로 붙은 gsql에서 수행해봄

모든 노드에서 cluster peer 안붙어있는 상황에서 select * from x$session@local where program = 'cluster peer';
g1n1 select * from x$instance 수행하니, 나머지 세개 노드에서 cluster peer 구동됨.
g1n2 select * from x$instance 수행하니, 나머지 세개 노드에서 cluster peer 구동됨.
g2n1 select * from x$instance 수행하니, 나머지 세개 노드에서 cluster peer 구동됨.
g2n2 select * from x$instance 수행하니, 나머지 세개 노드에서 cluster peer 구동됨.
현재 모든 노드에서 cluster peer 3개씩 떠있음.
음? 아무리 x$instance 때려도 3개에서 더이상 안늘어남.
모든 노드를 확인해야하는 쿼리 수행 select * from x$cluster_connection;
그래도 3개에서 안늘어남. 나를 제외한 모든 멤버의 수 만큼만 필요한걸까?

G1N1의 세션을 하나 추가해보자 (DA)
select server_process,program from x$session@local where program = 'gsql'
gSQL> \\

SERVER_PROCESS PROGRAM
-------------- -------
5114 gsql
5292 gsql

2 rows selected.

이 세션에서 x$instance 보니깐
나머지 노드 g2n1, g2n2, g1n2에서 cluster peer 뜸.
● 해당 세션이 접속한 멤버를 제외한 모든 멤버에게 하나씩 붙음.
● 해당 세션의 접속이 끊어지면(\q), cluster peer 제거 됨.

이제 알았으니, 계속 진행.

구동 가능한 cluster peer의 최대개수는 CSERVER 프로퍼티와 상관있나?
세션들을 g1n1로만 붙였음. 나머지 노드에서 1개씩 cluster peer 증가 됨.
10개까지 추가 된 상태에서 하나 더 세션 붙어보자!!!!!
결과는 11개까지 붙어짐;
한번더! 12개까지 붙는데?
일단 계쏙 붙여봄. 17개까지 붙는다;

현재 상황 보고하자면 
gsql을 DA로 여러개 붙였고, 세션 붙은 만큼 계속 cluster peer 생김..
\q을 통해 gsql 나가면(세션 팅구면) 해당 cluster peer 제거됨을 확인.

select server_process, program, connection from x$session@local where program = 'gsql'
gSQL> \\

SERVER_PROCESS PROGRAM CONNECTION
-------------- ------- ----------
6173 gsql DA
5553 gsql DA
5692 gsql DA
5734 gsql DA
5775 gsql DA
5823 gsql DA
5863 gsql DA
5904 gsql DA
5968 gsql DA
6023 gsql DA
6073 gsql DA
6215 gsql DA
6255 gsql DA
6303 gsql DA
6304 gsql DA

15 rows selected.

TCP로 붙는것에 대한 제한이 있는건가?

gsqlnet으로 붙어보자. (g1n1에 붙음) cluster peer 계속 생성 됨.
계속 붙여보자. 계속 붙음. 노드정보도 잘 읽음.
G1N1
gSQL> select server_process, program, connection from x$session@local where program like 'gsql%';

SERVER_PROCESS PROGRAM CONNECTION
-------------- ----------- ----------
6173 gsql DA
5553 gsql DA
5692 gsql DA
5734 gsql DA
5775 gsql DA
5823 gsql DA
5863 gsql DA
5904 gsql DA
5968 gsql DA
6023 gsql DA
6073 gsql DA
6215 gsql DA
6255 gsql DA
6303 gsql DA
6304 gsql DA
6698 gsqlnet.exe TCP
6696 gsqlnet.exe TCP
6667 gsqlnet.exe TCP

18 rows selected.

G1N2, G2N1, G2N2 (2개는 g1n1을 제외한 나머지 노드)
gSQL> select count(*) from x$session@local where program = 'cluster peer';

COUNT(*)
--------
20

1 row selected.


위 내용으로 알게된것은 (아직 확신한다고 말하긴 조심스러움)

cluster peer는, gsql/gsqlnet 세션 발생 (DA로 붙든 TCP붙든 상관 없이) 및 타 노드를 확인하는 쿼리 수행시, 해당 타 노드에 자동으로 구동 되고
서버프로퍼티 디폴트 건들지 않은 상태에서 (CSERVER=10)
cluster peer의 개수는 제한이 없는 것 같음... 20개까지 띄워봄.


    * Cluster로 구성된 DB에 유저세션이 발생한 뒤, 다른 node를 탐색하는 구문이 수행되면 cluster peer 구동 됨
    * 해당 유저세션이 종료되면 자동으로 cluster peer 종료 됨.
    * goldilocks ) cluster peer 개수를 제한하는 프로퍼티는 없다. 있을 필요도 없음. (붙을 수 있는 세션 수 만큼 알아서 증가)





+ Recent posts