스케일 아웃 방법 (join)

ROMA의 스케일 아웃 방법입니다.
서비스가 커지거나 일시적으로 부하가 오를 것으로 예상되는 경우 등 instance(서버)를 추가함으로써 메모리에 보관할 수 있는 데이터량을 늘리거나 1instance(서버)당 부하를 줄일 수 있다. 다


조건 (초기 상태)



루비 버전 : v2.1
ROMA 버전 : v1.2.0
server: 2대 + 1대
storage type : TokyoCabinet

ROMA의 구축 방법에 대해서는 이하 참조


  • 여러 대에서 클러스터를 구성하는 방법 : ぃ tp // 코 m / 히로아키 이와세 / ms / 286d768d9161f56f8b81
  • 스토리지에 TokyoCabinet을 사용하는 방법 : ぃ tp // 코 m / 히로아키 이와세 / ms / 366526 에 f9

  • 스케일 아웃



    흐름



    현재 1instance*2server로 운용하고 있는 상태입니다만, 부하가 올라왔기 때문에 또 하나의 ROMA 서버를 클러스터에 추가하는 것으로 부하를 분산해, 클러스터 전체의 메모리량도 증가시킵니다

    구성



    현재 instance


  • 192.168.33.11_10001
  • 192.168.33.12_10001

  • 추가할 instance


  • 192.168.33.13_20001

  • 명령



    기존 클러스터에 instance를 추가하려면 시작 명령인 romad에 join 옵션을 사용하여 실행합니다.
    $ romad ${address} -p ${port} -j ${target_instance}
    
  • ${address} is the ip or hostname of new instance
  • ${port} is the port number of new instance
  • ${target_instance} is the one of the current instance within cluster
  • format is\${address}_${port}


  • 절차



    1. 현재 구성 확인



    192.168.33.11에서
    $ telnet 192.168.33.11 10001
    > stat node
      stats.run_receive_a_vnode {}
      routing.nodes.length 2
      routing.nodes ["192.168.33.11_10001", "192.168.33.12_10001"]
      .
      .
      .
      END
    
    > stat run_join
      stats.run_join false
    

    2. join



    192.168.33.13에서
    $ romad 192.168.33.13 -p 20001 --config ./config.rb -d -j 192.168.33.11_10001
    
  • ${target_instance}는 192.168.33.11_10001
  • -d--config 옵션도 사용

  • 3. 확인



    192.168.33.13에서
    $ telnet 192.168.33.13 20001
    > stat node
      stats.run_receive_a_vnode {}
      routing.nodes.length 3  #=>2から3へ増えています
      routing.nodes ["192.168.33.11_10001", "192.168.33.12_10001", "192.168.33.13_20001"] #=>192.168.33.13_20001が追加されています
      .
      .
      .
      END
    
    > stat run_join
      stats.run_join true # joinプロセスが起動中だということを表します
    
    > stat primary|secondary
      routing.primary 7
      routing.secondary1 12
    
  • join 프로세스가 시작되면 vnode가 기존 instance에서 새로 추가 된 instance로 점진적으로 분배됩니다.
  • 현재 담당 vnode는 stat primary|secondary에서 확인할 수 있습니다
  • routing.primaryrouting.secondary의 수는 join 처리가 진행됨에 따라 증가합니다.
  • join 프로세스가 종료되면 stats.run_join가 false로 돌아갑니다.
  • 데이터 양과 서버 사양에 따라 조인 프로세스에 걸리는 시간이 달라집니다


  • 4. 종료 확인



    192.168.33.13에서
    > stat run_join
      stats.run_join false
    
    > stat primary|secondary
      routing.primary 170 #=>数は多少前後します
      routing.secondary1 161 #=>数は多少前後します
    

    GUI로 확인



    조인 전










    join중





    조인 후










    참조 URL



    ROMA Operation of ROMA (Adding the new ROMA process): htp://로마-kvs. 오 rg / ぇ r rn / 오페라 치온. html # ぢ st - mp ぃ k

    좋은 웹페이지 즐겨찾기