minio

minio는 오브젝트 스토리지로 기존 클라우드에서 사용되는 S3와 동일한 호환성을 제공하는 프로젝트이다.

오픈소스로 공개되어 개발되고 있는 minio는 간단한 도커 환경 배포부터 실 서비스를 위한 프러덕션 환경에도 대응이 가능하다고 한다.

https://github.com/minio/minio

 

GitHub - minio/minio: MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license.

MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license. - minio/minio

github.com

 

오브젝트 스토리지를 사용하기 위해 공식 문서을 읽어보던중 간단하게 도커로 배포가 가능하여 시도해보았다.

 

배포 및 사용을 꽤하면서 알게된 사실이지만 도커로써의 노드 확장을 사실상 불가능인거 같다. 

과거에 지원햇지만 지금은 지원하지 않는거 같구 추가적인 디스크 확장이나, 디스크 추가 등과 같은 작업은 minio의 구조때문인지 불가능하고 확장을 위해선 노드를 추가하여 다중노드다중디스크 시스템으로 결국 가야한다. 다만 이럴경우 리눅스 배포나 쿠버네티스 배포를 사용하여 배포를 진행해야 추가적인 확장이 가능한거같다.

 

minio docker 배포

아무튼 minio를 간단하게 도커를 활용하여 서비스를 올리기 위해 디스크 4장을 준비하였다.

8TB 4장을  공식문서에서 권장하는데로 xfs으로 디스크 포맷을 진행 후 도커컴포즈를 작성하였다.

 

다음은 사용할 docer-compose.yml 구성이다

version: '3'
services:
  minio:
    image: quay.io/minio/minio:latest
    command: server /data{1...4} --console-address ":9001"
    container_name: minio
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: 12341234!
      CONSOLE_DEV_MODE: "on"
    restart: always
    #shm_size: '1gb'  # default는 64MB
    ports:
      - "9002:9000"    # minio 서비스 포트
      - "9001:9001"    # minio 콘솔 포트
    volumes: 
     - /mnt/bay0/minio_disk1:/data1  # 버킷 데이터 저장소 위치
      - /mnt/bay1/minio_disk2:/data2  # hdd2
      - /mnt/bay2/minio_disk3:/data3  # hdd3
      - /mnt/bay3/minio_disk4:/data4  # hdd4
      - ./minio:/root/.minio # 컨테이너 실행 데이터 위치

 

 MINIO_ROOT_USER: admin
 MINIO_ROOT_PASSWORD: 12341234!

 

부분에 원하는 루트 아이디 및 비밀번호 로 설정하여 생성 및 저장 후 

docker compose up -d 

를 통해 배포 실행

웹페이지(9001) 에 접속하여 세팅을 진행한다.

 

별도 인증서를 적용하여 https를 사용하고자 할경우  다음과 같은 인증서 파일 생성이 필요하다.

  • https://github.com/minio/certgen/releases/ 설치 후 인증서 생성=>(certgen -host "127.0.0.1, localhost")
  • 생성된 두개의 파일을 minio의 실행데이터폴더의 cert 폴더에 저장(구현한 서버 환경에서는 /home/keti/docker/minio/minio/certs/ 경로로 두개파일 저장)
  • 파일 저장후  도커 컨테이너 다시 시작 및 적용 
  • 적용 후 https로 접속

버킷 생성

좌측 메뉴에서 Buckets 클릭, 우측 상단 Create Bucket 클릭하여 버킷 정보 입력 창으로 이동

 

 

버킷 이름과 추가 설정 후 Create Bucket을 클릭하여 버킷 생성

 

 

 

사용자생성

  • 좌측 메뉴에서 Identity -> Users를 클릭하여 우측 상단 Create User 클릭
  • User 이름과 비밀번호, 기타 권한 옵션을 설정 후 유저 생성
     
     
    접근키 생성(코드에서 버킷에 저장된 파일 다운로드/업로드, minio간의 동기화에 사용됨)
    • 좌측 메뉴에서 Access Keys 클릭 후, 우측 상단 Ceate access key클릭
    • 자동으로 생성된 Access Key와 Secret Key를 메모장에 복사 후 저장하여 관리

 

