Журнал LinuxFormat - перейти на главную

LXF129:Eucalyptus

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(викификация, оформление, иллюстрация)
 
(Пер­вый шаг)
Строка 23: Строка 23:
 
Кто уста­но­вил ''Ubuntu Enterprise Cloud'', тот уже го­тов к его ис­пользо­ванию. Но спер­ва об­за­ве­ди­тесь пол­но­мо­чия­ми ад­минист­ра­то­ра на ин­тер­фей­се:
 
Кто уста­но­вил ''Ubuntu Enterprise Cloud'', тот уже го­тов к его ис­пользо­ванию. Но спер­ва об­за­ве­ди­тесь пол­но­мо­чия­ми ад­минист­ра­то­ра на ин­тер­фей­се:
  
{{Врезка|Содержание=[[Изображение:LXF128_85_1.jpg|300px]] Ус­та­но­ви­те образ на ва­ше об­ла­ко с Ubuntu Cloud Store.|Ширина=300px}}
+
{{Врезка|Содержание=[[Изображение:LXF129_85_1.jpg|300px]] Ус­та­но­ви­те образ на ва­ше об­ла­ко с Ubuntu Cloud Store.|Ширина=300px}}
  
 
  cluster:~$ mkdir ~/.euca
 
  cluster:~$ mkdir ~/.euca

Версия 05:12, 8 апреля 2011

Hardcore Linux Проверьте себя на крутом проекте для продвинутых пользователей

Содержание

UEC: За­ве­дем себе лич­ное об­ла­ко

Жа­ж­де­те за­пус­тить «вы­чис­ли­тель­ное об­ла­ко» на соб­ст­вен­ном обо­ру­до­ва­нии? Ко­эн Верв­лое­сем так и ду­мал; чи­тай­те ста­тью и рас­ши­ряй­те свой кру­го­зор...

С Ubuntu 9.04 Canonical пред­ста­ви­ла воз­мож­ность за­пуска сво­его лич­но­го об­ла­ка сер­ве­ров с вир­ту­аль­ны­ми ма­шина­ми (ВМ). Для этой це­ли ком­пания по­ра­бо­та­ла со­вме­стно с про­ек­том Eucalyptus. Eucalyptus – это «об­лач­ная» ин­фра­структу­ра, со­вмести­мая с Amazon EC2 API. Од­на­ко в Jaunty Eucalyptus был все­го лишь тех­но­ло­ги­че­ской про­бой пе­ра и имел ряд ше­ро­хова­то­стей, что­бы не ска­зать ху­же.

В Karmic Koala Eucalyptus ин­тег­ри­ро­ван в ди­ст­ри­бу­тив под именем Ubuntu Enterprise Cloud (UEC). Ин­стал­ли­ро­вать Ubuntu Enterprise Cloud мо­жно пря­мо с ди­ст­ри­бу­тив­но­го CD Ubuntu Server. Бо­лее того, Canonical вы­пусти­ла об­ра­зы UEC для Ubuntu 9.10 Server, и его не толь­ко мож­но за­пустить на ва­шем лич­ном об­ла­ке, но так­же и на Amazon EC2, без вся­ких из­менений. Это очень уп­ро­ща­ет хостинг об­ра­зов на ва­шем лич­ном об­ла­ке и вы­груз­ку их на EC2, когда на­груз­ка на ва­ши сер­ве­ры станет слиш­ком боль­шой.

Про­верь­те обо­ру­до­вание

