GAE/Node에서 Memcached 클러스터 (Memcached Multiple Instances)를 사용하는 포인트

개요



요 전날 bitnami를 만나서 쉽게 memcached server를 세운 것에 감동 그래서, 이번에는 그 기세 그대로 클러스터 버전의 취급 방법을 정리해 보겠습니다.

기본 runtime: nodejs에 대한 요약이지만 클라이언트 라이브러리 부분을 읽음으로써 모든 runtime에 유용 할 수 있다고 생각합니다.

클러스터 구축


  • 클러스터의 구축 자체는 모두 bitnami가 실시해주기 때문에,
    htps : // 이런. cぉd. 오, ぇ. 이 m / ぁ 응 ぇ r /에서 싶은 ls / 비 t 나미 ぁ 응 ch 빠 d / め m か ぇ d ぅ s r? hl=엔에서 흐름을 따라 포치 포치하는 것만으로 쉽게 할 수 있습니다
  • 이번에는 3 노드를 만듭니다



  • 로컬에서 액세스


  • 즉시 로컬에서 연결 테스트를 시도합니다
  • 단지 그 전에 조금 아래 준비가 필요합니다

  • primary server에 공개 키 설정


  • 글로벌 메뉴[GCE]
  • VM 인스턴스
  • primary server ( memcached-cluster-1-node-0 등 ) 선택
  • 편집
  • 0 개의 SSH 키가 있습니다 (보기 및 편집)
  • ssh-keygen 등으로 작성한 공개 키를 user 이름 bitnami로 설정
  • 저장



  • 확인


    ssh -i /path/to/key bitnami@SERVER1_EXTERNAL_IP
    

    SSH 포트 포워딩



  • 로컬에서는 포트 포워딩을 통한 연결이 권장되었습니다. 그래서 그것을 배운다
  • ssh -N 
        -L 11211:SERVER1_INTERNAL_IP:11211 
        -L 11212:SERVER2_INTERNAL_IP:11211 
        -L 11213:SERVER3_INTERNAL_IP:11211 
        -i /path/to/key bitnami@SERVER1_EXTERNAL_IP
    

    memcached-cli로 확인


  • 로컬 확인을 위해 memcached-cli을 사용합니다.

  • connect_to_server1
    memcached-cli 127.0.0.1:11211
    127.0.0.1:11211>
    

    connect_to_server2
    memcached-cli 127.0.0.1:11212
    127.0.0.1:11212>
    

    connect_to_server3
    memcached-cli 127.0.0.1:11213
    127.0.0.1:11213>
    

    GAE / Node App에서 액세스



    Memcached 클라이언트 MemJS


  • Node 응용 프로그램에서 Memcached 클라이언트로 MemJS을 사용합니다
  • 여러 인스턴스에 대한 읽기/쓰기 논리가 신경 쓰여서 조사한 결과 key 를 수치화해 server 대수로 나눈 나머지의 index 로부터 set / get 하는 서버를 산출하고 있었습니다
  • 이 논리는 노드가 여러 개 있어도 동일한 키가 중복 저장되는 것을 보지 않습니다


  • 애플리케이션에 설정


  • GAE에서 GCE의 내부 IP에 직접 연결할 수 있으므로 SSH 터널이 필요하지 않습니다.
  • 내부 IP가 VM 인스턴스 목록 화면에 표시됩니다



  • app.yaml에 Memjs가 필요한 환경 변수 설정
  • 암호는 VM 인스턴스 세부 정보의 사용자 지정 메타데이터PROVISIONER_PEER_PASSWORD에 있습니다
  • .


    app.yaml
    env_variables:
        # https://github.com/alevy/memjs
        MEMCACHIER_SERVERS: SERVER1_INTERNAL_IP,SERVER2_INTERNAL_IP,SERVER3_INTERNAL_IP
        MEMCACHIER_USERNAME: user
        MEMCACHIER_PASSWORD: ************
    

    응용 프로그램에서 실행 및 확인


  • 나머지는 라이브러리 사양에 따라 get 또는 set

  • memcached-cli로 확인용 데이터 세트


    >set test huga
    

    테스트 코드 배포



    test.ts
    import * as Memjs from 'memjs';
    
    // memcache 部分抜粋
    const client = Memjs.Client.create();
    client.get('test', (err: any, val: Buffer) => {
        console.log(err, val.toString());
    });
    
    gcloud app deploy app.yaml
    

    Logger에서 확인해보기





    할 수 있었다!ヾ(゚∀゚○)노≡ヽ(○゚∀゚)노

    삭제


    gcloud deployment-manager deployments delete DEPLOYMENT_ID ( memcached-cluster-1等 )
    



    Memcached 클러스터 (Memcached Multiple Instances)를 다루는 데 필요한 정보가 조각화되었기 때문에 하나의 기사로 요약했습니다.
    누군가의 도움이 될 수 있다면 다행입니다 m (__) m

    좋은 웹페이지 즐겨찾기