調査中のものや、ちょっとしたメモなど。
なのでオブジェクトのURLは http://<proxy-server>/X-storage-string/container/object のような形になります。
X-storage-stringに相当する部分を保存するのが、Account Serverになります。
ただし、CyberDuck?から接続してみたところ、コンテナの中にディレクトリを作ることができました。
オブジェクトの一種という形で作成できるのかもしれません。
ドキュメントは特にないようです。
また現状、AuthとProxyは同一ホスト上でしか動かないようです。
恐らく設定例にないだけで、Authサーバの設定でProxyサーバを指定する項目があり、
localhostを指定しているからではないかと思います。(調査中)
現状のドキュメントによると、Proxyサーバは1台で構成する前提のようです。
このためボトルネックになることが懸念されます。
しかしProxy Serverを複数台にすること自体は可能らしく、ドキュメントが整っていないだけのようです。
object, container, accountサーバそれぞれに
auditor, replicator, updaterが存在します。
冗長化のための複製を行う。
削除に関しては、0バイトのファイルを複製することで確実に削除している。
Replicator以外の手段としては、PUTの段階で複数のサーバに書き込んでいます。
Replicatorの役目としては、ファイルのPUTの後に追加したサーバに対してデータを複製するようです。
調査中。
システムの監視を行っているらしい。
障害等でデータの書き込みが行えなかった場合に、後から書き込むための仕組みらしいです。
Replicator等のログとして、「ERROR Failed to get my own IPs?」と出ることがあります。
これはOSの言語設定を日本語などにしていると起こります。
Swift内部で、自分のIPアドレスを取得する関数がありますが、言語を日本語などにしていると失敗します。
実装方法としてifconfigの結果をパースしており、日本語環境だと意図通りの書式ではないため、正常にパースできないようです。
これらのサーバを起動するスクリプトで、言語をC等に設定することで回避できます。