S3 рдЖрдЬ рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХреЛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреИрдХрдПрдВрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдореАрдбрд┐рдпрд╛ рдЙрджреНрдпреЛрдЧ рдореЗрдВ рдлрд╛рдЗрд▓ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд░реВрдк рдореЗрдВ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реЗрдлрд╝ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдкрд░ рдЖрдзрд╛рд░рд┐рдд S3- рд╕рдВрдЧрдд рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рддреИрдирд╛рддреА рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
рддреНрд╡рд░рд┐рдд рд╕рдВрджрд░реНрдн
рд╕реЗрдлрд╝ рд▓рдЪреАрд▓реА, рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдкреЗрдЯрд╛рдмрд╛рдЗрдЯ рднрдВрдбрд╛рд░рдг рдХрд╛ рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╡рд┐рдХрд╛рд╕ рд╣реИред рдЖрдзрд╛рд░ рд╡рд╕реНрддреБ рднрдВрдбрд╛рд░рдг рдореЗрдВ рдХрдИ рджрд░реНрдЬрди рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХрд╛ рд╕рдВрдШ рд╣реИ, рдЬреЛ рд▓рдЪреАрд▓реЗ рдПрдХрд╛рдзрд┐рдХ рдЫрджреНрдо рдЖрдпрд╛рдореА рдбреЗрдЯрд╛ рдкреБрдирд░реНрд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рд┐рдл рдбреЗрд╡рд▓рдкрд░реНрд╕ рддреАрди рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░ рдХреЛ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВ:
- RADOS рдЧреЗрдЯрд╡реЗ - S3- рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯ-рд╕рдВрдЧрдд RESTful рдЗрдВрдЯрд░рдлрд╝реЗрд╕
- рдЖрд░рдмреАрдбреА - рдкрддрд▓реА рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд▓реЙрдХ рдбрд┐рд╡рд╛рдЗрд╕
- рд╕реАрдПрдлрдПрд╕ рдПрдлрдПрд╕ - рд╡рд┐рддрд░рд┐рдд рдкреЛрд╕рд┐рдХреНрд╕-рдЕрдиреБрд░реВрдк рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо
рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрдгрди
рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 3 SATA рдбрд┐рд╕реНрдХ рдХреЗ рд╕рд╛рде 3 рд╕рд░реНрд╡рд░
рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реВрдВ:
/dev/sda
рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░
/dev/sdb
рдФрд░
/dev/sdc
рд╡рд╕реНрддреБ рднрдВрдбрд╛рд░рдг рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдПред рдПрд╕ 3 рд╕рдВрдЧрдд рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрдХреНрд░рдо, рдореЙрдбреНрдпреВрд▓, рдФрд░ рд░реВрдкрд░реЗрдЦрд╛ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ
DragonDisk ,
CrossFTP рдФрд░
S3Browser рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рднреА, рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ RADOS рдЧреЗрдЯрд╡реЗ рдиреЛрдб 01 рдиреЛрдб рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред S3 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛
s3.ceph.labspace.studiogrizzly.com
s3.ceph.labspace.studiogrizzly.com
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдлрд┐рд▓рд╣рд╛рд▓ рд╕рд┐рдл рдРрд╕реЗ S3 рдСрдкрд░реЗрд╢рдВрд╕
http://ceph.com/docs/master/radosgw/3/3 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рдЪрд░рдг 0. рддреИрдпрд╛рд░реА рд╕реЗрдл
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
рддреИрдирд╛рдд рд╕рд┐рдл рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрд╛ рд╣реИ, рдореБрдЭреЗ рдХреЗрд╡рд▓
/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. рдЕрдкрд╛рдЪреЗ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛
рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ
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
рдмрдирд╛рддреЗ рд╣реИрдВ:
рдФрд░ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рдПрдВ
chmod +x /var/www/s3gw.fcgi
рдЪрд░рдг 3. RADOS рдЧреЗрдЯрд╡реЗ рддреИрдпрд╛рд░ рдХрд░рдирд╛
рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ
mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway
рдирдИ RADOS рдЧреЗрдЯрд╡реЗ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдВрдЬреА рдмрдирд╛рдПрдВ
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. рдбреАрдПрдирдПрд╕
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд▓реНрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрд╕ рд╣реЛрд╕реНрдЯ рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм
s3.ceph.labspace.studiogrizzly.com
рдХрд┐рд╕реА рднреА рдЙрдкрдбреЛрдореЗрди рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╕рдордп рд╣реЛрд╕реНрдЯ рдХреЗ рдЖрдИрдкреА рдкрддреЗ
s3.ceph.labspace.studiogrizzly.com
рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ RADOS рдЧреЗрдЯрд╡реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
mybackups
рдирд╛рдордХ рдПрдХ рдмрд╛рд▓реНрдЯреА
mybackups
, рдбреЛрдореЗрди
mybackups.s3.ceph.labspace.studiogrizzly.com.
рдиреЛрдб 01 рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд┐ 192.168.2.31 рд╣реИред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЕрднреА рдПрдХ CNAME рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ
* IN CNAME node01.ceph.labspace.studiogrizzly.com.
рдЕрдВрддрднрд╛рд╖рдг
15 рдорд┐рдирдЯ рдореЗрдВ рд╣рдо S3- рд╕рдВрдЧрдд рднрдВрдбрд╛рд░рдг рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдЕрдм рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ S3 рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдмреЛрдирд╕ рд╣рд┐рд╕реНрд╕рд╛
рдореИрдВрдиреЗ
2GIS рдкрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ RADOS рдЧреЗрдЯрд╡реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
sn00p рд╕реЗ рдкреВрдЫрд╛ред рдиреАрдЪреЗ рдЙрдирдХреА рд╕рдореАрдХреНрд╖рд╛ рд╣реИ:
рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд╛рд░реНрдирд┐рд╢ рд╣реИ, рд░реЗрдбрд┐рдпреЛ рдлрд╛рдЯрдХреЛрдВ рдХреЗ 4 рдПрдкрд╛рдЪреЗ рдмреИрдХрдПрдВрдб рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдП рдЧрдП рд╣реИрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд╣рд▓реЗ рд╡рд╛рд░реНрдирд┐рд╢ рдореЗрдВ рдЪрдврд╝рддрд╛ рд╣реИ, рдЕрдЧрд░ рдХреЛрдИ рдмрдорд░ рд╣реИ, рддреЛ рд░рд╛рдЙрдВрдбреНрд░реЛрдмрд┐рди рд╕реАрдзреЗ рдЕрдкрд╛рдЪреЗ рдореЗрдВ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдмрд╛рдд рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЬреЗрдореАрдЯрд░ рдкрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ 20,000 рдЖрд░рдкреАрдПрд╕ рджрдмрд╛рддреА рд╣реИред рдбреЗрдврд╝ рд▓рд╛рдЦ рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рдЕрдВрджрд░, рджреГрд╢реНрдпрдкрдЯрд▓ рдкрд░ рдХрд╛рд░реНрдпрднрд╛рд░ рд▓рдЧрднрдЧ 300 рдЖрд░рдкреАрдПрд╕ рд╣реИред

