오늘은 Splunk에서 Search head 클러스터링과, Deployer를 구성해보겠다.
오늘 해 볼 구성은 위와 같다.
Splunk 인스턴스는 총 4대가 필요하고, 3대는 검색헤드, 1대는 디플로이어로 사용할 것 이다. 모두 Splunk Enterprise 인스턴스를 설치해주면 된다.
Splunk Enterprise 인스턴스를 설치하는 방법은 이 곳의 2-1 부분을 확인하면 된다.
cd $SPLUNK_HOME/splunk/etc/system/local
vi server.conf
맨 아래줄에 아래의 내용을 추가한다.
[shclustering]
pass4SymmKey = munang
shcluster_label = shcluster1
이후 Splunk 인스턴스를 재시작 해준다.
cd ../../../bin/
./splunk restart
이후에 다시 server.conf의 내용을 확인해 보면 Pass4Symmkey가 암호화 되어있는 것을 확인할 수 있다. 이 키값은 SH구성 시 사용됨으로 메모해두자.
cd ../etc/system/local
cat server.conf
아래의 명령어를 실행하기 전에 클러스터시 사용하는 포트 9000번의 방화벽 정책을 열어줘야 한다. (EC2 방화벽 정책 열어두는 방법은 검색하면 잘 나온다!)
3대의 검색헤드에 모두 접속하여 실행해야 한다. sh 클러스터를 구성하는 명령어는 다음과 같다.
cd $SPLUNK_HOME/splunk/bin
./splunk init shcluster-config -auth <username>:<password> -mgmt_uri <URI>:<management_port> -replication_port <replication_port> -replication_factor <n> -conf_deploy_fetch_url <URL>:<management_port> -secret <security_key> -shcluster_label <label>
각각의 요소를 해석하면 다음과 같다.
init shcluster-config
: sh 구성을 초기화 한다.
auth <username>:<password>
: 현재 명렁어를 실행하는 서버의 사용자와 PW를 입력
mgmt_uri <URI>:<management_port>
: 현재 명렁어를 실행하는 서버의 관리 uri를 입력한다.
replication_port <replication_port>
: sh 클러스터 멤버는 항상 서로 커뮤니케이션을 하는데, 이때 사용할 포트 번호이다. (항상 접근 가능해야 한다)
replication_factor <n>
: 현재 Splunk SH시스템에 몇개의 복제 팩터를 지정하냐에 대한 요소이다. 디폴트는 3개이다. (복제 인자에 대한 자세한 설명은 이 포스팅에 기재되어있다. )
conf_deploy_fetch_url <URL>:<management_port>
: deployer 서버의 주소와, 관리포트이다.
secret <security_key>
: 1.에서 server.conf에 설정했던 암호화된 pass4SymmKey 비밀번호이다.
shcluster_label <label>
: 1.에서 server.conf에 설정했던 shcluster_label 라벨이다.
따라서 나는 각 서버에서 명령어를 실행해줬다. 아래와 같이 말이다!
./splunk init shcluster-config -auth munang:PW -mgmt_uri https://3.12.150.176:8089 -replication_port 9000 -replication_factor 3 -conf_deploy_fetch_url https://18.218.101.187:8089 -secret pass4SymmKey -shcluster_label shcluster1
./splunk init shcluster-config -auth munang:PW -mgmt_uri https://18.117.106.133:8089 -replication_port 9000 -replication_factor 3 -conf_deploy_fetch_url https://18.218.101.187:8089 -secret pass4SymmKey -shcluster_label shcluster1
./splunk init shcluster-config -auth munang:PW -mgmt_uri https://18.219.252.172:8089 -replication_port 9000 -replication_factor 3 -conf_deploy_fetch_url https://18.218.101.187:8089 -secret pass4SymmKey -shcluster_label shcluster1
./splunk restart
서치헤드 클러스터링은, 클러스터링을 관장하는 대표서버가 클러스터링 내에 지정된다.
잡을 스케줄링하고, 효율적인 검색을 수행하도록 클러스터링을 매니징하는 서버인데, 최초에 구성할 때에 설정해주게 된다. 보통은 자동으로 설정되고, 만약 캡틴이 다운되면 다른 SH가 자동으로 선정된다.
명령어는 다음과 같다. 이 명령을 캡틴이 될 SH에서 수행해주면 된다.
./splunk bootstrap shcluster-captain -servers_list "<URI>:<management_port>,<URI>:<management_port>,..." -auth <username>:<password>
servers_list "<URI>:<management_port>,<URI>:<management_port>,..."
: SH 클러스터링으로 묶을 모든 서버를 기재한다.
-auth <username>:<password>
: 현재 명령어를 실행하는 서버의 계정 정보를 적는다.
./splunk bootstrap shcluster-captain -servers_list "https://3.12.150.176:8089,https://18.117.106.133:8089,https://18.219.252.172:8089" -auth munang:PW
./splunk show shcluster-status -auth munang:PW
클러스터가 설정된 것을 확인할 수 있다. 이제 직접 접속해서 클러스터링 설정을 확인해보자. 검색헤드 중 하나의 서버에 접속해서 설정>검색 헤드 클러스터링을 확인한다.
정상적으로 업로드 된 것을 볼 수 있다.
이로써 구성은 끝났다! 다음시간에는 이 클러스터링 구성을 Indexer와 연결하는 작업을 할 예정이다. 서버는 모두 삭제해준다!