SAP HANA, expresss edition Docker 실행하기

Docker를 이용해서 좀 더 쉽게 HANA, express edition을 실행해 보자.

Posted by Yeongseon Choe on March 14, 2020 · 7 mins read

SAP HANA, express edition Docker 실행하기

들어가며…

SAP HANA, express edition은 무료로 SAP HANA를 사용해 볼 수 있습니다. SAP 개발자 센터 를 통해서 바이너리를 다운 받아 설치하는 방법과 도커 허브에서 도커파일을 다운 받아 실행 하는 방법이 있습니다.

이 글에서는 도커 허브에서 HANA, express edition을 받아 실행하는 방법에 대해서 설명하겠습니다.

1. Docker login

먼저 docker login 을 실행합니다.

$ sudo docker login


2. SAP HANA express edition 도커 이미지 파일 받기

  1. Docker Hub 에서 HANA 검색

  1. SAP HANA, express edition (database services) 선택
  2. Setup Instruction 버튼 클릭
  3. 도커 이미지 주소 복사 후 docker pull 실행
$ sudo docker pull store/saplabs/hanaexpress:2.00.045.00.20200121.1 


  1. doker pull이 완료되면 docker images로 도커 이미지 확인
$ sudo docker images
REPOSITORY                                TAG                      IMAGE ID            CREATED             SIZE
store/saplabs/hanaexpress                 2.00.045.00.20200121.1   aeb6e1b699dc        7 weeks ago         3.58GB


3. sysctl.conf 파일 수정

fs.file-max=20000000
fs.aio-max-nr=262144
vm.memory_failure_early_kill=1
vm.max_map_count=135217728
net.ipv4.ip_local_port_range=40000 60999


4. SAP HANA, express edition 도커에서 사용하기 위한 디렉토리 생성

$ mkdir -p /data/<directory_name>
$ chown <hxeadm userID or name>:<sapsys groupID or name> /data/<directory_name>


예)

$ mkdir -p /data/express_edition
$ chown 12000:79 /data/express_edition


5. 비밀번호 설정하기

HANA 컨테이너를 실행하기 위해서는 비밀번호를 미리 설정해야 합니다. 도커 실행시에 비밀번호를 지정해주어야 하기 때문입니다.

비밀번호는 json 파일에 저장해야 합니다. 이 파일은 로컬에 위치하거나 URL로 접근 가능한 곳에 위치해야 합니다.

  1. 로컬에 json파일 생성하는 방법

/data 디렉토리 밑에 password.json 을 생성합니다.

{
“master_password: “<password>}
또는
{
“system_user_password” :<password>”,
“default_tenant_system_user_password” :<second_password>}


(예)

{
“master_password: “HXEHana1”
}


Docker Container의 기본 유저가 생성된 파일에 접근 할 수 있도록, 접근 권한을 추가합니다.

sudo chmod 600 /data/<directory_name>/<file_name>.json
sudo chown 12000:79 /data/<directory_name>/<file_name>.json


  1. URL로 접근가능한 json파일 생성하는 방법

password.json 파일 생성 후 URL로 접근 가능한 곳에 파일을 올립니다.

(예) 깃헙에 업로드

https://raw.githubusercontent.com/yeongseon/temp/master/password.json

6. 도커 실행하기

다음 커맨드로 HANA express edition 도커를 실행한다.

$ sudo docker run -p 39013:39013 -p 39017:39017 -p 39041-39045:39041-39045 -p 1128-1129:1128-1129 -p 59013-59014:59013-59014 -v /data/<directory_name>:/hana/mounts \
--ulimit nofile=1048576:1048576 \
--sysctl kernel.shmmax=1073741824 \
--sysctl net.ipv4.ip_local_port_range='40000 60999' \
--sysctl kernel.shmmni=524288 \
--sysctl kernel.shmall=8388608 \
--name <container_name> \
store/saplabs/hanaexpress:2.00.040.00.20190729.1 \
--passwords-url <file://<path_to_json_file> OR http/https://<url_to_json_file>> \
--agree-to-sap-license


