반응형
1. Elastic Search 설치
1-1. 다운로드
rpm 혹은 tar로 설치한다.
tar - xvf elasticsearch-5.4.0.tar.gz
1-2. 옵션 설정
$ cd ElasticSearch/config
$ vi elastic search.yml
1) 클러스터 명
cluster.name: EUNBI (ex)
클러스터의 이름.
노드들을 공유할 때 같은 이름을 사용하면 된다.
2) 노드
-마스터 노드의 경우-
node.name: "master" (""<-필요, 버전에 따라 안써도 될 수도 있음)
node.master: true
node.data: true (false도 가능, 마스터 노드가 데이터 노드이기도 할 때 true)
-데이터(슬레이브) 노드의 경우-
node.name: "slave1"
node.master: false
node.data: true
3) 네트워크
network.host: 127.0.0.1 (default, 각자의 서버이름을 적기)
http.port: 9200 (default)
http.cors.enabled: true
http.cors.allow-origin: "*"
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: server01
#
# Set a custom port for HTTP:
#
http.port: 9200
transport.tcp.port: 9300
1-4) Discovery
**Master 경우**
# --------------------------------- Discovery ----------------------------------
#
# Elasticsearch nodes will find each other via unicast, by default.
#
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
discovery.zen.ping.unicast.hosts: ["server02", "server03"]
#
# Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):
#
discovery.zen.minimum_master_nodes: 1
#
**Slave 경우**
# --------------------------------- Discovery ----------------------------------
#
# Elasticsearch nodes will find each other via unicast, by default.
#
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
discovery.zen.ping.unicast.hosts: ["server01:9300"]
ps. 버젼에 따라 호스트를 타 주소로 입력하면, 메모리의 문제가 생긴다
localhost일 때는 warning이엇는데
타 주소는 에러이다. 에러 메세지를 따라 유저에 리미트를 sudo 권한으로 늘리면 됌
1-3. 추가설정
- 방화벽 설정 : port, 혹은 방화벽 내리기
1-4. 실행
./bin/elasticsearch
위 커맨드로 바로 실행 가능
- 추가옵션
-d : 데몬으로 실행
-p 파일명 : pid를 파일명에 저장
이를 토대로 shell script 작성가능
[start.sh]
./bin/elasticsearch -d -p es.pid
[stop.sh]
kill $(cat es.pid)
ps. slave 실행 시 [elasticsearch] failed to send join request to master. same id but is a different node instance
위와 비슷한 오류가 뜰 때,
data 폴더의 내용을 삭제해주면 된다.
데이터 노드 복사로 아이디가 겹쳐서 나는 에러
1-5. 설치 확인
curl -XGET http://[마스터 서버 명]:9200/
curl -XGET http://server01:9200/
*이름과 클러스터명 확인
curl -XGET http://server01:9200/ _cluster/hearlth?pretty
*데이터 노드와 총 노드개수 확인
2. FileBeat 설치
2-1. 다운로드
file비트 뿐만이 아니라
패킷 등 여러 비트가 존재
elasticsearch 와 호환되는 버전을 받아야 한다. 고 한다.
tar -xvf filebeat-5.4.0-linux-x86_64.tar.gz
2-2. 환경설정
fileBeat에는 full과 default 두가지 설정파일이 존재한다.
디폴트에 추가하자
1) prospectors
input type과 path를 설정한다.
패스는 기본이 /var/log/*.log 이다
exclude file 등에 특정 파일을 제외할 수 있다. 사용은 REGEX
권한이 없어서 접근하지 못하는 파일들 (ex)yum)을 제외시키자.
2) output
아웃풋은 기본이 엘라스틱서치
로그스태시나 카프카도 이용 가능하다.
템플릿 관련해서 직접 지정해 줄 수 있다.
template.name: "filebeat"
temlplate.path: "filebeat.template.json"
template.overwrite: true
덮어쓰기는 일단 트루를 줫는데 보통은 false로 준다고들 한다.
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["192.168.0.4:9200"]
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false
# Optional protocol and basic auth credentials.
#protocol: "https"
#username: "elastic"
#password: "changeme"
#------------------------------kafka output-----------------------------------
#
#output.kafka:
# hosts: ["192.168.0.4:9092"]
# topic: EUNBI
#max_message_bytes: 1000000
2-3. Template 설정
인덱스에 관한 템플릿이다. 인덱스가 새로 생성될 때의 규칙을 템플릿으로 지정한 것이다.
filebeat에 내장되어잇는 기본 템플릿을 이용하였으나, 새롭게 작성하여도 된다.
1) 기존 템플릿 삭제
curl -XDELETE '192.168.0.4 :9200/_template/template_1(템플릿 이름)?pretty'
2) shard 개수 추가
settings 부분에 number of shards 추가.
index.number_of_shards 로 해도 된다. 뒤에 컴마(,) 잊지 말기
"index_patterns": ["filebeat-*"],
"settings": {
"number_of_shards": 3
},
3) 템플릿 재 업로드
curl -XPUT 192.168.0.4:9200/_template/filebeat(템플릿 이름)?pretty -d@filebeat.template.json
4) fileBeat.yml
template.overwrite : false
true 시에는 직접 지정 가능하다고 알고 있음
2-4. 실행
filebeat -e -c filebeat.yml
3. Kafka 설치
3-1. 다운로드
0.10의 scala 2.11버전을 설치햇다.
tar -xvf kafka_2.11-0.10.2.1.tgz.gz
3-2. 환경설정
1) Zookeeper : config/zookeeper.properties
- Kafka는 zookeeper를 따로 실행할 수 있다.
dataDir=/home/centos/eunbi/apps/zookeeper/data <<zookeeper dir
# the port at which the clients will connect
clientPort=2181
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=0
server.1=server01:15000:16000
server.2=server02:15000:16000
server.3=server03:15000:16000
2) KafkaServer : config/server.properties
1) Server Basics
############################# Server Basics #############################
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1 << 서버마다 다른 아이디를 줘야 함
2) Zookeeper
############################# Zookeeper #############################
# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=server01:2181,server02:2181,server03:2181
# Timeout in ms for connecting to zookeeper
zookeeper.connection.timeout.ms=6000
3-3. 실행
1) 실행하기 : bin/kafka-server-start.sh config/server.properties
2) 실행 확인
[centos@server01 bin]$ jps
17904 NameNode
5729 QuorumPeerMain
18257 ResourceManager
19650 HRegionServer
20306 Kafka
20374 Jps
13959 Elasticsearch
18027 DataNode
18540 NodeManager
19502 HMaster
3) 실행 확인 - 2
- topic 생성 : ./kafka-topics.sh --create --zookeeper [ zookeeper 서버명 ] --replication-factor 1 --partitions 1 --topic [ Topic 명 ]
[centos@server01 bin]$ ./kafka-topics.sh --create --zookeeper server01:2181 --replication-factor 1 --partitions 1 --topic kafka-test
Created topic "kafka-test".
-topic list 확인
[centos@server01 bin]$ ./kafka-topics.sh --list --zookeeper server01
kafka-test
-zookeeper에서 확인
[centos@server03 apps]$ ./zookeeper/bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 7] ls /brokers/topics
[kafka-test]
4) 실행 확인 -3
- 메세지 작성
[centos@server01 bin]$ ./kafka-console-producer.sh --broker-list server01:9092 --topic kafka-test
지금시간은 오전 10시 41분 입니다.
this is Message
-메세지 확인
[centos@server02 bin]$ ./kafka-console-consumer.sh --bootstrap-server server01:9092 --topic kafka-test --from-beginning --zookeeper server01
지금시간은 1오전 10시 41분 입니다.
this is Message
* 추가 참조 사이트
반응형
'Develope > Programming' 카테고리의 다른 글
[JAVA] cvs 파일로 Export하기 (+180307 charset (1) | 2017.11.09 |
---|---|
[JAVA] 특정 날짜의 리스트 가져오기 (1) | 2017.11.06 |
ElasticSearch - 2. Index Rolling (1) | 2017.10.31 |
[JAVA] 함수 주기적으로 돌리기 (스케쥴링) (0) | 2017.10.31 |
ElasticSearch - 1. Unsigned Shards관련 테스트 (0) | 2017.10.31 |