フォーム読み込み中
ご覧いただきありがとうございます。ソフトバンクの結城です。
今回は、インスタンス(サーバ)のディスク容量をひっ迫させる原因の1つであるログファイルをAlibaba Cloudのオブジェクトストレージサービス(OSS)を使って保存する方法について紹介します。
Alibaba Cloud OSSは、AWSでいうS3のようなストレージサービスです。費用対効果がとても高く、多層冗長性とエンドツーエンドのデータ検証設計により、99.9999999999%のデータ耐久性と99.995% のデータ可用性で提供されています。また、WORMに対応しているため、悪意のあるデータ、または偶発的なデータの削除を防止することができます。OSSでは、データを格納する大きな箱(WindowsでいうCドライブのようなイメージ)のことをバケット、格納されるファイルのことをオブジェクトと呼んでいます。
OSSの主な機能について紹介します。
●ファイルアップロードの高速化
OSSに対して、ファイルをアップロードする際に、ファイルアップロードの速度を「転送アクセラレーション」と呼ばれる機能を使って高速化することができます。ファイルサイズが大きいファイルをアップロードする際によく使われます。
●静的Webサイトのホスティング
OSSバケットのドメインを使って静的Webページを公開することができます。
●ACL(Access Control List)
バケットやオブジェクトなどに対して、アクセス制限をすることができます。また、操作ユーザについても制限することが可能です。
●上書き、削除されたデータを復元する
OSSのバージョニング機能を有効化した場合、上書きや誤って削除されたデータを復元することができます。
●指定したバケットやオブジェクトに対しての監視
OSSでは指定したバケットやオブジェクトに対して操作があった場合、アラームを通知させることができます。
その他OSSの機能については「Function and features」をご参照ください。
■利用した容量に対しての課金
Alibaba Cloudのハードディスクを例にすると、ハードディスクを実際に使った容量ではなく、利用するディスクサイズに対しての課金となり、使わなかった分の容量に対しての割引や返金等がありません。一方、OSSでは利用した容量に応じて課金されるため、利用していない容量に対して料金を支払う必要がありません。さらにOSSのStandard Local Redundant Storage (LRS)オブジェクトを利用した場合、1 か月あたり 5 GB まで無料で使うことができます(2023年2月現在)。
■ハードディスクサイズ拡張の悩みを解決
ハードディスクの容量がひっ迫すると対策の一つとしてディスクサイズを拡張することがあると思います。特にパブリッククラウドでは、ディスクサイズの拡張をすると、ディスクの利用料金が上がる場合が多いので、どのくらいのディスクサイズにするか迷う場面があります。また、ディスクサイズの拡張を行うと都度、拡張した容量の割り当てを行う必要があります。OSSは、ファイルシステムとしてOSにマウント可能で、初期値256TBの容量を1度でマウントすることができ、なおかつ使用した容量に応じて課金されるため、この悩みを解決できます。
■ハードディスクのファイルシステムが破損してもOSSにデータを保存していれば軽傷
パブリッククラウドのハードディスクは、オンプレミスのハードディスクと同じでファイルシステムが破損する場合があります。fsckなどでファイルシステムを修復できる場合もありますが、最悪の場合、リカバリできずデータがロストしてしまう場合もあります。OSSでは、基盤側の仕組みでOSSバケットに保存されたデータのレプリカを作成します。また、定期的にデータの整合性を検証し、ハードウェア障害などのエラーによって引き起こされたデータ破損を検出します。データが部分的に破損または消失した場合、OSS は残りのレプリカに基づいてデータを再構築および回復する仕組みがあります
OSSの課金項目や詳細、他クラウドとのコスト比較について「違いはなに?Alibaba Cloud、AWS、Azure、Google Cloudのオブジェクトストレージサービス比較!」のブログで紹介してますので、是非参照ください。
■設定内容
OSSをECSにマウントし、ログローテーションされたログファイル(/var/log/messages)をOSSバケットに自動的に格納する設定をします。ログローテーション前のログファイルはOSSではなく、デフォルトのパス(/var/log配下)から変更しません。
※設定後の動作確認では実際にログローテションされたファイルは使用しません
■ossfsについて
ossfsはAlibaba Cloud独自のファイルシステムで、OSSをマウントした際に使われるファイルシステムです。マウント方法としてはインターネット経由と、ローカルネットワークを使ったマウント方法があります。インターネット経由のマウントの場合、OSSにアップロード、ダウンロードするのに時間が掛かる場合があります。一方、ローカルネットワークを使ったマウントではディスクの書き込み速度には劣りますが、インターネット経由のマウントと比較して、書き込み速度が早くなります。Alibaba Cloud社のドキュメントでもローカルネットワークを使ったマウント利用が推奨されています。
■利用プロダクト
※リージョンは日本リージョン
VPC * 1
VSwitch * 1
OSS * 1
ECS * 1 (CentOS 7)
RAMユーザ
■事前準備
① 『利用プロダクト』を事前にご準備ください
② ECSに対してSSHできるようセキュリティグループを設定してください。
③ RAMユーザのアクセスキー / アクセスキーシークレットをご準備ください
④ ログローテションの設定がされている状態
⑤ RAMユーザに「AliyunOSSFullAccess」の権限を付与してください。
■構築手順
1. 事前に準備したECSにSSHでログインします。
2. wgetでパッケージをダウンロードします。
# wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
3. ossfs、mailcapをインストールします
# yum -y install ossfs_1.80.6_centos7.0_x86_64.rpm*
# yum -y install mailcap
4. バケット名、アクセスキー、アクセスキーシークレットを記載するファイルを作成します。
# vi /etc/passwd-ossfs
# echo [OSSのバケット名]:[RAMユーザのアクセスキー]:[RAMユーザのアクセスキーシークレット] > /etc/passwd-ossfs
# chmod 640 /etc/passwd-ossfs
5. OSSをマウントするディレクトリを作成します。
# mkdir /root/test
6. OSSを/root/testにマウントします。
# ossfs [OSのバケット名] /root/test -o url=oss-ap-northeast-1-internal.aliyuncs.com
※正常にマウントができると特にメッセージの出力はありません。
7. OSSがファイルシステムとしてマウントされたことを確認します。
#df -h
8. ログを保存するためのフォルダをOSSに作成します。
# touch /root/test/logtest
9. crontabで/var/log/messageでローテーションされたファイルをOSSに自動的に格納する設定をします。
※ローテーションされて作成されたファイル名は messages_YYMMDDとします。
※1分おきに「mv /var/log/messages_* /root/test/logtest」を実行する設定#crontab -e
*/1 * * * * mv /var/log/messages_* /root/test/logtest
[:wqで保存]
10. crontabのスケジューリングタスクに9で設定した内容が反映されているか確認
#crontab -l
出力結果が「*/1 * * * * mv /var/log/messages_* /root/test/logtest」であればok
■動作確認
<事前準備>
/var/log/配下にテストファイルをいくつか作成します。
#cd /var/log/
#touch messages_1 messages_2 messages_3 messages_4
<動作確認>
作成されたファイルがOSSのlogtestフォルダに格納されたか確認します。
※事前準備で作成した2分ほど後に確認してください。
OSでの確認
OSSコンソールでの確認
上記の画像の通り、OSSにログファイルが格納されたことが確認できました。
今回はECSにOSSをファイルシステムとしてマウントする方法、メリット等について紹介しました。頻繁にディスク拡張や、ディスクサイズの割り当てに悩んでいる方、ログの保存要件で長期保存する必要があるといった場合は、紹介させていただいた方法をぜひお試しください。
条件に該当するページがございません