minio 을 사용하여 기존 분석 코드등에서 보다 손쉽게 데이터 사용이 가능하다

pi-kvm을 구축한지 오래되었지만 드디어 블로그에 정리글을 작성한다.

 


PI-KVM란? 

pikvm 홈페이지

 

pi-kvm은 값비싼 장비인 ipkvm을 라즈베리파이를 사용하여 저렴하게 제작하며 웹을 통한 물리적인 컴퓨터의 제어가 가능하다.

서버와 떨어지게 되면서 구성 4port hdmi kvm스위치를 이용하여 구성하였다.

 

 

1. 필요 부품

- 라즈베리파이 4 (+  sd 카드, 어댑터)

- hdmi2csi

- 4port kvm(알리발)

- ft232 - 제품링크 (알리에서 파는 ft232는 작동하지 않는다....  정품칩을 사용하는 것으로 구매!!)

- c type 케이블 2개

- 납땜 도구

 

2. 장치 준비

4포트 PI-KVM을 만들기 위해서는 2가지의 DIY가 필요하다

2-1. 전원 및 OTG케이블 만들기

pi-kvm에서 키보드, 마우스, ISO마운트등 USB를 PC에 연결하기위한 케이블을 제작해야 한다.

알리에서 별도 젠더도 팔지만 제작하여 사용중이다.

 

 

 

 

어댑터에서는 전원 단자 케이블 만 나머지 케이블은 USB-A 수 커넥터에 USB-C 의 데이터 +,- 케이블에 연결하여 사용한다.

 

 

2-2. KVM스위치 제어 케이블 만들기

다포트  kvm을 구현하기 위해 공식문서를 보던중 발견한 알리 hdmi 4port kvm

이걸 처음 구매할떈 단순히 케이블만 연결하여 pi-kvm을 통해 제어 할수있을줄 알았다...

XH-HK4401

알리에서 구매한 4포트 kvm 스위치를 Pi-KVM에서 제어하기 위한 장치가 필요하다.

https://docs.pikvm.org/xh_hk4401/#linux-instructions
 

XH-HK4401 4-port HDMI USB KVM Switch - PiKVM Handbook

XH-HK4401 4-port HDMI USB KVM Switch This KVM is sold under many names, and comes in two versions. The only way these two versions differ is that one has one of its USB ports replaced with a PS/2 port. The identifying feature is that they come with a small

docs.pikvm.org

ft232 보드

해당 kvm스위치를 제어하기 위해선 정품 ft232칩을 사용한 보드가 필요하다고 한다.

알리에서 비슷한 짭이 많아서 구매해봤지만 번번히 실패하고 결국 직배 되는 곳을 찾아서 주문하였다.

 

ft_prog 프로그램을 이용하여

Inver RS232 Signals -> Invert TXD
                                    -> Invert RXD

 두 항목을 활성화만 하면 세팅은 끝이 난다. 단지 정품칩이 아닐 경우 재연결 하면 설정이 사라진다..

 

KVM스위치와 연결을 위한 납땜 또한 필요하다.

보드에 납땜후 연결한 모습

ft232의 마이크로5핀 단자에는 라즈베리파이와 케이블로 연결하면되고 아래 4개의 단자 중 전원(3.3v)를 제외하고 KVM스위치와 연결을 위한 마이크로5핀 수 단자를 납땜하여 연결한다.(D+ -> Tx / D- -> Rx / GND -> GND로 납땜)

 

3. 설치

제작한 케이블, 캡처보드 등을 연결

전체 연결한 모습

SD카드에 PI-KVM OS 다운로드 및 설치

 

다양한 usb 플래싱 툴 이용해서 부팅 sd 카드 제작 및 부팅

 

4. 세팅

1. 로그인

 

 

2.메뉴바에 4port 지원 추가

ft232를 이용하여 kvm컨트롤러에 연결했기때문에 해당 부분을 활성화 시켜줘야한다.

https://docs.pikvm.org/xh_hk4401/#an-inverter-circuit-the-cheap-way

 

