15分で弾力性のある冗長S3互換ストレージ

今日のS3はおそらく誰も驚かないでしょう。 Webサービスのバックエンドリポジトリとして、メディア業界のファイルリポジトリとして、およびバックアップのアーカイブとして使用されます。







Cephオブジェクトストレージに基づくS3互換ストレージの小規模な展開例を検討してください



クイックリファレンス


Cephは、柔軟でスケーラブルなペタバイトストレージのオープンソース開発です。 基礎は、オブジェクトストレージ内の数十個のサーバーのディスクスペースを結合することです。これにより、柔軟な複数の擬似ランダムデータの冗長性が実現します。 Ceph開発者は、このオブジェクトストアをさらに3つのプロジェクトで補完します。





例の説明


私の例では、システムに/dev/sda



、オブジェクトストレージデータに/dev/sdb



および/dev/sdc



3つのSATAディスク使用した3つのサーバーを引き続き使用します。 S3互換ストレージを操作するためのさまざまなプログラム、モジュール、およびフレームワークは、クライアントとして機能できます。 DragonDiskCrossFTPS3Browserのテストに成功しました。

また、この例では、node01ノードで1つのRADOSゲートウェイのみを使用しています。 S3インターフェースは、 s3.ceph.labspace.studiogrizzly.com



s3.ceph.labspace.studiogrizzly.com





現時点で、CephがそのようなS3操作http://ceph.com/docs/master/radosgw/s3/をサポートしていることは注目に値します



さあ始めましょう



ステップ0. Cephの準備


既にデプロイされたCephクラスターを引き続き使用するため、 /etc/ceph/ceph.conf



構成をわずかに調整するだけで/etc/ceph/ceph.conf



ます-RADOSゲートウェイの定義を追加します



 [client.radosgw.gateway] host = node01 keyring = /etc/ceph/keyring.radosgw.gateway rgw socket path = /tmp/radosgw.sock log file = /var/log/ceph/radosgw.log rgw dns name = s3.ceph.labspace.studiogrizzly.com rgw print continue = false
      
      





他のノードで更新します



 scp /etc/ceph/ceph.conf node02:/etc/ceph/ceph.conf scp /etc/ceph/ceph.conf node03:/etc/ceph/ceph.conf
      
      





手順1. Apache2、FastCGI、RADOSゲートウェイをインストールする


 aptitude install apache2 libapache2-mod-fastcgi radosgw
      
      





ステップ2. Apacheの構成


必要なモジュールが含まれています



 a2enmod rewrite a2enmod fastcgi
      
      





RADOSゲートウェイ/etc/apache2/sites-available/rgw.conf



VirtualHostを作成します



 FastCgiExternalServer /var/www/s3gw.fcgi -socket /tmp/radosgw.sock <VirtualHost *:80> ServerName s3.ceph.labspace.studiogrizzly.com ServerAdmin tweet@studiogrizzly.com DocumentRoot /var/www RewriteEngine On RewriteRule ^/([a-zA-Z0-9-_.]*)([/]?.*) /s3gw.fcgi?page=$1¶ms=$2&%{QUERY_STRING} [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] <IfModule mod_fastcgi.c> <Directory /var/www> Options +ExecCGI AllowOverride All SetHandler fastcgi-script Order allow,deny Allow from all AuthBasicAuthoritative Off </Directory> </IfModule> AllowEncodedSlashes On ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined ServerSignature Off </VirtualHost>
      
      





作成されたVirtualHostをオンにし、デフォルトをオフにします



 a2ensite rgw.conf a2dissite default
      
      





FastCGIスクリプト/var/www/s3gw.fcgi



を作成します。



 #!/bin/sh exec /usr/bin/radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway
      
      





実行可能にする



 chmod +x /var/www/s3gw.fcgi
      
      





ステップ3. RADOSゲートウェイの準備


必要なディレクトリを作成します



 mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway
      
      





新しいRADOS Gatewayサービスのキーを生成します



 ceph-authtool --create-keyring /etc/ceph/keyring.radosgw.gateway chmod +r /etc/ceph/keyring.radosgw.gateway ceph-authtool /etc/ceph/keyring.radosgw.gateway -n client.radosgw.gateway --gen-key ceph-authtool -n client.radosgw.gateway --cap osd 'allow rwx' --cap mon 'allow r' /etc/ceph/keyring.radosgw.gateway
      
      





クラスターに追加します



 ceph -k /etc/ceph/ceph.keyring auth add client.radosgw.gateway -i /etc/ceph/keyring.radosgw.gateway
      
      





ステップ4.起動


Apache2とRADOSゲートウェイを再起動します



 service apache2 restart /etc/init.d/radosgw restart
      
      





ステップ5.最初のユーザーを作成する


S3クライアントを使用するには、新しいユーザーのaccess_key



およびsecret_key



を取得する必要があります



 radosgw-admin user create --uid=i --display-name="Igor" --email=tweet@studiogrizzly.com
      
      





コマンドの出力を確認し、キーをクライアントにコピーします



ステップ6. DNS


バケットが機能するためには、 s3.ceph.labspace.studiogrizzly.com



サブドメインがRADOSゲートウェイが実行されているホストのIPアドレスs3.ceph.labspace.studiogrizzly.com



指すように要求するときにDNSサーバーが必要です。

たとえば、 mybackups



というバケットを作成する場合、ドメインはmybackups.s3.ceph.labspace.studiogrizzly.com.



node01のIPアドレス(192.168.2.31)を指す必要があります。

私の場合、CNAMEレコードを追加するだけです



 * IN CNAME node01.ceph.labspace.studiogrizzly.com.
      
      





あとがき


15分でS3互換ストレージを展開できました。 次に、お気に入りのS3クライアントを接続してみます。






ボーナスパート



snGISに 、2GISの実稼働環境でRADOSゲートウェイを使用した経験について尋ねました 。 以下は彼のレビューです。



概要


ワニスがあり、ラジオゲートの4つのアパッチがバックエンドによってピックアップされます。 アプリケーションは最初にワニスに登りますが、もし問題があれば、ラウンドロビンは直接​​Apacheに侵入します。 これにより、1か月間のアクセスログを含む合成テストjmeterで問題なく20,000 rpsが押されます。 50万枚の写真の中では、フロントエンドの作業負荷は約300 rpsです。







これまでのところ、Cephは5台のマシン上で、osd用に別のディスクがあり、マガジン用に別のssdがあります。 デフォルトのレプリケーション、^ 2。 システムは、2つのノードの落下と同時に、その後も変化します。 6か月間、クライアントにはまだ1つのエラーも表示されていません。



ストレージ、iノード、カタログごとのレイアウトのサイズなど、柔軟性に問題はありません。これらはすべて過去のものです。



ソリューションの特徴




これらすべては現在6ヶ月間私たちと一緒に働いており、一般的に管理者の介入を必要としません)



今後の計画


現在、私はCephを使用して、すでに4〜200 kbの1500万個のファイルを保存およびアップロードしようとしています。 S3では、これはあまり便利ではありません-一括コピー操作はありません。最初にストレージをいっぱいにするためにバケットをデータで削除することはできません-これはゆっくりとPPCです。 締め方を調べます。



しかし、主なタスクはジオクラスターです。私たちはシベリアにいて、地理的に近い地点からクライアントにデータを送信したいと考えています。 モスクワでは、コンテンツは既に遅れて飛んでいます-最大100msプラス、これは良くありません。 まあ、Ceph開発者は計画にすべてを持っているようです。



All Articles