- Как завести инстансы в Google Cloud, настроить доступы и подцепить к нему Bucket Google. Howto
- Настраиваем VM Instance Google Cloud для задач машинного обучения
- 1. Создание и настройка Virtual Machine Instances
- Создаем аккаунт
- Создаем Virtual Machine и подбираем параметры
- 2. Настройка сетевых параметров
- Настройка статического IP
- Настройка брандмауэра.
- 3. Установка Anaconda и дополнительных пакетов
- 4. Настройка Jupyter Notebook
- 5. Настройка File Transfer
Как завести инстансы в Google Cloud, настроить доступы и подцепить к нему Bucket Google. Howto
Добра всем читающим!
Этот хау-ту размещаю по горячим следам с целью, во-первых, не забыть как делать, а во-вторых, с целью помочь кому-либо создавать инстансы в облаке Google.
Решаемые задачи:
- три инстанса в разных регионах зоны Европа
- общий диск для двух инстансов
- балансировщик нагрузки по http
- облачная база MySQL
- из третьего инстанса выкладывать файлы в Bucket Google
Вопрос: «А почему cloud.google?» оставим на совести заказчика. Мопед был не мой, я только разбирался с новой для себя системой управления VPS. А предлагается там следующее (излагаю тезисно):
- App Engine — Сервис для приложений и совместной работы с кодом. Кому интересно документация
- Compute Engine — собственно VPS, диски к ним, файрволл(ы), баласировщики (про них дальше, до сих пор в недоумении почему их два), управление снапшотами и квотами
- Networking — Cloud DNS от Google и VPN
- Storage — облачное хранилищие, хранилище данных и облачный SQL (MySQL)
- BigData — нечто сверхпростое и мне совершенно неясное
Воспользовался разделом Compute Engine, Storage, Networking, Storage.
Разворачивать любую виртуальную машину начинаю с проектирования диска под нее. Ниже скрин:
На скриншоте открыты области, в которых можно создать диск. Нас интересует Европа. Обращаю внимание, указано что датацентр «a» в Европе будет закрыт. Пытливый читатель может поискать расположение центров b,c и d фактически, меня вопрос физического расположения волнует мало.
В моем аккаунте можно создать «Standard Persistent Disk» максимальным размером до 240 Gb. Примитивный тест скорости чтения/записи диска ниже:
Тип исходника для диска (Source Type): Image, Snapshot, Blank соответственно предустановленный образ ОС, из снапшота системы или пустой диск.
Лично меня интересовал Debian, кроме него Google предлагает развернуть CentOS, CoreOS, OpenSUSE, Ubuntu, RHEL, Sles и Windows Server 2008.
Создал диск на 10 Гб с Debian Wheezy в области «B» и «C» Europe. Потом в области «C» удалил. Задача состоит в том, чтобы развернуть рабочий сервер и сделать его зеркало. А раз так, то диск в области «C» будем разворачивать из снапшота диска в области «B».
Теперь создаем сам инстанс:
Список возможных (доступных мне) вариантов VPS, правда он прикрывает выбор вариантов файрволла дефолтных у google: HTTP Traffic и HTTPS Traffic
Отмечаем оба варианта, идем дальше — выбираем Exiting Disk и говорим какой из дисков подключить к машине. Надо сказать, что второй диск когда я цеплял к инстансу, то все было сделано «на горячую» — появился /dev/sdb, который я успешно разбил и примонтировал не перезагружая инстанс.
Кстати диск во время удаления инстанса можно удалить: необходимо выделить соответствующий пункт ниже выбора типа диска.
Раздел Networking при создании доступен только IP адрес — внутренняя сеть или прилепим белый IP.
Кстати, ISPanel до сих пор не понимает, что есть Amazon, Google и прочие сервисы, у которых не прописывается IP адрес в настройки сети. Установка и лицензирование панели усложняются ожиданием техподдержки или созданием виртуального интерфейса с нужным ISPanel адресом. Ну неудобно же!
Когда инстанс создан можно зайти в его настройки и увидеть:
И озадачится вопросом: «а как получить доступ по SSH?». Вот собственно я изучал предмет минут 30, вышло следующее:
В блоке управления SSH ключами вводится ключ, сгенерированый, например, PuttyGen.
а) Запускаем
б) нажимаем Generate
в) болтаем мышью
г)получаем ключ
д)меняем Key Comment на имя пользователя
е) Save public key
ж) Save private key — не защищаем паролем файл
з) Copy/Paste из окна в SSH Keys строку вида ssh-rsa ABRAKADABRA dmitry
Если мы прилепили белый IP, то можно идти авторизовываться именем пользователя в созданном инстансе (в Putty файл ключа указывается в настройках: Connection->SSH->Auth). А можно зайти в консоль через веб-интерфейс из гугла (вверху кнопка SSH). А еще наверное можно настроить VPN из соответствующего раздела для доступа к закрытому серверу, не пробовал.
Оказалось проще простого:
- Compute Engine — New Snapshot
- обзываем снапшот и выбираем нужный диск
- Create
В дисках создаем новый диск из снапшота в нужном регионе и прикручиваем его к инстансу. На этом клонирование завершено. Заняло 10 минут.
Чтобы создать облачный MySQL — инстанс, оптимизированный для баз данных — идем Storage -> Cloud SQL -> New. Я выбрал второй в списке: 1Gb ОЗУ, 250 Gb диск. Тестировали базу 800Мб — летает. Ну и с инстанса перенатравили ISPanel на «внешний» сервер MySQL.
Получить доступ к базам данных можно из PHP, Phyton, JAVA, console и тп. Приведу пример для PHP:
И понаделать пользователей через спец.консоль.
И дать доступы с выбранных инстансов или IP адресов.
В консоли управления Cloud SQL через кнопку EDIT можно найти привычные настройки для my.cnf.
По незнанию я создавал Bucket из веб-интерфейса, хотя проще бы было зайти в консоль сервера и создать оттуда. У Google есть API, который предустановлен в инстансах. Я воспользовался gsutil:
Сначала нужно обновится:
Ссылка была на 10 строк, я ее немного сократил. По этой ссылке мы даем доступ от пользователя Google, получаем ID, который вбиваем в verification code:
Имеем доступ, в моем случае, к Bucket. Ну или можем создать:
Это я туда файлик закинул.
Можем синхронизировать Bucket и каталог системы:
Ну и так далее и тому подобное.
Для того, чтобы примонтировать Bucket gs://zp-storage/ как каталог, необходимо воспользоваться парой сторонних утилит:
s3fuse — утилита, которая используется для аналогичных целей, например, для монтирования Amazon S3. Пишут, что с ее помощью можно монтировать Cloud Storage (google), но что-то я не нашел вразумительного конфига хотя бы с комментарием сего действа.
Из пакетов по зависимостям s3fuse не встала, собирал из исходников. Сборка идет ./configure && make && make install, а вот перечень зависимостей:
А вот gcsfs встал из пакета deb.
Необходимые изменения в conf-файлах для подключения Google Cloud Storage:
Последняя комманда запускает авторизацию через WEB по ссылке вида
accounts.google.com/o/oauth2/auth?client_idbLaBlABBBBLLLLAAAA
С получением authorization code, который необходимо ввести в строку для создания токена подключения к Storage.
Тут хаутушечке конец, кто открыл хоть один спойлер — молодец.
Большая просьба. Опираясь на предыдущий опыт написания на Habrahabre статей, прошу минусовать обоснованно. Иначе рискую никогда не понять в чем мои недочеты: в стиле изложения, в конкретике, в восприятии и изложении мной информации. За каждый коммент буду слать позитивные лучи.
UPD : Выяснилось что в инстансе Google Cloud закрыта отправка через 25 порт (и коннект к другому серверу по 25 порту). Совсем. Вместо этого предлагается использовать релейный почтовый сервер с отправкой по порту 587.
Источник
Настраиваем VM Instance Google Cloud для задач машинного обучения
Решение тяжёлых задач машинного обучения на стационарных компьютерах дело неблагодарное и малоприятное. Представьте, что вы на домашнем ноутбуке делаете ансамбль из N нейронных сетей для изучения лесов Амазонки на ноутбуке. Сомнительное удовольствие, тем более, что сейчас есть прекрасный выбор облачных сервисов для этих целей — Amazon Web Services, Google Cloud Platform, Microsoft Azure и прочие. Некоторые даже относительно бесплатны и предоставляют видеокарты.
Мы будем настраивать VM на Google Cloud Platform с нуля. Бонусом — стартовые 300$ на год на один gmail аккаунт. Поехали.
- Создание и настройка Virtual Machine Instances
- Настройка сетевых параметров
- Установка Anaconda и дополнительных пакетов
- Настройка Jupyter Notebook
- Настройка File Transfer
1. Создание и настройка Virtual Machine Instances
Создаем аккаунт
С первых шагов может ввести в заблуждение тот факт, что Гугл безапелляционно квалифицирует вас как юридическое лицо без права смены статуса. Это норма с недавних пор и с этим придется смириться. Далее бесстрашно указываем платежные данные, деньги без предупреждения не снимутся, даже когда будет исчерпан бесплатный лимит.
Создаем Virtual Machine и подбираем параметры
Здесь есть несколько интересных моментов. Графические процессоры есть не во всех зонах. В европейских и западно-азиатских я не нашел, в южно-американских искать не стал, поэтому выбрал восточно-американскую зону. Там их можно хоть восемь настроить с абонентской платой 5000 долларов в час. Усредняем данные и настраиваем восемь процессоров, двадцать гигабайт оперативной памяти и один графический процессор. Всё это удовольствие будет стоить 1 доллар в час.
Операционную систему можно выбрать на любой вкус. Берем понравившийся Linux дистрибутив и выставляем галочки «разрешить траффик». Настройку сети и SSH пропускаем. Их мы настроим дальше. И, наконец, один важный момент, снимите галочку с delete boot disk when instance is deleted. Это сохранит вам нервы, когда начнете создавать имейджи под разные задачи.
2. Настройка сетевых параметров
Настройка статического IP
По умолчанию внешний IP динамический. Сделаем его статическим и жить сразу станет гораздо проще. При привязке к проекту или виртуальной машине (как раз наш случай) — это бесплатно.
Настройка брандмауэра.
Jupyter Notebook — наш главный инструмент и ему будет нужен доступ к виртуальной машине. Создаем правило со следующими параметрами:
- Разрешить входящий трафик
- Указываем любой порт в разумных пределах. К примеру, 22-й не подойдет, на нем висит SSH.
- Диапазон адресов делаем по умолчанию 0.0.0.0/0 (можно поменять)
Мы создали чистую VM и в итоге у вас должно получиться примерно так:
И самое главное — не забывайте выключать VM, когда закончили работу!
3. Установка Anaconda и дополнительных пакетов
Запускаем созданный Instance, подключаемся через SSH и для установки дистрибутива Анаконды вводим в командной строке:
В конце установки не забудьте ввести «yes», чтобы прописать переменную PATH
Ставим любимые пакеты:
И переходим к настройке Jupyter Notebook.
4. Настройка Jupyter Notebook
Вводим в командную строку (порт — который вы указали в настройках брандмауэра):
И теперь один интересный момент. Если у вас всё прошло успешно, то после старта Jupiter Server в баше вы увидите примерно это:
Если перейти по ссылке, то в браузере вывалится ошибка авторизации, что совершенно очевидно. Для этого в строке браузера надо явно указать, созданный выше внешний статический IP:
Добро пожаловать на борт!
Теперь нам осталось только настроить File Transfer между нашей локальной системой и удаленной. Без этого леса Амазонки не изучить.
5. Настройка File Transfer
У нас загрузочный диск Linux и поэтому доступны четыре способа:
- Использование командной строки gcloud (private SSH keys обязательно)
- Через протокол SFTP в браузере. Это самый простой способ, не требующий SSH key и использующий нативный браузер. Обязательное условие — локальная система у вас Linux или Mac.
- Использование командной строки SDC (private SSH keys обязательно)
- Программа WinSCP для счастливых обладателей Windows (private SSH keys обязательно)
Подробно можно почитать здесь и выбрать наиболее понравившийся способ. У меня на ноутбуке Windows 10, поэтому выбор не богатый. Пойдём не самым простым путём и подробно рассмотрим четвёртый способ.
Для начала необходимо сгенерировать SSH ключи. Скачиваем дистрибутив PuTTY и устанавливаем. С его помощью будем генерить ключи.
- Открываем puttygen.exe. Появится окно, где вы можете сгенерировать ключи.
- Оставляем все параметры по умолчанию кроме поля key comment. В него вводим имя пользователя удаленной системы. Скорее всего это ваш gmail аккаунт. Важно — не вся почта, а только та часть, которая до знака @. Я сначала прочитал инструкцию по диагонали и в итоге убил полчаса на то, чтобы понять, почему WinSCP возвращал ошибку.
- Сохраняем private key — его используем в WinSCP локально.
- Копируем текстовое поле private key (убедитесь, что скопировали полностью весь текст! На скриншоте лишь его часть)
- Идем в гугловские облака и там в «Метаданные —> SSH-ключи» добавляем скопированный ключ.
Осталось совсем немного, самая приятная часть — настроить файл-менеджер WinSCP.
- Скачиваем его здесь
- Настраиваем конфигурацию. Помним, что IP — это наш статический IP удаленной системы. Имя пользователя — аналогично PuTTY.
В дополнительных настройках указываем private key и выставляем галочки как на скриншоте.
Всё! Наша боевая система готова к перевариванию тяжелых сверточных нейросетей и объемных данных.
Дополнительно хочу заметить, что использовать один Instance не очень разумно экономически. Разные задачи требуют разных ресурсов. Можно создать двенадцать виртуалок с разными настройками процессоров, памяти и графики или работать с имейджами. Экспериментируйте и любите данные.
Источник