XH-HK4401 4-port HDMI USB KVM Switch - PiKVM Handbook

XH-HK4401 4-port HDMI USB KVM Switch This KVM is sold under many names, and comes in two versions. The only way these two versions differ is that one has one of its USB ports replaced with a PS/2 port. The identifying feature is that they come with a small

docs.pikvm.org

 

FT-232  /dev/ttyUSB0

 

pi-kvm은 sd카드를 읽기 모드로 두고 사용한다 따라서 터미널에서 수정모드로 변경한다

rw

/etc/kvmd/override.yaml 를 아래와 같이  추가한다.

kvmd:
    gpio:
        drivers:
            hk:
                type: xh_hk4401
                device: /dev/ttyUSB0
        scheme:
            ch0_led:
                driver: hk
                pin: 0
                mode: input
            ch1_led:
                driver: hk
                pin: 1
                mode: input
            ch2_led:
                driver: hk
                pin: 2
                mode: input
            ch3_led:
                driver: hk
                pin: 3
                mode: input
            ch0_button:
                driver: hk
                pin: 0
                mode: output
                switch: false
            ch1_button:
                driver: hk
                pin: 1
                mode: output
                switch: false
            ch2_button:
                driver: hk
                pin: 2
                mode: output
                switch: false
            ch3_button:
                driver: hk
                pin: 3
                mode: output
                switch: false
        view:
            table:
                - ["#Input 1", ch0_led, ch0_button]
                - ["#Input 2", ch1_led, ch1_button]
                - ["#Input 3", ch2_led, ch2_button]
                - ["#Input 4", ch3_led, ch3_button]

3. (옵션)VNC 활성화

/etc/kvmd/override.yaml 에 아래와 같이 추가하면 활성화 된다.

 

vnc:
    # See https://github.com/pikvm/pikvm/blob/master/pages/vnc.md
    keymap: /usr/share/kvmd/keymaps/ru # Set russian keymap
    auth:
        vncauth:
            enabled: true # Enable auth via /etc/kvmd/vncpasswd#

 

5. 사용

로그인 후 활성화 된 화면

 

 

 

6. 추가 전원제어

PI-KVM은 GPIO단자를 통한 전원제어를 제공해주는 것같다 하지만 4포트 제어를 사용하기에 필자는 별도의 wifi 기반의 컴퓨터용 릴레이 스위치(tyua)를 별도로 구매하여 사용하고있다.

'컴퓨터 > 하드웨어' 카테고리의 다른 글

ITX ESXI 서버 조립기  (0) 2022.05.10
삼성 샌스p30 분해기  (0) 2012.07.31

각종 프로젝트를 도커로 빌드 하다가 까먹어서 작성

 

Dockerfile을 통하여 추후 젠킨스 등 으로 배포 자동화를 시도해볼 수 있다.

 


Dockerfile 

스프링부트 프로젝트dockrfile

# FROM azul/zulu-openjdk:11-latest
FROM azul/zulu-openjdk-alpine:11-latest
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar

# EXPOSE 8080 #npm으로 연결
ENTRYPOINT ["java","-jar","/app.jar"]

 

FROM 이미지이름

베이스가 되는 원하는 이미지를 기입한다.

 


Dockerfile을 통한 빌드

 

터미널에서 도커로 이미지 빌드

해당 폴더의 dockerfile을 참조하여 빌드해준다.

대문자가 이미지 이름에 포함될경우 빌드 불가능하다!!

 

docker build --tag 이미지이름:latest .

 

도커 이미지 Tar로 저장, 로드

이미지를 DockerHub나 개인 Harbor같은걸 쓰면 좋겠지만 귀찮을땐 파일째 옮기는것이 편할때가 있다.

 

도커이미지 저장

docker save -o tar파일이름 이미지이름:latest

 

도커이미지 로드

docker load -i tar파일명

 

//일단 기록용

 

서버가 존재하는 곳의 네트워크 라우팅 정보를 openvpn서버(도커로 운영)에 추가해준다.

터미널에 명령어 를 아래와 같이 자신의 네트워크 환경에 맞게 수정해주고 추가

