1. docker로 구축하는 이유가 있나요?
- redash 공식 홈페이지에서 초보자를 위해 도커로 시스템을 구축해주는 스크립트를 추천합니다.
- 그리고 기본적인 설정을 잡아주기 때문에 DB연결 등의 세부적인 작업이 필요 없습니다.
- 또한, redash 백엔드를 도커이미지로 유지하고 DB등은 직접 구축한 DB로도 변경할 수 있습니다.
- 그리고 제일 좋은 것은 구동 환경을 다 잡아둔 도커 이미지를 쓰기 때문에 환경 설정 시간이 거의 없습니다.
2. 환경 설명과 도커를 활용한 실습 준비
(1) 실습을 위한 기본 설명
- 도커를 기본적으로는 사용하실 수 있어야 합니다(도커 사용법도 따로 정리해서 추가하겠습니다).
- 편의를 위해서 우분투에서 systemctl 관련 세팅이 잘 되어있는 이미지를 사용합니다. 일반 우분투 이미지를 사용하면 현재 연습을 위한 환경 구축에서 도커가 잘 실행되지 않는 경우가 있었습니다.
- 결론적으로 컨테이너 내부에 다시 컨테이너들을 구축하는 경우입니다.
- 물론 자체적으로 우분투에서 구축하셔도 상관없습니다. 다만 윈도우 유저나 우분투 18.04에서의 구축을 추천하는 Redash 홈페이지 안내문에 따라 위의 방식을 택하였으니 참고해주세요.
(2) 우분투 18.04 컨테이너 생성
- 모든 작업은 윈도우즈 cmd, 리눅스나 맥의 terminal 기반으로 설명합니다.
docker pull jrei/systemd-ubuntu:18.04
docker run -d -p 5000:5000 -p 80:80 -p 443:443 --name redash_test --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro jrei/systemd-ubuntu:18.04
- 생성한 컨테이너의 이름은 redash_test, 로컬호스트의 5000, 80, 443번 포트와 컨테이너의 5000, 80, 443번 포트를 포트포워딩 했습니다.
- Redash 서버가 기본적으로 5000번포트로 띄워지고, 우리에게 익숙한 포트 번호가 없는 도메인으로 접속하기 위한 80번 포트와 SSL 적용을 위한 443 포트 또한 포트포워딩했습니다.
- 80번 포트와 443 포트의 사용은 아직 이해하지 않으셔도 되고, 추후 Nginx를 설정 설명에서 이해하시면 됩니다.
(1) 터미널에서 컨테이너 상태 확인
docker ps -a
(2) 결과가 아래와 같아야 정상 작동하는 것
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7dcfad7ca41 jrei/systemd-ubuntu:18.04 "/lib/systemd/systemd" 5 minutes ago Up 5 minutes 0.0.0.0:5000->5000/tcp redash_test
(3) 수월한 설치를 위해 sudo 권한으로 컨테이너에 진입
docker exec -itu 0 redash_test bash
- 위의 과정 중에 docker exec -itu 0 rehasd_test bash의 -it는 익숙하지만 -itu 0가 익숙하지 않을 수 있습니다.
- u 0는 sudo 권한을 컨테이너 내에서 사용할 수 있게 하는 설정입니다.
- Redash 설치 스크립트에 sudo 권한을 요구하는 과정이 많으니 편의를 위해 꼭 sudo 권한을 사용할 수 있도록 설정합시다.
3. 설치 세부 과정
(1) Redash 스크립트 설치와 설치에 필요한 환경 설정
- 필수로 필요한 우분투 패키지를 설치하고 설치 스크립트를 가져옵니다.
- 기존에 도커와 도커컴포즈가 설치된 시스템에서 설치를 해보시는 경우 도커 버전이 변경될 수 있으니 주의하세요!
(1) 필요한 우분투 패키지 설치
apt-get update
apt-get install sudo
apt-get install git
apt-get install vim
(2) 설치 스크립트를 가져옵니다
git clone https://github.com/getredash/setup.git
cd setup
- (선택사항)도커 설치가 필요 없는 분은 setup.sh파일의 마지막 부분의 install_docker 부분을 삭제하시면 됩니다.
(2) 설치 진행과 발생할 수 있는 오류 설명
- 설치 파일의 권한을 변경하고 설치 스크립트를 실행합니다.
sudo chmod +x setup.sh
sudo ./setup.sh
- 일반적으로 첫번째로 볼 수 있는 에러는 아래와 같습니다.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 664 100 664 0 0 1019 0 --:--:-- --:--:-- --:--:-- 1018
100 11.2M 100 11.2M 0 0 2939k 0 0:00:03 0:00:03 --:--:-- 5165k
--2022-04-22 06:13:04-- https://raw.githubusercontent.com/getredash/setup/master/data/docker-compose.yml
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.111.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1076 (1.1K) [text/plain]
Saving to: 'docker-compose.yml'
docker-compose.yml 100%[=================================================>] 1.05K --.-KB/s in 0s
2022-04-22 06:13:04 (64.1 MB/s) - 'docker-compose.yml' saved [1076/1076]
ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?
If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
- 에러메세지 설명대로 도커가 실행되지 않은 경우에 발생합니다.
- 도커를 실행하고 다시 setup 스크립트를 실행합니다.
(1) docker가 켜져있는지 확인
service --status-all
(2) 실행되지 않았다면 아래처럼 [-] 표시가 있음
[ - ] apparmor
[ - ] cron
[ + ] dbus
[ - ] docker
[ - ] hwclock.sh
[ - ] procps
[ + ] unattended-upgrades
(3) 도커를 실행
service docker start
(4) service --status-all로 다시 확인하고 실행되었다면 [+]로 표시됨
[ - ] apparmor
[ - ] cron
[ + ] dbus
[ + ] docker
[ - ] hwclock.sh
[ - ] procps
[ + ] unattended-upgrades
(5) 설치 스크립트를 다시 실행
sudo ./setup.sh
- 완전히 설치가 됐다면 아래와 같은 메세지를 확인할 수 있습니다.
redash_postgres_1 is up-to-date
redash_redis_1 is up-to-date
Creating redash_server_1 ... done
Creating redash_scheduler_1 ... done
Creating redash_scheduled_worker_1 ... done
Creating redash_adhoc_worker_1 ... done
Creating redash_nginx_1 ... done
- 가끔씩 이 과정에서 time out error라는 문구와 함께 컨테이너가 일부만 생성되거나 하는 문제가 발생하는데, docker-compose의 HTTP 테스트시간이 짧게 설정되어 있어서 발생하는 문제입니다.
- 아래와 같은 과정으로 일반적으로 해결할 수 있습니다.
(1) 깨끗하게 설치하기 위해 설치되다가 멈춘 컨테이너를 삭제
docker-compose down
(2) 도커 컴포즈의 HTTP 테스트 시간을 200초 까지 늘려서 다시 생성
sudo COMPOSE_HTTP_TIMEOUT=200 docker-compose up -d
- 도커 컴포즈 설정 파일이 있는 폴더로 이동하여 정상적으로 Redash 시스템이 구축되었는지 확인합니다.
- docker-compose.yml파일에 docker-compose.yml.1와 같이 숫자가 붙은 파일들이 많이 있을텐데 반복된 설치 스크립트 실행으로 생긴 것이니 docker-compose.yml을 제외한 yml 파일은 삭제하시면 됩니다.
(1) Redash 시스템 구성과 관련된 파일들이 있는 디렉토리로 이동
cd /opt/redash
(2) 도커 컴포즈에서 Redash 시스템 구성이 잘 되었는지 확인
docker-compose ps -a
(3) 아래와 같이 나오면 성공
Name Command State Ports
------------------------------------------------------------------------------------------------
redash_adhoc_worker_1 /app/bin/docker-entrypoint ... Up 5000/tcp
redash_nginx_1 nginx -g daemon off; Up 443/tcp, 0.0.0.0:80->80/tcp
redash_postgres_1 docker-entrypoint.sh postgres Up 5432/tcp
redash_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
redash_scheduled_worker_1 /app/bin/docker-entrypoint ... Up 5000/tcp
redash_scheduler_1 /app/bin/docker-entrypoint ... Up 5000/tcp
redash_server_1 /app/bin/docker-entrypoint ... Up 0.0.0.0:5000->5000/tcp
(4) 에러 발생으로 인한 반복 과정에서 생성된 docker-compose.yml파일이 있는지 확인
ls
(5) 디렉토리에서 docker-compose.yml.1을 확인함
docker-compose.yml docker-compose.yml.1 env postgres-data
(6) docker-compose.yml.1을 완전히 삭제
rm -f docker-compose.yml.1
3. 기본적인 설치를 완료했다!
- 웹브라우저에서 내 컴퓨터의 80번이나 5000번 포트로 접속해서 아래와 같은 화면이 뜨면 시스템 구축에 성공한 것이다.
- localhost:80나 localhost:5000을 주소창에 입력하여 접속해보자!
- 80번 포트는 Nginx를 통해 5000번 포트로 다시 접근하는 경로이고, 5000번 포트는 플라스크 서버로 띄운 Redash에 직접 접근하는 것이다.
- 일반적인 접근은 80번 포트로 접근해서 도메인 주소로만 접근하는 방식입니다.
4. 다음 글 예고
- 다음 글에서는 Redash의 기본적인 세팅 방법과 사용 예시를 살펴보도록 하겠습니다.
'데이터 시스템 구축 정보 공유 > redash' 카테고리의 다른 글
6. redash에 도메인 주소로만 접속을 해보자. (0) | 2022.06.21 |
---|---|
5. Redash 시각화와 대시보드의 세부 사용 예시 (0) | 2022.06.19 |
4. redash의 기본적인 세팅과 사용법을 알아보자 (0) | 2022.05.28 |
2. Redash의 구조 (0) | 2022.04.04 |
1. 오픈소스 대시보드 Redash란? (2) | 2022.03.27 |