Пре­ж­де чем на­страи­вать об­ла­ко, да­вай­те сде­ла­ем пау­зу и взглянем на тре­бо­вания. Нам нуж­ны как минимум две систе­мы: фронталь­ный ком­пь­ю­тер-ин­тер­фейс [front-end] и один или бо­лее узлов [nodes]. На ин­тер­фей­се бу­дут ра­бо­тать кон­трол­лер об­ла­ка, кон­трол­лер кла­сте­ра, хранили­ще ти­па Amazon S3 (из­вест­ное как Walrus) и его кон­трол­лер. Та­кое ко­ли­че­ство сер­ви­сов на од­ной машине по­тре­бу­ет доста­точ­но мощ­но­го ком­пь­ю­те­ра (см. таб­ли­цу аппа­рат­ных тре­бо­ваний. Бы­ст­рый про­цес­сор и же­ст­кий диск, доста­точ­но ско­ро­ст­ной и вме­сти­тель­ный для хранения обра­зов и кэ­ша, бу­дут са­мы­ми важ­ны­ми тре­бо­вания­ми.

Уз­лы – это систе­мы, на ко­то­рых бу­дут за­пускать­ся вир­ту­альные ма­ши­ны. На их про­цес­со­рах, пред­поч­ти­тель­но 64‑бит­ных и мно­го­ядер­ных, долж­но быть вклю­че­но рас­ши­рение VT: 64‑битный узел Eucalyptus мо­жет ра­бо­тать и в ре­жи­ме i386, и amd64, но по умол­чанию Eucalyptus по­зво­лит за­пустить толь­ко од­ну ВМ на яд­ро про­цес­со­ра уз­ла. Уз­лы так­же долж­ны быть от­но­си­тельно при­лич­но осна­ще­ны, так как на них бу­дет ид­ти ин­тен­сив­ная ра­бо­та с диском.

Тре­тий ком­понент, про ко­то­рый нель­зя за­бы­вать – сеть: вирту­аль­ные ма­ши­ны по­треб­ля­ют ты­ся­чи ме­га­байт диско­во­го простран­ства, и все это ко­пи­ру­ет­ся с фрон­таль­но­го ком­пь­ю­те­ра на уз­лы при их за­пуске. 100‑Мбит­ная сеть бу­дет ра­бо­тать, но тогда для стар­та ВМ по­тре­бу­ет­ся несколь­ко ми­нут. Что­бы по­лу­чить го­тов­ность ВМ на ва­шем об­ла­ке сра­зу же по­сле вклю­чения, нужна ги­га­бит­ная сеть.

Пер­вый шаг

Кто уста­но­вил Ubuntu Enterprise Cloud, тот уже го­тов к его ис­пользо­ванию. Но спер­ва об­за­ве­ди­тесь пол­но­мо­чия­ми ад­минист­ра­то­ра на ин­тер­фей­се:


cluster:~$ mkdir ~/.euca
cluster:~$ chmod 700 ~/.euca
cluster:~$ cd ~/.euca
cluster:~/.euca$ sudo euca_conf --get-credentials mycreds.zip
cluster:~/.euca$ unzip mycreds.zip
cluster:~/.euca$ cd

Это обес­пе­чит со­хранение всех ре­к­ви­зи­тов в ди­рек­то­рии .euca ва­ше­го до­машнего ка­та­ло­га. Что­бы быть го­то­вым по­иг­рать с ва­шим об­ла­ком, вы долж­ны под­гру­зить кон­фи­гу­ра­ци­он­ный файл eucarc, ко­то­рый на­страи­ва­ет все необ­хо­ди­мые Eucalyptus пе­ре­мен­ные ок­ру­жения, коман­дой source:

cluster:~$ source ~/.euca/eucarc

Ес­ли вы хо­ти­те, что­бы это про­ис­хо­ди­ло ка­ж­дый раз при вашем вхо­де в сис­те­му, про­пи­ши­те дан­ные стро­ки в кон­це фай­ла ~/.bashrc.

Для про­вер­ки пра­виль­но­сти всех на­стро­ек, за­про­сим дан­ные о дос­туп­но­сти ва­ше­го лич­но­го об­ла­ка:

cluster:~$ euca-describe-availability-zones verbose
AVAILABILITYZONE		 zoo	 192.168.1.140
AVAILABILITYZONE		 |- vm types		 free /
max	 cpu	 ram	 disk
AVAILABILITYZONE		 |- m1.small		 0004 /
0004	 1	 128	 2
AVAILABILITYZONE		 |- c1.medium	 0004 /
0004	 1	 256	 5
AVAILABILITYZONE		 |- m1.large		 0002 /
0002	 2	 512	 10
AVAILABILITYZONE		 |- m1.xlarge	 0002 /
0002	 2	 1024	 20
AVAILABILITYZONE		 |- c1.xlarge		 0001 /
0001	 4	 2048	 20

Ес­ли вы­во­дит­ся нечто вро­де это­го, ва­ше лич­ное об­ла­ко ра­бота­ет! Имя zoo со­от­вет­ству­ет то­му, что мы да­ли на­ше­му об­ла­ку при на­строй­ке фрон­таль­ной ма­ши­ны, а 192.168.0.140 – это ее IP-ад­рес. И то, и дру­гое в ва­шей уста­нов­ке мо­жет от­ли­чать­ся. Бо­лее ин­те­рес­ная часть – это спи­сок ти­пов ВМ. В нем по­ка­за­но, сколь­ко ВМ ка­ж­до­го ти­па вы мо­же­те за­пустить на ва­шем об­ла­ке. Это зави­сит от чис­ла и мощ­но­сти ва­ших уз­лов. В дан­ном при­ме­ре выво­да по­ка­за­но мое сла­бень­кое лич­ное об­ла­ко, спо­соб­ное управиться толь­ко с че­ты­рьмя неболь­шими ВМ. Но ес­ли я до­ку­п­лю дополнитель­ный ком­пь­ю­тер, уста­нов­лю и за­ре­ги­ст­ри­рую его как вто­рой узел UEC в мо­ем об­ла­ке, их чис­ло, бла­го­да­ря гиб­кости об­ла­ка, воз­растет ав­то­ма­ти­че­ски.

Про­стей­шим спо­со­бом уста­но­вить об­раз UEC и за­пустить его на ва­шем об­ла­ке яв­ля­ет­ся встро­ен­ный web-ин­тер­фейс. Пе­рей­дите на https://192.168.1.140:8443 (из­менив IP-ад­рес на пра­виль­ный) и вой­ди­те с ре­к­ви­зи­та­ми admin/admin. На сле­дую­щей странице измените этот па­роль по умол­чанию и вве­ди­те свой ад­рес элек­тронной поч­ты: он бу­дет ис­поль­зо­вать­ся для со­об­щений.

На­хо­дясь в web-ин­тер­фей­се, на­жми­те на вклад­ку Store [Хранили­ще]. Вам предъ­я­вят спи­сок офи­ци­аль­ных об­ра­зов, кото­рые Canonical пред­ла­га­ет для за­пуска на Ubuntu Enterprise Cloud. На мо­мент напи­сания ста­тьи этот спи­сок был ог­раничен 32‑и 64‑бит­ны­ми вер­сия­ми Ubuntu 9.10 RC Server и де­мон­ст­ра­ци­онным MediaWiki. Щелкните на Install [Уста­но­вить] у вы­бран­но­го образа. Когда он ска­ча­ет­ся и уста­но­вит­ся, на­жми­те на ‘How to run?’, что­бы уви­деть необ­хо­ди­мые для за­пуска коман­ды, ко­то­рые нужно вве­сти в команд­ной стро­ке. Об­раз те­перь так­же бу­дет ото­бражать­ся в вклад­ке Image, ко­то­рая по­ка­зы­ва­ет все об­ра­зы, доступные для за­пуска на ва­шем об­ла­ке.

Шаг за ша­гом: Ус­та­но­вим Ubuntu Enterprise Cloud

Шаг 1

  • 1 Ус­та­но­ви­те ин­тер­фейс
Ска­чай­те ISO-об­раз Ubuntu 9.10 Server и за­пи­ши­те его на CD. Нач­ни­те ин­стал­ля­цию на фрон­таль­ной ма­ши­не. Вы­бе­ри­те ‘Install Ubuntu Enterprise Cloud’ в за­гру­зоч­ном ме­ню. В от­вет на во­прос ус­та­нов­щи­ка о ре­жи­ме ус­та­нов­ки об­ла­ка, вы­бе­ри­те ‘Cluster’ [Кла­стер], вве­ди­те имя свое­го кла­сте­ра и за­дай­те диа­па­зон не­ис­поль­зуе­мых IP-ад­ре­сов в ва­шей ло­каль­ной се­ти, ко­то­рые ин­терфейс мо­жет на­зна­чать вир­ту­аль­ным ма­ши­нам, ви­да 192.168.1.150–192.168.1.249. По­сле ус­та­нов­ки, пе­реза­гру­зи­те фрон­таль­ную ма­ши­ну и об­но­ви­те па­ке­ты на ней до по­след­них вер­сий:
cluster:~$ sudo apt-get update
cluster:~$ sudo apt-get upgrade

Шаг 2

  • 2 Ус­та­но­ви­те узел(ы)
Ус­та­нов­ка уз­лов еще про­ще. Про­сто убе­ди­тесь, что вы под­клю­че­ны к той же се­ти, что и фрон­таль­ный ком­пью­тер, ко­то­рый дол­жен быть за­пу­щен. Ес­ли вы вы­бере­те ‘Install Ubuntu Enterprise Cloud’ в ме­ню за­груз­ки, ма­ши­на об­на­ру­жит его в се­ти и вы­бе­рет ре­жим ус­танов­ки об­ла­ка ‘Node’ [Узел]. В про­цес­се ус­та­нов­ки не бу­дет за­да­но ни­ка­ких во­про­сов про UEC. По­сле ус­та­нов­ки, пе­ре­за­гру­зи­те узел и об­но­ви­те его:
node:~$ sudo apt-get update
node:~$ sudo apt-get upgrade
По­вто­ри­те про­цесс для ка­ж­до­го уз­ла ва­ше­го об­раза.

Шаг 3

  • 3 За­ре­ги­ст­ри­руй­те узел(ы)
По­сле ус­та­нов­ки фрон­таль­но­го ком­пь­ю­те­ра и всех уз­лов нуж­но за­ре­ги­ст­ри­ро­вать по­след­ние на ин­тер­фей­се. Вой­ди­те в не­го и за­пус­ти­те про­цесс ре­ги­ст­ра­ции:
cluster:~$ sudo euca_conf --no-rsync --discover-nodes
Ес­ли все прой­дет хо­ро­шо, ин­тер­фейс ис­сле­ду­ет все уз­лы в од­ной ло­каль­ной се­ти и по­про­сит вас под­твер­дить ре­ги­ст­ра­цию ка­ж­до­го уз­ла по его IP-ад­ре­су. По­сле это­го лич­ное об­ла­ко го­то­во к ис­поль­зо­ва­нию.

Соз­да­ем свой об­раз

Бо­лее тру­до­ем­ким, но все рав­но про­стым спо­со­бом уста­нов­ки образа яв­ля­ет­ся его са­мо­стоя­тель­ная сбор­ка и за­груз­ка. Од­на­ко если вы ска­чае­те вет­ку uec-tools с Launchpad (https://code.launchpad.net/~ubuntu-on-ec2/ubuntu-on-ec2/uec-tools), то мо­же­те ис­пользо­вать скрипт register-uec-tarball, ав­то­ма­ти­зи­рую­щий этот процесс. На­при­мер, мож­но ска­чать офи­ци­аль­ный об­раз Ubuntu UEC c  http://uec-images.ubuntu.com/releases/karmic/release на фронталь­ный ком­пь­ю­тер и за­тем по­местить его в свое об­ла­ко все­го одной коман­дой:

cluster:~$ ./register-uec-tarball ubuntu-9.10-uec-amd64.tar.gz ubuntu-9.10-uec-release-amd64

Она рас­па­ку­ет ар­хив tar.gz, со­бе­рет яд­ро в Eucalyptus Kernel Image (EKI), а Ram-диск – в Eucalyptus Ramdisk Image (ERI), и напосле­док раз­местит сам об­раз в Eucalyptus Machine Image (EMI). Весь про­цесс зай­мет несколь­ко ми­нут.

По­сле это­го три об­раза бу­дут доступ­ны че­рез web-ин­тер­фейс во вклад­ке Images. Вы так­же мо­же­те про­ве­рить их доступ­ность из команд­ной стро­ки:

cluster:~$ euca-describe-images
IMAGE	 eri-46A316D1	 ubuntu-9.10-uec-release-
amd64/karmic-uec-amd64-initrd-virtual.manifest.xml	 admin
available		 public	 x86_64	 ramdisk
IMAGE	 emi-3F2F123F	 ubuntu-9.10-uec-release-
amd64/karmic-uec-amd64.img.manifest.xml	 admin
available		 public	 x86_64	 machine
IMAGE	 eki-63D61762	 ubuntu-9.10-uec-release-
amd64/karmic-uec-amd64-vmlinuz-virtual.manifest.xml
admin	 available	 public	 x86_64	 kernel

За­пус­ка­ем свои движ­ки

Те­перь-то и пой­дет по­те­ха! Мы за­пус­тим на на­шем об­ла­ке не­сколь­ко ВМ. Но для это­го на­до спер­ва соз­дать SSH-ключ и от­крыть порт 22 для бу­ду­щих эк­зем­п­ля­ров.

cluster:~$ euca-add-keypair mykey > ~/.euca/mykey.priv
cluster:~$ chmod 600 ~/.euca/mykey.priv
cluster:~$ euca-describe-groups # без это­го, как ни стран­но, сле­дую­щая ко­ман­да за­вер­ша­ет­ся с ошиб­кой
cluster:~$ euca-authorize default -P tcp -p 22 -s 0.0.0.0/0

Ключ со­хра­нит­ся в фай­ле mykey.priv, так что сде­лать это нуж­но толь­ко один раз. Те­перь за­пус­ти­те эк­зем­п­ляр ВМ ти­па c1.medium, ис­поль­зуя ID EMI, най­ден­ный в вы­во­де euca-describe-images:

cluster:~$ euca-run-instances -k mykey emi-3F2F123F -t c1.medium
RESERVATION	 r-46DE0817	 admin	 admin-default
INSTANCE	 i-40A607C3	 emi-3F2F123F
0.0.0.0 0.0.0.0 pending mykey 2009-11-01T17:34:41.822Z
eki-63D61762	 eri-46A316D1

По­до­ж­ди­те, по­ка со­стоя­ние не сме­нит­ся с pending на running. В за­ви­си­мо­сти от ско­ро­сти ва­шей се­ти, это мо­жет за­нять не­сколько ми­нут для пер­во­го за­пус­кае­мо­го эк­зем­п­ля­ра. Из­ме­не­ния состоя­ния мож­но на­блю­дать с по­мо­щью ко­ман­ды с уме­ст­ным именем – watch:


cluster:~$ watch -n 5 euca-describe-instances
RESERVATION	 r-46DE0817	 admin	 default
INSTANCE		 i-40A607C3	 emi-3F2F123F
192.168.1.150	 172.19.1.2		 running	 mykey 0
c1.medium 2009-11-01T17:34:41.822Z zoo eki-63D61762 eri-46A316D1

Ко­гда эк­зем­п­ляр бу­дет в со­стоя­нии running, по­смот­ри­те на первый IP-ад­рес, упо­мя­ну­тый в вы­во­де euca-describe-instances: это пуб­лич­ный IP-ад­рес. За­тем вы смо­же­те зай­ти в не­го с име­нем ubuntu и ра­нее соз­дан­ным SSH-клю­чом:

cluster:~$ ssh -i ~/.euca/mykey.priv ubuntu@192.168.1.150

Те­перь вы ра­бо­тае­те на сер­ве­ре в ва­шем лич­ном об­ла­ке! При жела­нии за­вер­шить ра­бо­ту дан­ной ВМ, вы смо­же­те это сде­лать, исполь­зуя пра­виль­ный ID эк­зем­п­ля­ра:

cluster:~$ euca-terminate-instances i-40A607C3

Пре­доставь­те об­ла­ко дру­гим

Ес­ли вы ак­ку­рат­но сле­до­ва­ли на­шим ин­ст­рук­ци­ям, то те­перь имее­те свое лич­ное об­ла­ко; но есть ве­ро­ят­ность, что вы не соби­рае­тесь де­лать его еди­но­лич­ным. Воз­мож­но, вы ис­поль­зуе­те Ubuntu Enterprise Cloud в ма­лом бизнесе и хо­ти­те, что­бы ва­ши колле­ги то­же по­жи­ви­лись об­ла­ком. К сча­стью, управ­ление досту­пом поль­зо­ва­те­лей в Ubuntu Enterprise Cloud так­же неслож­но. Просто ска­жи­те ва­шим кол­ле­гам зай­ти на https://192.168.1.140:8443/ (или на долж­ный IP-ад­рес фрон­таль­но­го ком­пь­ю­те­ра) и кликнуть на ‘Apply’ [При­менить]. За­тем они долж­ны вве­сти имя пользо­ва­те­ля, па­роль и немно­го ин­фор­ма­ции о се­бе, та­кой как имя и ад­рес элек­трон­ной поч­ты. По­сле это­го, клик­нув на ‘Sign up’ [Ре­ги­ст­ра­ция], они по­шлют ад­минист­ра­то­ру об­ла­ка со­об­щение о сво­ем запро­се.

Ес­ли при уста­нов­ке фрон­таль­но­го ком­пь­ю­те­ра вы пра­виль­но на­строи­ли поч­то­вый сер­вер, то по­лу­чи­те от ва­ших кол­лег письмо с за­про­сом учет­ной запи­си. За­тем они по­лу­чат по поч­те от­вет с под­твер­ждением за­про­са. Ва­ши но­вые поль­зо­ва­те­ли мо­гут теперь зай­ти в web-ин­тер­фейс ин­тер­фей­са UEC, ис­поль­зуя за­данные имя поль­зо­ва­те­ля и па­роль. Клик­нув на ‘Download Credentials’ [Ска­чать ре­к­ви­зи­ты], они по­лу­чат zip-файл. По­сле его рас­па­ковки они уви­дят при­мер­но то же со­дер­жи­мое, что и мы в на­ча­ле этой ста­тьи. При­менив source к фай­лу eucarc, до­ба­вив SSH-ключ и авто­ри­зо­вав SSH, они смо­гут за­пускать но­вые эк­зем­п­ля­ры и за­ходить в них, как опи­са­но вы­ше.

Бу­ду­щее Ubuntu: в об­ла­ках?

На­чи­ная с Ubuntu 9.10, Canonical пред­ла­га­ет кон­суль­та­ции, он­лайн-обу­чение, под­держ­ку и ин­ст­ру­мен­ты управ­ления, и ес­ли вы за­хо­ти­те ис­поль­зо­вать Ubuntu Enterprise Cloud в ва­шей ком­пании, в про­фессио­наль­ном сер­ви­се недостат­ка не бу­дет. В этом го­ду мы уви­дим в Cloud Store боль­ше об­ра­зов, в том чис­ле ком­мер­че­ских.

Од­на­ко осно­ва все­гда бу­дет сво­бод­ной. Как обыч­но, имеет­ся пре­крас­ная он­лайн-до­ку­мен­та­ция (на https://help.ubuntu.com/community/UEC). И ес­ли вам нра­вит­ся Ubuntu на EC2, а про­цес­со­ры ва­ше­го соб­ствен­но­го обо­ру­до­вания недог­ру­же­ны, Ubuntu Enterprise Cloud бу­дет хо­ро­шим вы­бо­ром. Оно пол­но­стью функ­цио­наль­но, ес­ли вы го­то­вы по­тра­тить на него неко­то­рое время. И если вы сравните этот урок с пре­ды­ду­щим, про Ubuntu на EC2, то уви­ди­те, что осно­вы их оди­на­ко­вы, так что ваш опыт с EC2 или Eucalyptus уд­во­ил­ся!

Что та­кое Amazon EC2?

Amazon’s Elastic Compute Cloud (EC2) – это гиб­кая аль­тер­на­ти­ва тра­ди­ци­он­но­му хос­тингу. По су­ще­ст­ву, это не бо­лее чем пач­ка серве­ров, за­пу­щен­ных в ВМ под ги­пер­ви­зо­ром Xen. Но спо­соб ва­шей ра­бо­ты с ни­ми по-настоя­ще­му ги­бок: вы мо­же­те за­пус­тить соб­ствен­ные ВМ за па­ру ми­нут и столь же бы­ст­ро ос­та­но­вить их, и пла­та за все это бу­дет ба­зиро­вать­ся на трех па­ра­мет­рах: вре­ме­ни ра­бо­ты ма­шин, ге­не­ри­руе­мом се­те­вом тра­фи­ке и типе ус­та­нов­ки (от ма­лень­ких до боль­ших). Это под­лин­ные вы­чис­ле­ния по тре­бо­ва­нию: ес­ли ваш сер­вер ис­пы­ты­ва­ет пе­ре­груз­ку, вы сможе­те до­ба­вить столь­ко эк­зем­п­ля­ров, сколь­ко нуж­но. Как поль­зо­ва­тель EC2, вы мо­же­те созда­вать или ска­чи­вать так на­зы­вае­мые Amazon Machine Image (AMI). Это пред­на­стро­ен­ные паке­ты ОС и ПО, ко­то­рые мож­но ус­та­но­вить как вир­ту­аль­ные ма­ши­ны на EC2. Amazon EC2 стал де-фак­то стан­дар­том об­лач­ных вы­чис­ле­ний.

Персональные инструменты
купить
подписаться
Яндекс.Метрика