Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- API
- Java
- 코드
- 그리디알고리즘
- 데이터베이스
- 백준
- 알고리즘
- 프레임워크
- framework
- 애자일
- 애자일프로그래밍
- 개발
- 읽기쉬운코드
- 그리디
- 애자일기법
- database
- 개발자
- spring boot
- Elasticsearch
- 엘라스틱서치
- cleancode
- 클린코드
- JPA
- 스프링
- Baekjoon
- 자바
- 코딩테스트
- Spring
- 코딩
- ES
Archives
- Today
- Total
튼튼발자 개발 성장기🏋️
Object Storage with CDN(used gcore) 본문
반응형
일단 방금 유레카를 외치면서 한 바탕 감동의 쓰나미를 즐기다 왔다.
지금 토이프로젝트를 하고 있는데 워낙 사이즈가 크다 보니 별 삽질을 다 하는거 같다ㅜㅜ
방금 내가 무엇을 했냐면 minio로 Object Storage를 구축하고 CDN을 사용했다.
Object Storage가 뭐고 CDN이 뭔지는 GPT가 나보다 더 잘 알려줄테니 넘어간다.
자!!! 오늘의 삽질을 기록한다.
1. minio 구축
일단 나의 서버는 arm architecture 32bit를 사용한다.(확인하는 방법 또한 gpt에게로..)
- minio 바이너리의 최신 버전을 받는다.
cd /usr/local/bin/
wget https://dl.min.io/server/minio/release/linux-arm/minio
- 실행 권한을 부여한다.
chmod +x minio
- minio의 전용 사용자를 생성한다.
useradd -r minio -s /sbin/nologin
- minio 바이너리의 소유권을 minio 사용자로 변경한다.
chown minio:minio ./minio
- minio가 잘 설치되었는지 확인할겸 버전 확인 해본다.
minio --version
- minio storage partition을 mount한다.
fdisk -l
mkfs.ext4 /dev/sda1 # ext4 형식으로 format
mkdir /mnt/minio1
vi /etc/fstab
/dev/sda1 /mnt/minio1 ext4 rw 0 0 # /etc/fstab에 추가
mount -a # 마운트
- mount directory를 생성할때 주의할 점.
- minio의 경우에는 MINIO_VOLUMES 설정으로 여러 스토리지를 사용할 수 있는데 그 형식은 minio{1...n}이다.
- 따라서 나중에 스토리지를 증가시켜야할 것을 대비하여 끝에 index로 관리하는 것이 좋다.
- 마운트가 잘 되었는지 확인한다.
- 마운트가 잘 되었다면 마운트 디렉토리가 노출된다.
df -h
- 마운트된 storage의 소유권을 minio 사용자로 변경한다.
- minio의 설정파일을 생성한다.
mkdir /etc/minio
chown minio:minio /etc/minio # 소유권 변경
vi /etc/minio/minio
# /etc/minio/minio에 아래 내용 추가
MINIO_ACCESS_KEY="{your access key}"
MINIO_VOLUMES="/mnt/minio1" # 여러개일 때/mnt/minio{1...n}
MINIO_OPTS="-C /etc/minio --address 0.0.0.0:9000"
MINIO_ROOT_USER="root"
MINIO_ROOT_PASSWORD="root"
- minio 서비스 파일을 받는다.
cd /etc/systemd/system/
wget https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
- 서비스 파일을 수정한다.
vi minio.service
# 아래 내용으로 변경한다.
User=minio
Group=minio
EnvironmentFile=/etc/minio/minio
- systemd 데몬 reload (변경한 내용을 적용하기 위해서)
systemctl daemon-reload
- minio start
systemctl start minio
- minio 상태 조회
systemctl status minio
2. minio 접속
- http://{공인ip 혹은 localhost}:9000으로 접속하면 아래와 같이 minio access가 가능하다
- id와 password는 /etc/minio/minio에서 설정했던 MINIO_ROOT_USER와 MINIO_ROOT_PASSWORD를 사용하면 로그인이 가능하다.
3. 내가 겪은 이슈
사실 너무나도 많은 이슈가 있어서 하나하나 기억하기가 쉽지 않다..(기록을 하면서 할 걸 그랬다...) 오죽하면 하루종일 OS를 수십번 갈아 엎었다.
내가 히고 싶었던 것은 multi storage 지원인데, 물리적인 스토리지가 하나밖에 없어서 OS를 올리고 남은 메모리를 repartitioning을 통해 마운트하여 사용하고 싶었다. 이 부분에서 얼마나 많은 오류를 만났는지 모른다.
상세한 오류 메시지는 기억이 안나지만, 내용은 아래와 같다.
- 그 공간은 이미 커널에서 사용하고 있어!
- 스토리지의 경로가 invalid해!
- 재부팅이 필요해! (재부팅을 했는데 부팅이 안되는 충격을 가져다 주었다.)
- 이 부분은 파티션을 나눌때 부팅파일이 깨진 것으로 추측이된다.
지금 이 글을 쓰면서도 수 많은 이슈를 해결해놓고 기록을 하지 못한다는 사실에 분노하고있다.......
4. CDN 연결
이제 Object Storage를 구축했으니 이 스토리지에 연결할 CDN을 사용해보자.
일단 CDN도 AWS cloudfront가 있지만 나는 "gcore"를 사용했다. (사실 남들 다 할줄 아는거 말고 인터넷에도 정보가 없는 걸 하고싶었다.)
- cdn을 사용하기 위해서는 도메인이 필요하다.
- 도메인을 얻었다면 gcore에 접속하여 "Try for free"를 클릭하자
- 새롭게 열린 탭에서 오른쪽 상단에 "create CDN resource"를 클릭하자.
- Accelerate and protect only static assets를 선택하고 다음으로 넘어간다.
- Origin Source에 좀전에 얻은 도메인을 입력한다
- Use default port 체크를 해제하고 minio의 port를 입력한다.
- Custom domain에는 내가 cdn을 통해 접근할 url을 입력해준다.
- cl-gl99715be3.gcdn.co를 복사해서 도메인을 얻은 곳에서 CNAME을 도메인에 맵핑시켜줘야한다.
- CNAME을 나의 도메인으로 연결한다.
- 나머지는 계속 다음으로 넘어가기만 하면 된다.
- minio에 버킷을 생성하고 필요시 디렉토리를 생성한 다음에 이미지를 업로드하면 아래와같이 cdn으로부터 이미지를 가지고올 수 있다.
참고문헌
- https://gcore.com/docs/cdn/cdn-resource-options/general/create-and-set-a-custom-domain-for-the-content-delivery-via-cdn
- https://min.io/docs/minio/linux/index.html
반응형
'기타 > 기타' 카테고리의 다른 글
대칭키 암호화 vs 공개키 암호화 (1) | 2024.08.29 |
---|---|
시니어 개발자가 되려고 하는 과정 (1) | 2024.02.15 |
주니어 개발자에게 이직이란? (0) | 2022.01.28 |
개발자의 학습 태도 (0) | 2020.10.05 |
주니어 개발자의 직장 생활 (0) | 2020.07.12 |