[Solr] Solr 맛보기 첫번째

정말 쉽다 따라만 하면 하루만에 OK

* 설치 환경 구성 가이드
http://wiki.apache.org/solr/SolrCloud

* 해결해야 할 문제 :
1. 색인 & 설정파일 백업(DB에 저장한다면 좋을 텐데 말이지…)
2. 용량산정
3. 관리포인트 :
Tomcat에 올려서 관리하면 catalina.sh에 있는
-DzkHost : 주키퍼 서버가 바뀌면 일일히 변경해야 한다

ㅇ Add new cluster 명령어 패턴

This command starts up a Solr server and bootstraps a new solr cluster.

cd example

java -Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=myconf -DzkRun -DnumShards=2 -jar start.jar

Then start the second server, pointing it at the cluster:

ㅇ 방금전에 시작된 서버에 내장되어 있는 Zookeeper에 서버 한대를 추가한다.(두번째 서버임으로 자동적으로 shard가 2개 만들어 진다.

cd example2

java -Djetty.port=7574 -DzkHost=localhost:9983 -jar start.jar

ㅇ 각기 다른 shard의 설정을 복사하는 것으로 보인다. xml 설정과 파일이 무엇이 다른지 비교해볼만 할 것 같다.
cp -r example exampleB
cp -r example2 example2B


Then start the two new servers on different ports, each in its own window:

ㅇ 다른 서버를 추가시킨다. (Example2를 실행한 것과 별 다를 바가 없어 보인다) 그러나 같은 설정파일을 사용하기 때문에 replica server가 추가된다.
같은 설정파일을 사용하게 되면 replica 추가 패턴

cd exampleB

java -Djetty.port=8900 -DzkHost=localhost:9983 -jar start.jar
cd example2B

java -Djetty.port=7500 -DzkHost=localhost:9983 -jar start.jar


cloud를 관리하기 위한 명령어 패턴을 살펴보면 다음과 같다.
1. zookeeper 서버 구성
2. zookeeper에 새로운 cloud 추가
3. 새로운 cloud에 shard Node 추가
4. 각 shard마다 replica 설정

검색 서버 인프라를 구축하기 위한 관리툴을 잠깐 설계 해보았다.

Cloud {
   Zookeeper[] zookeepers;
   Shard[] shards;

def createCloud(zookeeperInfo, numOfShards) :

def addShard()

def remove(Node node) :
zookeeper.removeNode(node)

}

Shard {
Cloud cloudOfparticipating

Replica[] replicas // 설정이 모두 똑같다

def addReplica() :
// shard에 복제본을 추가한다.

def removeReplica(String replicaKey):
// shard에 복제본을 제거한다?
// 관리는 Zookeeper에서 한다.
cloudOfparticipating.remove(replicas[replicaKey])

}

더 필요한 것을 생각해보니

Collection import와 collection을 parsing하기 위한 schema.xml 관리가 필수인듯 하다.
schema.xml을 관리하는 DB, collection을 관리하는 파일시스템이 필요하다.

schema.xml관리는 MongoDB, collection은 HDFS가 적절할까? 아님 NAS가 좋을까?

아무리 collection이 많다고는 하지만 HDFS를 사용하면 성능이 떨어지지 않을까 걱정된다.

Solr와 HDFS 연동 부분을 공부 해봐야 답이 나올 것 같다.

 

Advertisements

[Jenkins] build broken, old class file conflict

Symptom :

Error
Jenkins detected that you appear to be running more than one instance of Jenkins that share the same home directory ‘/home1/irteam/.jenkins’. This greatly confuses Jenkins and you will likely experience strange behaviors, so please correct the situation.
This Jenkins: 4530791 contextPath=”/” at 52372@localhost
Other Jenkins: 14340252 contextPath=”/jenkins” at 52372@localhost

Ignore this problem and keep using Jenkins anyway

Solution :

http://harikrish.wordpress.com/2010/06/15/my-hudson-instance-occasionally-tells-me-that-i-have-multiple-instances-running/

server.xml에 있는
Context의 path를 root(“/”)에서 “/jenkins”로 변경.