4장 시스템 구조
지금은 시스템 하나에서 운영하고 있지만, 노드를 여러개 추가해서 클러스터를 구성해보쟈!
시스템 확장은 스케일업/스케일아웃
- 스케일 업은 서버의 성능을 올리는것
- 스케일 아웃은 댓수를 늘리는 것(가성비는 높음, 하지만 공간 문제도 있긴 함)
노드를 여러개 띄워보자
방법1 (하나의 도커 터미널에서 여러개 run)
방법2 (도커 터미널을 여러개 띄우자)
- 시작 > Docker QuickStart Terminal를 하나 더 실행
- $ docker exec -it elastic bash
- root@~~:/usr/share/elasticsearch# cd bin
- 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가지 쿼리 유후~