2013-12-12 2 views
0

우리는 Openstack 클라우드 사용자 중 하나이며 클라우드에 많은 파일을 저장하기 위해 Swift를 사용합니다. 사용자 (최종 사용자)가이 파일에 액세스합니다. 파일이 공용 인 경우 최종 사용자는 웹 또는 모바일 응용 프로그램에서 개체 URL을 직접 방문 할 수 있습니다. 그러나 일부 파일은 비공개 파일입니다. 각 최종 사용자는 자신의 개인 파일에만 액세스 할 수 있습니다. 최종 사용자는 항상 우리의 서버로 요청을 보내는Openstack Swift에서 사용자가 파일에 액세스 할 수있는 가장 좋은 방법은 무엇입니까?

A. :

최종 사용자는 자신의 개인 파일에 액세스하는 두 가지 방법이있을 수 있습니다. 그리고 우리 서버는 Swift에서 파일을 가져 와서 사용자에게 보냅니다. 이 방법에서 우리 서버는 파일 프록시로 간주 될 수 있습니다. Openstack의 인증은 이며 사용자는 Google 서버의 인증을 받았습니다. 우리는 우리 자신의 사용자 시스템을 유지해야합니다.

이 방법의 한 가지 문제점은 확장 성입니다. 각 요청이 Google 서버로 전송되므로 많은 파일이 동시에 업로드되거나 다운로드되는 경우 병목 현상이 서버에 발생합니다. 서버가 충분하지 않은 경우 스위프트의 확장 기능을 사용할 수 없습니다. 실제로 우리는 파일 전송을 제외하고는 많은 서버가 필요하지 않습니다.

B. 최종 사용자는 Swift로 요청을 직접 보냅니다. 거대한 파일 대역폭 문제를 해결할 수 있습니다. 하지만 Openstack의 인증 방법은 이어야합니다. 따라서 우리는 Openstack의 사용자 중 하나 일 뿐이며 사용자를 위해 수천 개의 Openstack 계정을 필요로합니다! 그것은 이상하고 실현 가능하지 않은 것 같습니다.

요구 사항을 충족시키는 다른 방법이 있습니까?

+0

당신은 그들의 스위프트에 정의 된 리셀러 관리자 단일 사용자 이름/암호로 모든 사용자와 B 옵션을 인증 사용할 수 있습니다 auth 시스템에서는 다른 사용자에 대해 다른 빠른 계정을 만들 수 있지만 동일한 토큰을 사용하여 액세스 할 수 있습니다. – koolhead17

+0

그러면 사용자 A가 사용자 B의 파일에 액세스하지 못하게하는 방법은 무엇입니까? 감사! – flypen

답변

1

당신 파일 (시나리오 A)를 얻을 수 있도록 서버를 사용하지만, 을 넣어 그 "클라우드" 서버. 그런 다음 액세스를 확장해야 할 때로드 밸런서 아래에서 추가 서버가 가동됩니다. 따라서 사용자는 필요에 따라로드를 가로로 분산합니다.

아이디어.

(면책 조항 : 나는 랙 스페이스의 직원입니다)

+0

감사합니다. 이 문제를 해결하는 가장 좋은 방법은 서버를 더 추가하는 것입니다. 그렇지 않습니까? – flypen

0

세 번째 아이디어는, 신속의 tempurl 기능을 사용하는 클라이언트가 파일을 필요로 할 때, 당신은 그들이 권한이있는 경우 확인 검사 한 파일에 서명 URL을 genenerate 그리고 그들이 얻을 URL이 빠른에서 직접 다운로드를 가능하게 때문에이 문제가

를 해결하는
1. User A can not get User B's files 
2. Download is straight from swift, so your server does not become the bottleneck for downloads (only for authorization).