4장 시스템 구조

지금은 시스템 하나에서 운영하고 있지만, 노드를 여러개 추가해서 클러스터를 구성해보쟈!

시스템 확장은 스케일업/스케일아웃

  • 스케일 업은 서버의 성능을 올리는것
  • 스케일 아웃은 댓수를 늘리는 것(가성비는 높음, 하지만 공간 문제도 있긴 함)

노드를 여러개 띄워보자

방법1 (하나의 도커 터미널에서 여러개 run)

방법2 (도커 터미널을 여러개 띄우자)
  1. 시작 > Docker QuickStart Terminal를 하나 더 실행
  2. $ docker exec -it elastic bash
  3. root@~~:/usr/share/elasticsearch# cd bin
  4. root@~~:/usr/share/elasticsearch/bin#plugin --install mobz/elasticsearch-head

하면 실행 됨

head로 확인

p100

9200번 포트에 books를 추가하고 9201로 조회하겠다

어디로 들어가도 데이터를 확인할 수 있기 때문에 - 요건 복제다.(Read 성능향상)

→ 01234가 Replica 2개 씩이다.

  • 마스터노드 1개 있다.
  • 마스터노드가 아니라고 반드시 데이터노드인 것은 아니다! (p107에 이유가 있다)

p107

4.2 샤드와 복사본

인덱스와 샤드의 복사본을 셋팅할 수 있다.

4.3.1 젠디스커버리

  • ES에서 젤 중요한 부분이다!
  • 쏠라와의 차이점이다 쏠라와 ES는 둘다 주키퍼를 씀(자동 마스터 선출)
  • 근데 젠디스커버리는 ES밖에 없음
  • 멀티캐스트와 유니캐스트 방식이 있다.

    • 네트워크에서의 캐스트

      • 유니캐스트 : NIC(network interface card) (internet)
      • 멀티캐스트 : 그룹핑을 해서 class D까지만 보냄 (카톡 단톡방의 개념)
        • 라우터가 이걸 지원해야하고 뭐…. 네트워크에서는 복잡하다
      • 브로드캐스트(LAN) : 다들어, 방송
        • (젠 디스커버리의 캐스트와 네트워크의 캐스트가 같다는 건 아닙니다!!!)
    • 젠디스커버리에서 나름대로 정의 캐스트는 아래와 같다.

    • (진짜의미)멀티캐스트
      • 접근할 수 있는 모든 네트워크의 노드를 자동으로 검색하고 같은 클러스터명을 가진 노드끼리 바로 바인딩 하는 기능
    • (진짜의미)유니캐스트
      • 접근할 네트워크 주소를 지정해서 지정한 노드 사이에만 바인딩을 실행하는 방식
  • ip 확인하는 명령어

    • windows: ipconfig
    • linux: ifconfig
    • docker: docker inspect elastic | grep “IPA”

ES는 멀티캐스트보다는 유니캐스트의 사용을 권장하고 있다.

  • config/elasticsearch.yml 설정 파일에서 ~.multicase.enabled를 false로 설정하면 된다.

<실습 >

p100, 108 예제

예제4.7 9200 포트로 데이터 입력 후 9201 포트로 조회

9200으로 PUT

9210에서 GET

[예제4.13] magazines 인덱스의 샤드와 복사본 설정

원래 샤드와 복사본 상태

p142

5.2.11 search_type

6가지 쿼리 유후~

results matching ""

    No results matching ""