쉽다길래 별 생각 안했는데.. 설정할게 많네 -_-



ERROR. max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

ERROR. memory locking requested for elasticsearch process but memory is not locked


위 두 에러가 발생하면 아래 내용을 참고하여 수정하면 된다.


클러스터를 구성하기 위해서는 리소스 사용에 대한 제한을 풀어줘야 한다. 


아래 command로 현재 리소스 제한 사항을 볼 수 있으며, 

ulimit -Sa


vi /etc/security/limits.conf


로 들어가서 아래와 같이 설정한다.


es-user hard memlock unlimited          >> 하드 세팅으로 메모리 락 제한 없도록 설정

es-user soft memlock unlimited           >> 소프트 세팅으로 메모리 락 제한 없도록 설정

es-user hard nofile 65536                   >> 하드 세팅으로 65536번의 파일을 열어 볼 수 있게 설정

es-user soft nofile 65536                    >> 소프트 세팅으로 65536번의 파일을 열어 볼 수 있게 설정

es-user hard nproc 65536                   >> 하드 세팅으로 65536번의 프로시저를 실행 할 수 있게 설정

es-user soft nproc 65536                    >> 소프트 세팅으로 65536번의 프로시저를 실행 할 수 있게 설정

(es-user는 Elasticsearch를 실행할 유저를 말한다. 사용중인 계정으로 수정하여 설정할 것!)

모든 설정이 끝나면 다시 시스템을 리붓한다. 



ERROR. max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]


하나의 프로세스가 가질 수 있는 메모리 맵 영역의 최대 수를 말하는데 아래와 같이 수정이 가능함.


sysctl -w vm.max_map_count=262144

(root 권한으로 실행)

재실행 없이 바로 적용됨.


ERROR. failed to send join request to master ... 


network.bind_host, network.publish_host, network.host 세 가지 설정을 적절히 했는지 잘 살펴 볼 것!



config 파일에서 수정해야 할 내용들


config/jvm.options


메모리 관련된 설정인데 역할에 따라 다르다. 찾아보면 다양한 정보가 나오는데 아직 경험하지 못해서 이렇다 저렇다 적기가 뭐 하네. 일단 아래 두 가지를 적절히 수정. 해당 서버의 리소스에 맞춰 수정이 필요. 


-Xms 와 -Xmx 를 master는 2g , data는 4g로 수정해 봄.


-------------------------------------------------------------------------------------------------------------------


config/elasticsearch.yml


cluster.name: es-cluster             << 적절한 이름으로 설정. 클러스터마다 고유해야 함.


node.name: node-master           << 적절한 이름으로 설정. 노드마다 고유해야 함.

node.master : true                    << 마스터 노드인 경우 true 아니면 false

node.data: false                       << 데이터 전용 노드인 경우 true 아니면 false


bootstrap.memory_lock: true      <<  bootstrap 검사. 5버전부터 추가 된 듯. 주요 설정들이 잘못된 경우 상용 모드에서는 서버가 실행되지 않고, 개발 모드에서는 경고 메세지 출력 처리. memory_lock은 jvm 메모리의 swapping lock 여부를 확인한다. 


network.bind_host: 0.0.0.0         
network.publish_host: 1.1.1.1      << 설치된 서버의 IP
network.host: 1.1.1.1                

transport.tcp.compress: true       << node간 통신하는 데이터의 압축 여부를 설정.
transport.tcp.port: 9300             << node간 통신에 사용하는 포트

http.port: 9200                        << http를 통한 elasticsearch API 지원 노드의 port를 설정한다.

(각 포트는 별도 설정하지 않았는데 기본값을 사용한다고 가정한다. 필요하다면 http.port , transport.tcp.port 옵션을 수정하여 사용할 것!)
discovery.zen.minimum_master_nodes: 1  << 실제 서비스 환경에서는 최소 2대 이상의 마스터를 운영해야 한다.
discovery.zen.ping.unicast.hosts: ["1.1.1.1:9300"]     << node 간 연결을 위해 unicast로 master 노드를 지정하자. 마스터로 등록된 서버의 모든 ip를 기록해야 한다. 기본 포트인 9300을 사용한다면 굳이 기록할 필요는 없고, 포트를 변경한 경우만 이와 같이 기록하며 된다.

-------------------------------------------------------------------------------------------------------------------

이상 Elasticsearch Cluster 를 구성할 때 발생하는 에러 유형과 해결책, 그리고 config 설정 정보를 추가로 정리해 보았다.


iis 서버에서는 mime에 정의되지 않은 확장자에는 접근할 수 없다.



iis 관리자에서 설정하고자 하는 사이트를 선택한다. 그리고 메뉴 중 MIME 형식을 클릭하여 관리창을 연다.




그리고 위처럼 추가하려는 확장자를 등록하고, 적절한 형식을 지정한다. 


이제 해당 주소로 접근하면 원하는 파일을 다운 받을 수 있다.




기본 id는 "pi", pw는 "raspberry".

--------------------------------

sd에 라즈비안 설치 시 기본 비번은 변경하는게 좋으며, 

초기 설정에서 놓쳤다면 이후 "raspi-config"를 입력하면 다시 설정할 수 있다.


보드에 전원 스위치가 없다.

--------------------------------

전원이 연결되면 바로 가동되는데, 종료시 전원을 바로 내리면 주변장치에 문제가 발생할 수 있다. ( sd카드와 같은.. )

