본문 바로가기
DATABASE/Ignite

[Ignite][Linux] 2. Setting - Docker를 활용한 Ignite 세팅

by DANEW 2024. 2. 20.

Docker 옵션들을 통해 Ignite 세팅

우리는 아래의 지난 글에서 도커의 컨테이너에 Ignite를 설치하였다.

[Ignite][Linux] 1. Setup - Docker를 활용한 Ignite 설치

 

LocalHost에 도커의 내부 컨테이너에 실행되고 있는 Ignite와 연결 될 기본적인 세팅하는 방법에 대해 소개해본다.

 

우리가 기존에 실행하고 있던 컨테이너에 대해서 삭제를 하고 새롭게 컨테이너를 올렸다 삭제해가며 세팅을 진행 해보자.

이 과정은 아래의 내용에 포함하지 않고 매번 컨테이너를 생성할 때마다 진행하지만 생략하겠다.

-- 실행 중인 컨테이너 확인
docker ps
-- 컨테이너 중지
docker stop [container id]
-- 컨테이너 삭제
docker rm [container id]

Data Directory 분리 및 Localhost Directory 로 마운트

기본적으로 컨테이너를 생성하면 해당 컨테이너 내부에 데이터가 저장이된다고 생각하면된다.

근데 Ignite라는 데이터베이스를 사용하는데, 데이터의 저장이 내부 컨테이너에 되어있다가 컨테이가 삭제되면 데이터도 함께 삭제가 되는 구조가 된다.

 

컨테이너는 프로세스를 격리된 공간에서 실행 하는 것 뿐, 데이터는 따로 Localhost에 저장할 수 있게 Docker Volume을 구성해 보도록한다.

 

Localhost Directory 생성

우선 Localhost에서 마운트하여 사용 될 디렉토리를 하나 생성하도록 한다.

필자는 기본적으로 시스템과 데이터의 디렉토리를 나누어 두기에 /data라는 디렉토리를 기본으로 가지고 있다.

해당 디렉토리에 /data/ignite의 디렉토리를 생성하여 진행해보자.

mkdir /data/ignite

 

데이터 디렉토리 마운트 하며 컨테이너 실행

도커에서 컨테이너를 생성하며 실행 할 때 디렉토리를 마운트하며 실행 할 수 있다.

기본적으로 Ignite 의 데이터 디렉토리도 바꾸는 명령어 실행도 함께 넣어주어, 해당 디렉토리들을 마운트 하여 진행한다.

docker run \
-d \
-v /data/ignite:/data \
-e IGNITE_WORK_DIR=/data \
d85c41ad33de

-v 명령어를 통해 localhost의 /data/ignite 컨테이너의 /data 디렉토리와 마운트 한다. 

-e 명령어를 통해 IGNITE_WORK_DIR 옵션을 실행하여 Ignite 의 작업 디렉토리를 /data로 바꿔주며, 이 과정에서 디렉토리가 없으면 자동으로 생성된다.

Localhost의 /data/ignite 디렉토리에 각각 데이터 디렉토리가 생성 된 것을 확인 할 수 있다.

 

Config.xml 파일 마운트

디렉토리 뿐만 아니라 파일도 마운트가 가능하다.

 

기본적으로는 우리가 설치한 컨테이너의 {$IGNITE_HOME}/config 디렉토리에 위치하고 있다.

아무런 옵션을 적용하지 않을 경우 해당 디렉토리의 default-config.xml 파일을 기본값으로 실행 하고 있다.

 

config.xml 파일은 Ignite 의 시스템 설정파일로 여러가지 옵션을 적용할 수 있다.

이와 같은 config,xml파일도 마운트하여 사용하여, Localhost에서 옵션도 설정하여 컨테이너를 실행 할 수 있게 된다.

 

config.xml 파일 생성

우선 config.xml파일을 마운트하기 앞서 해당 파일을 생성해야 할 것이다.

default-config.xml 파일을 참고해서 한번 만들어 보도록 하겠다.

