Swift/概要

調査中のものや、ちょっとしたメモなど。

コンテナの仕様

  • Objectはコンテナの中にしか作れない
  • コンテナの中にコンテナは作れない

なのでオブジェクトのURLは http://<proxy-server>/X-storage-string/container/object のような形になります。

X-storage-stringに相当する部分を保存するのが、Account Serverになります。

ただし、CyberDuck?から接続してみたところ、コンテナの中にディレクトリを作ることができました。
オブジェクトの一種という形で作成できるようです。

Authサーバの設定

ドキュメントは特にないようです。 Swift All In Oneのドキュメントの設定例のみです。

複数台のProxyサーバ

Proxyサーバは単一障害点になることが懸念されます。
Proxy Serverを複数台にすることは可能らしく こちらのドキュメントに描かれています。
ロードバランサを導入するようです。

CloudFiles? APIライブラリからの利用

pythonのものだと、docsディレクトリにドキュメントがあります。 swiftの場合、接続先のサーバを指定する必要があり、以下のように実行します。

cloudfiles.consts.default_authurl = 'https://192.168.1.1/v1.0'

Replicatorなど

object, container, accountサーバそれぞれに
auditor, replicator, updaterが存在します。

  • Replicator

冗長化のための複製を行う。
削除に関しては、0バイトのファイルを複製することで確実に削除している。
Replicator以外の手段としては、PUTの段階で複数のサーバに書き込んでいます。
Replicatorの役目としては、ファイルのPUTの後に追加したサーバに対してデータを複製するようです。

  • Auditor

調査中。
システムの監視を行っているらしい。

  • Updater

障害等でデータの書き込みが行えなかった場合に、後から書き込むための仕組みらしいです。

ちょっとした不具合対策

Replicator等のログとして、「ERROR Failed to get my own IPs?」と出ることがあります。
これはOSの言語設定を日本語などにしていると起こります。

Swift内部で、自分のIPアドレスを取得する関数がありますが、言語を日本語などにしていると失敗します。
実装方法としてifconfigの結果をパースしており、日本語環境だと意図通りの書式ではないため、正常にパースできないようです。
これらのサーバを起動するスクリプトで、言語をC等に設定することで回避できます。

swauth

恐らくSwift独自の概念。
DevAuth?とswauthのうち、どちらを使うかを選択できるようです。
AuthサーバはDevAuth?の場合のみ構築するらしいので
swauthを選択した場合は、Proxyサーバが認証も含めて行うのではないかと思います。
swauth-*で始まるコマンドからアカウント作成などを行いますが、アーカイブ版には含まれていないようです。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-01-17 (月) 18:38:20 (2466d)