" shutdown -h now " 커멘트를 통해 꼭 모든 디바이스가 unmount 된 이후 종료되도록 해줘야 한다.

재가동하려면 전원선을 뺐다가 다시 연결하니 되네. 이거 몰라서 한참 찾음.


SD 카드는 가능한 큰걸로

---------------------------------

http://www.raspberrypi.org/downloads 에서 os 이미지를 다운받아 http://sourceforge.net/projects/win32diskimager/ 유틸리티를 이용해 SD에 구워 사용하게 되며, 보통 이 sd를 통해 계속 운영하게 된다. 

GPIO용이 아닌 개발 device로 사용하려면 여러가지 라이브러리를 사용해야 하기 때문에 가능한 큰 용량의 sd로 시작하는게 좋다.


전원만 연결하면 원격으로 바로 사용할 수 있게 세팅하자.

---------------------------------

이를 위해 무선랜 설치, 자동 로그인 두가지 설정이 필요하다. 

아래 과정시 관리자 권한을 필요로 하기 때문에 sudo를 입력하거나 혹은 sudo su를 입력 후 아래 절차를 진행하자.


무선랜 설치

------------------------------------

공간활용을 위해 가능한 무선랜을 추천한다. 난 처음 구매시 netis 제품이 동봉되어 도착했다.

무선랜은 아래와 같은 순서로 설치하면 된다. (x-windows에서 설정은 간단하니 패스, 콘솔에서 설정하는 방법을 다룬다.)


1. 설치된 공유기에 접속 설정

nano /etc/wpa_supplicant/wpa_supplicant.conf 를 실행하면 아래와 같은 화면이 뜬다.



아래와 같이 입력하자. ssid와 psk는 각자 공유기의 설정에 따른 값을 입력해야 한다.



nano editor는 vi보다는 좀 더 사용하기 쉽다. 


문자열을 찾을 때는 ctrl+w 입력 후 찾고자 하는 문자를 입력하면 된다. 

ctrl+x를 입력하면 수정된 경우, overwrite할지 물어보고 Y를 입력하면 저장하고 종료된다.


2. nic(network interface card) 설정


nano /etc/network/interfaces 를 입력하고 해당 정보를 아래와 같이 수정한다.



이제 설정은 모두 마무리 되었다. 아래와 같이 무선 인터넷을 재시작해보자.


ifdown wlan0

ifup wlan0


만약 에러가 발생한다면 해당 메세지에 따라 수정이 필요할 수 있다. 잘 안된다면 전체 오류 메세지를 댓글로 달아주면 확인 후 답변 할지도 ^^;;;


재시작되면 ifconfig 명령으로 할당된 ip를 확인할 수 있다. 이제 자동 로그인 되도록 해보자.


2. 자동 로그인 설정


nano /etc/inittab 를 입력해 시스템 기동시 처리되는 내용이 기록된 파일을 연다.


각 런레벨별로 실행하는 정보 라인을 찾아보자. 


1:2345:respawn:/sbin/getty --noclear 38400 tty1  => 이와 유사한 라인을 찾아볼 수 있다. ctrl+w로 noclear를 검색해서 찾아보자.


이를 주석 처리하고 (문장 제일 앞에 #을 붙이면 된다.), 아래 라인을 입력하자.


1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 > /dev/tty1 2>&1


위 문장의 상세한 설명은 생략한다. -0-a

이제 시스템을 재시작해보면 자동으로 로그인 되는 모습을 볼 수 있다.


'개발/경험 > RaspberryPi' 카테고리의 다른 글

버튼으로 LED, Sound 처리하기  (0) 2015.05.01
blink 샘플 실행  (0) 2015.04.29
기본적이지만 중요 정보 몇가지  (0) 2015.04.18
드디어 왔다!!  (0) 2015.04.17

아파치(apache2.4.x)를 오랜만에 건드리는데 왜케 많이 변한거지 --;


아래는 gitweb과 연동하는 과정에서 perl 설정을 추가한 부분.


Alias /gitweb /usr/share/testWeb


<IfModule mod_perl.c>

<Directory /usr/share/testWeb>

   Options +ExecCGI

   AddHandler perl-script .cgi .pl

   PerlResponseHandler ModPerl::Registry

   PerlOptions +ParseHeaders

   AllowOverride None

    Require all granted

    AuthType Basic

    AuthName "Git Access"

    Require valid-user

    AuthUserFile /etc/apache2/gitweb-htpasswd

    SetEnv GITWEB_CONFIG /etc/gitweb.conf

</Directory>

</IfModule>


추가로 gitweb.conf 파일 내용도 업데이트.

our $projectroot = "/home/git/repositories/";


# directory to use for temp files

our $git_temp = "/tmp";


# target of the home link on top of all pages

#$home_link = $my_uri || "/";


# html text to include at home page

#$home_text = "indextext.html";


# file with project list; by default, simply scan the projectroot dir.

our $projects_list = "/home/git/projects.list";


# stylesheet to use

#@stylesheets = ("static/gitweb.css");


# javascript code for gitweb

#$javascript = "static/gitweb.js";


# logo to use

#$logo = "static/git-logo.png";


# the 'favicon'

#$favicon = "static/git-favicon.png";


# git-diff-tree(1) options to use for generated patches

#@diff_opts = ("-M");

@diff_opts = ();


$feature{'blame'}{'default'} = [1];



+ Recent posts