반응형

namespace는 서버의 영역으로 client api를 제공하지 않으므로 서버에 직접 환경설정을 해야함

  • 기본 설정방법
    • 터미널에서 /etc/aerospike/aerospike.conf 설정파일을 연다.
    • 파일 내용 하단부에  aerospike 설치시 기본으로 생성되는  namespace 항목을  참고 하여 원하는 이름의 namespace로 작성하면 된다
# Aerospike database configuration file. 
 
# This stanza must come first. 
service { 
        user root 
        group root 
        paxos-single-replica-limit 1 # Number of nodes where the replica count is automatically reduced to 1. 
        pidfile /var/run/aerospike/asd.pid 
#       service-threads 2 # cpu x 5 in 4.7  
#       transaction-queues 2 # obsolete in 4.7  
#       transaction-threads-per-queue 4 # obsolete in 4.7 
        proto-fd-max 15000 
} 
.
.
.
.

namespace test { 
        replication-factor 2 
        memory-size 1G 
        default-ttl 30d # 5 days, use 0 to never expire/evict. 
        nsup-period 120 
        #       storage-engine memory 
 
        # To use file storage backing, comment out the line above and use the 
        # following lines instead. 
 
        storage-engine device { 
                file /opt/aerospike/data/test.dat 
                filesize 4G 
                data-in-memory true # Store data in memory in addition to file. 
        } 
} 

namespace 신규namespace {
      설정값
      .
      .
      .
}
  • Docker container를 사용하는 경우 설정방법
    • https://docs.aerospike.com/operations/configure (aerospike 공식사이트) 에 config example이 있으나 세부 설정에 대한 값은 본인이 커스텀해야함
    • aerospike docker container 실행한 후 내부로 접속하여 기본설정 방법에 나와있는 파일내용을 복사해둠
    • aerospike container 내부로 접속
    • /etc/aerospike/aerospike.conf 파일을 열어 내용 복사
    • container에서 나온 후 기존 aerospike container 정지 후 삭제
    • aerospike container를 실행할 서버 내부에 새로운 config 파일 생성 - /opt/aerospike/etc/aerospike.conf 파일을 만들고 내부에 b.iv에서 복사한 내용을 넣은 후 추가하려는 namespace 설정을 작성한다.
    • 새로운 aerospike conatiner 실행할때 /opt/aerospike/etc/aerospike.conf  파일을 바라보도록 하면 됨
# aerospike docker container 실행
# aerospike:ce는 커뮤니티 버전, ee는 엔터프라이즈 버전
$ docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike:ce-[version]

# aerospike container 내부로 접속
$ docker exec -it aerospike bash

# conf 파일 열어서 복사
$ vi /etc/aerospike/aerospike.conf

# 실행했던 docker container 정지
$ docker stop aerospike

# 정지한 container 삭제
$ docker rm {container id}

# 새로운 conf 작성 - 복사해둔 내용 넣고 namespace추가
$ vi /opt/aerospike/etc/aerospike.conf 

# 외부 conf파일을 바라보는 새로운 aerospike container 실행
$ docker run -d -v /opt/aerospike/etc/:/opt/aerospike/etc/ --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server --config-file /opt/aerospike/etc/aerospike.conf
  • docker를 사용하는 경우 외부에 파일을 두지 않으면 컨테이너를 정지하고 재실행시 설정값이 기본설정값으로 복구되는 이슈가 있어 복잡하지만 위에 방법과 같이 처리함.
728x90
반응형
반응형

Docker를 사용하여 필요한 container를 실행할때 종종 특정 문제로 자동 종료되는 문제가 발생한다.

 

어제 설정하던 aerospike에서 발생한 문제로 예를 들어보겠다.

$ sudo docker run -d -v /opt/aerospike/etc/:/opt/aerospike/etc/ --name aerospike -p 3000-3002:3000-3002 aerospike:ce-5.7.0.11 --config-file /opt/aerospike/etc/aerospike.conf
c9f7eb263df0b0d0854df535f6dcb70251b3730696629618a4802b8e047daec9
$ sudo docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED      STATUS      PORTS                                                                                                                                                 NAMES
3efd82760b2c   rabbitmq:management   "docker-entrypoint.s…"   3 days ago   Up 3 days   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp   rabbitmq

위 내용은 서버 콘솔에 접속하여 aerospike container를 실행하고 실행된 컨테이너를 확인한 것이다.

aerospike가 리스트에 없는것을 확인할 수 있는데 그런경우 -a 옵션을 주면 모든 컨테이너 리스트를 확인 할 수 있다.

$ sudo docker ps -a
CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS                      PORTS                                                                                                                                                 NAMES
c9f7eb263df0   aerospike:ce-5.7.0.11       "/usr/bin/dumb-init …"   13 seconds ago   Exited (1) 12 seconds ago                                                                                                                                                         aerospike
3efd82760b2c   rabbitmq:management         "docker-entrypoint.s…"   3 days ago       Up 3 days                   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp   rabbitmq
f7f362458893   aerospike/amc               "/opt/amc/amc ' -con…"   7 days ago       Exited (2) 5 days ago                                                                                                                                                             aerospike-console
78a6c3b31e60   aerospike/aerospike-tools   "wrapper aql -h"         7 days ago       Exited (255) 7 days ago                                                                                                                                                           dazzling_wright

결과의 첫번째 항목이 실행하고자 하였던 container로 상태를 보면 Exited (1) 로 되어 있는것을 확인할 수 있다.

Exited (1)코드를 찾아보면 응용프로그램 오류로 인한 실패라고 한다. (다른 의견도 있으나 위의 경우와 가장 근접한 답인듯 함)

코드의 의미는 알았으나 정확한 원인은 알 수가 없다.

이런 경우 docker logs {container id} 명령어를 사용하면 컨테이너를 실행하면 발생한 오류 로그를 볼 수가 있다.

$ sudo docker logs c9f7eb263df0
link eth0 state up
link eth0 state up in 0
Mar 21 2022 09:20:06 GMT: CRITICAL (config): (cfg.c:2093) couldn't open configuration file /opt/aerospike/etc/aerospike.conf: No such file or directory
Mar 21 2022 09:20:06 GMT: WARNING (as): (signal.c:166) SIGINT received, shutting down Aerospike Community Edition build 5.7.0.11 os debian10
Mar 21 2022 09:20:06 GMT: WARNING (as): (signal.c:169) startup was not complete, exiting immediately

configuration 파일에 문제가 있어 실행이 되지 않았음을 알 수 있다.

내용을 수정하고 다시 시작하니 문제 없이 잘 동작 하였다.

 

 

728x90
반응형

+ Recent posts