default-config.xml 파일은 이렇게 쓰여있다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--
        Alter configuration below as needed.
    -->
    <bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration"/>
</beans>

 

해당 파일을 Localhost에 config.xml 파일로 생성해보도록 하겠다. 위치는 적당히 /data/ignite/config로 하겠다.

해당 디렉토리를 만들고 vi를 통해 파일을 생성하였다.

반응형

Localhost의 config.xml 파일 마운트

작업디렉토리를 마운트 할 때와 같은 방법으로 진행된다.

docker run \
-d \
-v /data/ignite/config/config.xml:/config.xml \
-e IGNITE_URI=/config.xml \
d85c41ad33de

 

config.xml 파일을 마운트하고 IGNITE_URI 명령어를 통해 설정한 config.xml 파일을 기반으로 ignite를 실행한다.

 

Ignite 옵션을 설정 할 수 있는 config.xml 파일의 설정에 대해서는 다음 포스팅에서 진행하도록 하겠다.

 

원격지에서 접속 설정

우리는 Ignite를 당연히 원격지에서 사용하기 위해서 설정하고 있다.

원격지 클라이언트에서 사용하기 위해서는 Port 바인딩을 하여, 접근 할 수 있는 포트를 설정해주어야 한다. Ignite의 기본 포트는 10800을 사용하고 있다.

 

외부 접속을 위해 10800 포트의 방화벽을 열도록하겠다.

firewall-cmd --add-port=10800/tcp --permanent 
firewall-cmd --reload 
firewall-cmd --list-ports

 

Localhost가 아닌 필자의 작업 pc의 클라이언트 프로그램 DBeaver 를 통해 접근해보도록 하겠다.

 

Port binding 하기

포트 바인딩의 옵션은 역시나 도커 컨테이너를 생성할때 옵션으로 적용할 수 있다.

docker run \
-d \
-p 10800:10800 \
d85c41ad33de

-p 명령어를 통해 localhost의 포트와 container의 포트를 연결 해준다.

이제 외부에서 localhost에 10800의 포트로 접근 할 경우 container내부의 10800포트로 연결하여 Ignite에 접근 할 수 있게 된다.

docker ps 명령어를 통해 컨테이너의 상태를 확인하면

10800-> 10800 이라고 이전과 다른 부분을 확인 할 수 있다.

 

한번 DBeaver를 통해 접속해보자.

DATABASE를 Ignite로 선택 후 Connection 옵션에 도커 컨테이너가 올라가있는 host 서버의 IP와 바인딩 한 포트번호 10800을 입력한다.

Ignite의 경우 보안 설정을 하지 않는 경우 UserID/Password 없이 접근이 가능하다.

 

Host 명령어로 설정

위의 포트 바인딩의 경우는 Bridge라는 Docker Network 개념을 이용하여 접근한 것이다.

우리는 Localhost에 다른 서비스를 올리지않고 Ignite만을 위해 사용 할 것으로 Host 라는 개념의 네트워크를 이용하여

Localhost의 모든 네트워크 정보를 사용 하도록 하겠다.

자세한 것은 추후 Docker에 대해 더 공부하여 도커 포스팅에서 하도록 하겠다.

docker run \
-d \
--net=host \
d85c41ad33de

이렇게 설정함으로써 Localhost의 모든 네트워크 정보를 연결하여 가져다 쓸 수 있게된다.

port 부분이 비어있는 것을 확인 할 수 있다.

 

Comment

이제 기본적인 Docker Container 를 활용하여 Ignite 설치와 세팅에 대해서 한번쯤 알아본 것 같다.

다음 포스팅부터는 제일 중요한 Ignite 의 Config.xml 파일에 대한 옵션에 대해서 하나씩 알아보도록 하겠다.

 

Ignite의 최종 목적은 Cluster 적용을하여 운영하는것으로 Cluster운영과 Object들에 대한 설명까지 쭉 이어가 보도록 하겠다.

반응형