예)

$ sudo docker run -p 39013:39013 -p 39017:39017 -p 39041-39045:39041-39045 -p 1128-1129:1128-1129 -p 59013-59014:59013-59014 -v /data/express_edition:/hana/mounts \
—ulimit nofile=1048576:1048576 \
—sysctl kernel.shmmax=1073741824 \
—sysctl net.ipv4.ip_local_port_range='40000 60999’ \
—sysctl kernel.shmmni=524288 \
—sysctl kernel.shmall=8388608 \
--name express_edition \
store/saplabs/hanaexpress:2.00.045.00.20200121.1 \
—passwords-url https://raw.githubusercontent.com/yeongseon/temp/master/password.json \
—agree-to-sap-license


Noe: docker run 이 중간에 실패 했을 경우에는 Docker container를 삭제 후에 다시 실행 해야합니다.

$ sudo docker rm <container_name>


위의 커맨드를 실행 후 잠시 후 (몇분 정도 소요) 다음 메시지가 나타납니다.

Ready at: Sun Mar 15 01:42:45 UTC 2020
Startup finished!


7. Docker Container 확인

  1. HANA, express edition 컨테이너에 접속

docker exec로 도커 컨테이너의 bash를 실행합니다.

$ sudo docker exec -it <container_name> bash


(예)

$ sudo docker exec -it express_edition bash


  1. HANA 정보 확인

whoami 커맨드로 현재 로그인 사용자 정보를 확인합니다.

$ whoami


(예)

hxeadm@b510f6dc1f06:/usr/sap/HXE/HDB90> whoami
hxeadm
hxeadm로 로그인 되어 있는 것을 알 수 있습니다. 다음으로 HDB info 커맨드를 통해서 HANA 상태를 확인할 수 있습니다.
$ HDB info


(예)

hxeadm@b510f6dc1f06:/usr/sap/HXE/HDB90HDB info
USER          PID     PPID  %CPU        VSZ        RSS COMMAND
hxeadm       2017        0   0.0      21056       4044 bash
hxeadm       2223     2017  20.0      20252       3292  \_ /bin/sh /usr/sap/HXE/HDB90/HDB info
hxeadm       2254     2223   0.0      43528       3300      \_ ps fx -U hxeadm -o user:8,pid:8,ppid:8
hxeadm          1        0   0.0      21032       4004 /bin/bash /run_hana --passwords-url https://ra
hxeadm        808        1   0.0     359840      52104 hdbdaemon
hxeadm        814      808  29.7    3546352    2647512  \_ hdbnameserver
hxeadm       1152      808   1.3     430364     117124  \_ hdbcompileserver
hxeadm       1153      808   1.4     697036     147472  \_ hdbpreprocessor
hxeadm       1196      808   1.6    1392112     374588  \_ hdbwebdispatcher
hxeadm       1304      808  35.2    4077492    3133340  \_ hdbindexserver -port 39040
hxeadm        941        1   0.0     611836      47556 hdbrsutil  --start --port 39001 --volume 1 --v
hxeadm       1395        1   0.0     611832      47560 hdbrsutil  --start --port 39040 --volume 2 --v


  1. System Database 로그인

hdbsql 을 이용하여 System Database에 로그인 합니다.

hdbsql -I 90 -d <system_database> -u SYSTEM -p <password>


(예)

hxeadm@b510f6dc1f06:/usr/sap/HXE/HDB90> hdbsql -i 90 -d HXE -u SYSTEM -p HXEHana1

Welcome to the SAP HANA Database interactive terminal.

Type:  \h for help with commands
       \q to quit

hdbsql HXE=>


마치며…

이상으로 SAP HANA, expression edition을 Docker 실행하는 방법에 대해서 살펴보았습니다.

참고자료

https://developers.sap.com/tutorials/hxe-ua-install-using-docker.html