ovpn_genconfig -N -d -p "route 192.168.35.0 255.255.255.0"

 

 

 

그리고 서버 재부팅

 

그리고 ovpn 파일에서 redirect-gateway def1 을 지우던가 주석처리 후 접속하면 서버에 추가한 경로만 vpn을 통해서 접속된다.

 

시놀로지 vpn서버에서는  redirect-gateway def1   만 지우면 됬는데 안되서 찾아보고 기록

1. 개발환경을 세팅

1)노드JS를 설치하거나 NVM을 설치하여 사용

https://nodejs.org/en/

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

https://github.com/coreybutler/nvm-windows/releases

 

Releases · coreybutler/nvm-windows

A node.js version management utility for Windows. Ironically written in Go. - coreybutler/nvm-windows

github.com

 

2) 노드js에서 react설치

npm install -g create-react-app

 

3) 설치 후 리액트 프로젝트 생성

create-react-app .

. 은 현재 경로를 의미하며 지금 위치한 폴더에 리엑트 프로젝트를 생성한다.(프로젝트 명은 대문자를 포함 불가)

 

4) 생성한 리액트 프로젝트 실행

npm start

생성한 프로젝트 폴더로 이동한 뒤 프로젝트를 실행하면 연결된다.

 

4-1) 기타 프로젝트 생성시 이미 제작되어 있는 프로젝트를 가져올경우

npm install

명령어를 통해 의존성 패키지를 설치하여 실행합니다.

'개발 > ' 카테고리의 다른 글

국내 해외무료호스팅 모음~~  (0) 2012.10.14

시스템에 설치된 모든 패키지를 업데이트 하지 않고 OS의 보안 패치만 적용하는 명령어

sudo apt-get update

sudo apt-get install unattended-upgrades

sudo unattended-upgrade

NAS를 운영 중이지만 자취를 하면서 떨어 저 있는 NAS에 갑갑함을 느껴 라즈베리파이 4를 가져와 우분투 서버로 써먹다가 그것도 답답하여 조립한 미니 ITX 컴퓨터(조립은 작년 8월에하고 이제 글쓴다)

 

무소음을 최대한 실현하기위해 파워만큼은 dc 파워를 쓰기로 했다.

 

조립한 컴퓨터의 사양으로 

CPU : i3-10105F (내장그래픽 없는 버전)

MB : ASRock H470M itx/ac

SSD : nvme 삼성 pm9a1 256GB

RAM : 삼성 DDR4 8gb(3200)

GPU : GT720 (esxi 패스쓰루를 위해 중고로 구입)

파워 : DC to DC / 120W 어댑터(12v,10A)

케이스 : 알리에서 4만원 주고 직구한 ITX 케이스

 

OS는 ESXI 7.0.1 랜 드라이버 추가 버전을 설치하였다. 

조립에 사용한 ITX 사이즈 메인보드

ITX보드를 처음 사용해봤는데 작고 생각보다 괜찮아서 마음에듬

가성비 의 PM9A1 256GB
국룰 삼성 시금치 램
오랜만에 쓰는 인텔 CPU

 

케이스에 최종 조립

기본 쿨러가 이전 납작한 초코파이에서 살짝 높이가 높아진거 같다. 덕분에 닫을수 없어서 쿨러도 다시 따로 주문

 

파워자리가 Flex 파워 자리라서 충분히 어댑터가 들어갈 공간이 나왔다.

 

알리에서 시킨 DC 파워도 태워 먹고 리뷰도 다들 태워먹은걸보니 에초에 문제가 있는듯 덕분에 요것도(오존컴퍼니 VIPER DC to DC 150W) 새로 구입

새로산 Dc To DC

 

 

쿨러 높이가 안 맞아서 새로 구입한 EVERCOOL EC155C-915BP

쿨러 변경을 위해 다시 보드 빼고 쿨러를 교체 해주었다.

그리고 조립완료

'컴퓨터 > 하드웨어' 카테고리의 다른 글

4포트 PI-KVM 구축기  (0) 2023.07.29
삼성 샌스p30 분해기  (0) 2012.07.31

+ Recent posts