5 рдорд╢реАрдиреЛрдВ рдкрд░ рдЕрдм рддрдХ рд╕реЗрдл, рдУрд╕реНрдж рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдбрд┐рд╕реНрдХ рдФрд░ рдкрддреНрд░рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдПрд╕рдбреАрдПрд╕ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рддрд┐рдХреГрддрд┐, ^ 2ред рдкреНрд░рдгрд╛рд▓реА рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛ рдиреЛрдбреНрд╕ рдХреЗ рдЧрд┐рд░рдиреЗ рд╕реЗ рдмрдЪ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХреЗ рд╕рд╛рдеред рдЫрд╣ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЕрднреА рддрдХ рдПрдХ рднреА рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИред
рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ - рднрдВрдбрд╛рд░рдг рдХрд╛ рдЖрдХрд╛рд░, рдЗрдиреЛрдб, рдХреИрдЯрд▓реЙрдЧ рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЖрдЙрдЯ - рдпрд╣ рд╕рдм рдЕрддреАрдд рдореЗрдВ рд╣реИред
рд╕рдорд╛рдзрд╛рди рд╕реБрд╡рд┐рдзрд╛рдПрдБ
- рдкрд╛рдВрдЪ HP Proliant Gen8 DL360e рд╕рд░реНрд╡рд░ред рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рд┐рдл рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ 300 рдЬреАрдмреА рдПрд╕рдПрдПрд╕ 15krpm рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╕реБрдзрд╛рд░ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рд┐рд╕рд╛рдЪреА рдЕрд▓реНрдЯреНрд░рд╛рд╕реНрдЯрд╛рд░ 400 рдПрдо рдПрд╕рдПрд╕рдбреА рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдУрд╕реНрдб рдбреЗрдорди рд▓реЙрдЧ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╣реИрдВред
- Apache2 рдФрд░ radosgw рдХреЗ рд╕рд╛рде рджреЛ kvm рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЗрдВ рдЕрдВрджрд░ред рдХреИрд╕реЗ nginx FastCGI рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдерд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдирдЧреЗрдВрдХреНрд╕ рдмреИрдХрдПрдВрдб рдкрд░ рд╕рд╛рдордЧреНрд░реА рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрд▓реЛрдб рдХреЗ рджреМрд░рд╛рди рдмрдлрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рд╕рдорд╕реНрдпрд╛рдПрдВ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдпрд╛ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рд▓реЗрдХрд┐рди, рд╕реНрд╡рд╛рдж рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреА рдмрд╛рдд рд╣реИ, nginx рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
- Apache2 рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ
100-continue HTTP response
рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд░реЗрдбреАрдореЗрдб рдкреИрдХреЗрдЬ рдпрд╣рд╛рдВ рд▓рд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред - рд╡рд╛рд░реНрдирд┐рд╢ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд░рд╛рдбреЛрд╕рдЧрд╡ рдХреЗ рд╕рд╛рде рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред рдХреЛрдИ рдХреИрд╢ рдпрд╛ рдмреИрд▓реЗрдВрд╕рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реАрдзреЗ рд╣реА рд░реЗрдбреЛрд╕рдЧреНрд╡ рдХреЛ рдкреЛрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ backend radosgw1 { .host = "radosgw1"; .port = "8080"; .probe = { .url = "/"; .interval = 2s; .timeout = 1s; .window = 5; .threshold = 3; } } backend radosgw2 { .host = "radosgw2"; .port = "8080"; .probe = { .url = "/"; .interval = 2s; .timeout = 1s; .window = 5; .threshold = 3; } } director cephgw round-robin { { .backend = radosgw1; } { .backend = radosgw2; } }
- рдкреНрд░рддреНрдпреЗрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЕрдкрдиреА рдмрд╛рд▓реНрдЯреА рд╣реЛрддреА рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдПрд╕рдПрд▓ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ, рдЖрдк рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдмрд╛рд▓реНрдЯреА рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд╕рднреА рд░рд╕реЛрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╣рдо
python-boto
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ python-boto
ред рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рд╕рд╛рд╡рдзрд╛рдиреА, рдЗрдВрдбреЗрдВрдЯреЗрд╢рди) рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдмрд╛рд▓реНрдЯреА рдореЗрдВ рд╕рдм рдХреБрдЫ рднрд░ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдмреИрдЪ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдЬрдЧрд░ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реИрдВ - рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЕрдиреНрдп рд▓реЛрдХрдкреНрд░рд┐рдп рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ - рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, рд░рд╛рдбреЛрд╕рдЧрд╡ рдмрд╣реБрдд рдмрд╛рддреВрдиреА рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд▓реЛрдб рдХреЗ рддрд╣рдд, рдмрдбрд╝реА рд▓реЙрдЧ рдлрд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд▓реЛрдб рдХреЗ рддрд╣рдд, рд╣рдордиреЗ рдЬрд░реВрд░реА рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд╕реНрддрд░ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛:
рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ[Client.radosgw.gateway]
...
debug rgw = 2
rgw рд╕рдХреНрд╖рдо ops рд▓реЙрдЧ = рдЧрд▓рдд
stderr = false рдкрд░ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ
rgw рд╕рдХреНрд╖рдо рдЙрдкрдпреЛрдЧ рд▓реЙрдЧ = рдЧрд▓рдд
...
- рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрд╝реИрдмрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╕реНрд░реЛрдд рдпрд╣рд╛рдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред
рдпрд╣ рд╕рдм рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЫрд╣ рдорд╣реАрдиреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд╛рд╕рдХ рдХреЗ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ))
рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛
рдЕрдм рдореИрдВ ~ 4-200kb рдХреА 15 рдорд┐рд▓рд┐рдпрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдФрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред S3 рдХреЗ рд╕рд╛рде, рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ - рдХреЛрдИ рдмрд▓реНрдХ-рдХреЙрдкреА рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИрдВ, рдЖрдк рд╢реБрд░реВ рдореЗрдВ рднрдВрдбрд╛рд░рдг рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд▓реНрдЯреА рдХреЛ рд╣рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдзреАрд░реЗ-рдзреАрд░реЗ рдкреАрдкреАрд╕реА рд╣реИред рдЗрд╕реЗ рдХрд╕рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВред
рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЬрд┐рдпреЛрдХреНрд▓реЗрд╕реНрдЯрд░ рд╣реИ, рд╣рдо рдЦреБрдж рд╕рд╛рдЗрдмреЗрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рднреМрдЧреЛрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдирдЬрджреАрдХреА рдмрд┐рдВрджреБ рд╕реЗ рдбреЗрдЯрд╛ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореЙрд╕реНрдХреЛ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рд╕рд╛рдордЧреНрд░реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЗрд░реА рд╕реЗ рдЙрдбрд╝рддреА рд╣реИ - 100ms рдкреНрд▓рд╕ рддрдХ, рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдЦреИрд░, рд╕рд┐рдл рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрдкрдиреА
рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рдЧрддрд╛ рд╣реИред