2 minute read

vocabo 아직도 쿠버네티스 통신으로 씨름중 5

skaffold를 써도 잘 안됬다. 이상한 점은, 같은 도커 이미지를 써도, docker-compose up으로 실행하면, elastic-built 이미지가 잘 실행되어 모든 서비스가 잘 동작하는데, skaffold를 이용하여 쿠버네티스에 올려서 로그를 확인해 보면, 서버에서 떠야 할 로그를 (localhost 3001 접속 대기중) 띄운다. 도대체 왜 이렇게 달라지지? 싶었는데, 찾아보니 elasticsearch를 실행하기 위해 작업 부하에서? vm-memory 관련 사이즈 설정 및 기타등등 복잡한 설정을 해줘야 한다고 되어있다. 그게 안 되어있어서 실행되다 꺼져버린건지, 아니면 docker-compose.yaml에서 다른 서비스들은 시작 명령들을 줬는데, elastic은 그것 없이도 실행됬었는데, 그게 쿠버네티스에서는 다른 동작을 하게 만든것인지 헷갈린다.

직접 쿠버네티스 설정을 다 해서 돌리게 할 지, 아니면 구글 마켓플레이스에서 간편 배포로 elasticsearch 또는 bitnami 사에서 만든 elk 스택이 있는데, 이걸 쓰면 편하긴 하지만 내가 직접 설정해보지 못하게 된다..

또는 쿠버네티스를 포기하고 도커 스웜으로 하는 방법도 있다.

  1. 어떻게든 쿠버네티스에 직접 올린다.
  2. 완성된 elk 스택에 logstash로 데이터만 올린다.
  3. 도커 스웜으로 올린다.

현재로선 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
}

오늘은 꽤 작업을 많이 했다.

  1. 기성품이긴 하나, elk 스택을 구글 클라우드에 올림.
  2. 로컬 logstash로 올린 elk에 데이터 올림.
  3. elasticsearch vm에 들어가서 jaso-analyzer를 설치함.
  4. elasticsearch vm에서 nori-analysis를 설치함.
  5. server의 elasticsearch js client 버전 6.6.0에서 7.0.1로 업그레이드함.

Comments