2019-05-13
vocabo 아직도 쿠버네티스 통신으로 씨름중 5
skaffold를 써도 잘 안됬다. 이상한 점은, 같은 도커 이미지를 써도, docker-compose up
으로 실행하면, elastic-built 이미지가 잘 실행되어 모든 서비스가 잘 동작하는데, skaffold를 이용하여 쿠버네티스에 올려서 로그를 확인해 보면, 서버에서 떠야 할 로그를 (localhost 3001 접속 대기중) 띄운다. 도대체 왜 이렇게 달라지지? 싶었는데, 찾아보니 elasticsearch를 실행하기 위해 작업 부하에서? vm-memory 관련 사이즈 설정 및 기타등등 복잡한 설정을 해줘야 한다고 되어있다. 그게 안 되어있어서 실행되다 꺼져버린건지, 아니면 docker-compose.yaml
에서 다른 서비스들은 시작 명령들을 줬는데, elastic은 그것 없이도 실행됬었는데, 그게 쿠버네티스에서는 다른 동작을 하게 만든것인지 헷갈린다.
직접 쿠버네티스 설정을 다 해서 돌리게 할 지, 아니면 구글 마켓플레이스에서 간편 배포로 elasticsearch 또는 bitnami 사에서 만든 elk 스택이 있는데, 이걸 쓰면 편하긴 하지만 내가 직접 설정해보지 못하게 된다..
또는 쿠버네티스를 포기하고 도커 스웜으로 하는 방법도 있다.
- 어떻게든 쿠버네티스에 직접 올린다.
- 완성된 elk 스택에 logstash로 데이터만 올린다.
- 도커 스웜으로 올린다.
현재로선 2번 방법이 가장 빠를 것으로 보인다. 3번은 한 번 시도해볼만 한데 또 분명 무슨 문제가 생길 것이고, 저걸 클라우드에 올리는게 상당히 일일 것이다.
https://www.slideshare.net/awskorea/docker-swarm-on-aws 이 자료는 괜찮긴 한데, 이걸 보면 설정 파일 없이 하나하나 설정해서 하는데 이건 또 나름대로 문제가 될 수 있다 (아니면 docker-compose로 호환 되는것일수도).
https://docs.docker.com/docker-for-aws/
그리고 지금 pc2긴 한데, 분명 kengdic 단어리스트가 있던거로 아는데, 여기엔 없다.
…
pc1에도 없다. 아무래도 용량이 너무 커서 없앤거 같은데, 어디에 뒀지? 아예 없애지는 않았을 텐데.
이전 프로젝트명인 memorybook 폴더에 있었다.
드디어!! logstash로 배포된 elasticsearch에 데이터를 넣었다.
그런데, 데이터를 다 넣었고 credential문제도 해결했는데도 (url을 <username>:<password>@<host>:<port>/elasticsearch
이렇게 하니깐 되었다. 실제 사용: user:(Password)@(elkIP):80/elasticsearch
로 했음. 이상하게 지정 안 했을때의 elasticsearch 기본 포트인 9200으로는 안 되고, 브라우저로는 되길래 브라우저의 포트인 80을 쓰게 했더니 연결이 되었다.)
suggest 관련 무슨 검색 에러가 떴는데, 생각해보니 kengdic스키마를 제대로 만들지 않고 그냥 logstash로 밀어넣기만 했다. 제대로 작동하려면 jaso-tokenizer 및 nori-analyzer를 설치하여 스키마를 먼저 만들어주어야 한다.
lugin-7.0.0.0-plugin.zip
-> Downloading https://s3.ap-northeast-2.amazonaws.com/file.epikem.com/jaso-analyzer-plugin-7.0.0.0-plugin.zip
[=================================================] 100%
Exception in thread "main" java.lang.IllegalArgumentException: Plugin [jaso-analyzer] was built for Elasticsearch version 7.0.0 but version 7.0.1 is running
at org.elasticsearch.plugins.PluginsService.verifyCompatibility(PluginsService.java:346)
at org.elasticsearch.plugins.InstallPluginCommand.loadPluginInfo(InstallPluginCommand.java:718)
at org.elasticsearch.plugins.InstallPluginCommand.installPlugin(InstallPluginCommand.java:793)
at org.elasticsearch.plugins.InstallPluginCommand.install(InstallPluginCommand.java:776)
at org.elasticsearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:231)
at org.elasticsearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:216)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
at org.elasticsearch.cli.MultiCommand.execute(MultiCommand.java:77)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
at org.elasticsearch.cli.Command.main(Command.java:90)
at org.elasticsearch.plugins.PluginCli.main(PluginCli.java:47)
Administrator@elk-1-vm:~$ sudo elasticsearch-plugin install https://s3.ap-northeast-2.amazonaws.com/file.epikem.com/jaso-analyzer-plugin-7.0.1.0-plugin.zip
-> Downloading https://s3.ap-northeast-2.amazonaws.com/file.epikem.com/jaso-analyzer-plugin-7.0.1.0-plugin.zip
[=================================================] 100%
-> Installed jaso-analyzer
Administrator@elk-1-vm:~$
플러그인을 다 설치했는데도 아래와 같은 에러가 뜬다. 전에도 떴었던 거 같기도 한데..
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Unknown tokenizer type [nori_tokenizer] for [nori-user-dict]"
}
],
"type": "illegal_argument_exception",
"reason": "Unknown tokenizer type [nori_tokenizer] for [nori-user-dict]"
},
"status": 400
}
오늘은 꽤 작업을 많이 했다.
- 기성품이긴 하나, elk 스택을 구글 클라우드에 올림.
- 로컬 logstash로 올린 elk에 데이터 올림.
- elasticsearch vm에 들어가서 jaso-analyzer를 설치함.
- elasticsearch vm에서 nori-analysis를 설치함.
- server의 elasticsearch js client 버전 6.6.0에서 7.0.1로 업그레이드함.
Comments