S3互換のオブジェクトストレージ

S3などクラウドサービスに付きもののオブジェクトストレージは容量課金やトラフィック課金など従量制とはいえ費用がかかる。
実際にサービス提供をして費用が賄えるのであればそれで良いのだけど、S3 APIのテストやデモでお客さんに使って貰う時などはビクビクしながら使う必要がある。

なので、LeoFSとかオープンソースで構築が出来るオブジェクトストレージが存在するのだけど、これもAIサーバのまぁまぁスペック良いやつを最小3台。出来れば5台必要とか言われちゃうのだ。

 

そんな訳で今回はminioを使ってみる。

こいつはGoでプログラムが書かれてらしい。うむぅ・・・Goなんてハイカラ(w)な言語は知らないしインストール面倒だったら諦めるかって思ってたら、ダウンロードしたバイナリに実行権限を付けるだけやったwww

 

 cd /usr/local/src
 wget https://dl.minio.io/server/minio/release/linux-amd64/minio
 chmod +x minio

起動はとっても簡単。

 mkdir /data
 ./minio server /data

という感じ。
ただ、これだと&を付けるかScreenで走らせておくかをしないといけない。
そんなわけで起動スクリプトを作ってくれてる人が居たのでそのまま拝借。

vi /etc/init.d/minio

============================================================

#!/bin/sh

### BEGIN INIT INFO
# Provides: minio
# Required-Start: $local_fs $network $remote_fs
# Should-Start: $time
# Required-Stop: $local_fs $network $remote_fs
# Should-Stop:
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: start and stop Minio Server
# Description: Minio Server
### END INIT INFO

# 64-bit Intel https://dl.minio.io/server/minio/release/linux-amd64/minio
# 32-bit Intel https://dl.minio.io/server/minio/release/linux-386/minio
# 32-bit ARM https://dl.minio.io/server/minio/release/linux-arm/minio
# 64-bit ARM https://dl.minio.io/server/minio/release/linux-arm64/minio
# 32-bit ARMv6 https://dl.minio.io/server/minio/release/linux-arm6vl/minio

# How to install
# sudo wget "https://dl.minio.io/server/minio/release/linux-{ ARCH }/minio" -O /usr/bin/minio
# sudo chmod 755 /usr/bin/minio

prog="minio"
user="root"
cmd="/path/to/minio"
fspath="/path/to/s3-test"

mkdir -p "/var/run/$prog/"
pid_file="/var/run/$prog/$prog.pid"
cmd_args="server $fspath"

case "$1" in
"start")
start-stop-daemon --start --user $user --exec $cmd --make-pidfile --pidfile $pid_file -- $cmd_args &
result=$?
if [ $result != "0" ]
then
pid=`cat $PIDFILE`
echo "daemon is already running. (pid=${pid})"
exit 1
fi
;;
"stop")
start-stop-daemon --stop --user $user --pidfile $pid_file
result=$?
if [ $result != "0" ]
then
echo "daemon is not running. (check $pid_file)."
exit 1
fi
rm -f $PIDFILE
;;
esac

============================================================

起動スクリプトを公開してくれてたサイト

qiita.com

 

しかしながら、CentOSにはstart-stop-daemonなんてコマンドは無いんだなぁ・・・(--;)
どうもDebian系にはあるそうな。

仕方ないのでソースからコンパイルする(参考

cd /usr/local/src

wget http://developer.axis.com/download/distribution/apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz

tar zxvf apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz

cd apps/sys-utils/start-stop-daemon-IR1_9_18-2/

さて、makeをしたいところだけど、どうもgccで単純に実行ファイルを作る方が何かと面倒にならないらしいので、えぃやぁとコンパイル

gcc start-stop-daemon.c -o start-stop-daemon

 

最初、出力オプションを付け忘れてa.outなんてファイルが出来たのは内緒(笑)

作成されたstart-stop-daemonをpathが通ったところに移動

mv start-stop-daemon /usr/bin/

 

後は自動実行するように登録しとけばOK

checkconfig minio on

service minio start

ちなみに、minioの設定ファイルは/root/.minio/config.jsonに作成されている。

この中にアクセスキーやシークレットキーも書いてあるのでご注意を(^^;)


ブラウザでhttp://IPアドレス:9000/でアクセスするとバケットを作成したり出来るのだけど、不要になったバケットを削除する方法がわからんです(--;)

APIを使えば消せるのはわかってるのだけど、GUIからは消せんのか??

知ってる人が居たら教えて欲しいのねw

 

さて・・・途中で気づいている人も居たかもしれないが、なぜ6系なんだって話だ。
単純にデータセンターで動いてた使ってないサーバがScientific Linux 6.7だったからってだけだ。

CentOS7で使いたい場合はこんなブログ見ないで、こんなサイトを見た方が絶対に良い。というか6系でもここを見るよりも他の人がもっと詳しくかいてるぞwww

 

qiita.com

 

うむぅ・・・Go言語とか勉強した方が良いのかねぇ? 

Go言語によるWebアプリケーション開発

Go言語によるWebアプリケーション開発