0. Инфраструктура:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
https://www.youtube.com/watch?v=8jbx8O3wuLg&list=PLg5SS_4L6LYsxrZ_4xE_U95AtGsIB96k9 - видео материал по AWS Расположение серверов и дата центров ... Region - Географическое место расположения Availability Zone - Изолированный Дата центр (в каждом регионе как минимум их два) Пример: Region AZ Availability Zone us-west-1 (us-west-1a, us-west-1b, us-west-2c ...) us-east-2 (us-east-2a, us-west-2b, us-west-2c ...) ca-central-1 (ca-central-1a, ca-central-1b) eu-west-1 (eu-west-1a, eu-west-2b) https://aws.amazon.com/ru/about-aws/global-infrastructure/regions_az/ |
1. Сервисы / Услуги :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
0. Amazon EC2 - Elastic Clud - виртуальные сервера (инстансы) Windows \ linux 1. Elastic Load Balancing - балансировка 2. AWS Elastic Beanstalk - инструменты devops / автоматизация 3. Amazon CloudFront - как бы виртуальный кеш вашего сервера 4. Amazon CloudWatch - мониторинг вашей инфраструктуры 5. Amazon S3 - Simple storege server - хранилище по типу dropbox 6. Amazon Glacier - хранение архивов данных 7. Amazon EFS - общее хранилище для виртуальных машин 8. Amazon CloudFormation - инструменты devops \ инфраструктура в коде \ автоматизация 9. AWS OpsWorks - инструменты devops \ chef (что то типа ansible) 10. Amazon RDS - базы данных SQL, MSSQL, MySQL, postgre 11. Amazon DynamoDB - база Amazon по типу noSQL 12. Amazon Redshift - система анализа данных 13. Amazon EMR - работа с большими данными BIG DATE 14. IAM - управление пользователями (похоже на MS windows AD) 15. Amazon VPC - сеть , виртуальные сети, создание сетей, маршрутов, vpn, и т.д. 16. Amazone Route 53 - это DNS серверы, покупка доменов, добавление доменов, динамический DNS, балансировка по DNS 17. Amazon SES - Amazon Simple Email Service - почтовые сервера 18. Amazon SNS - Amazon Simple Notification Service - уведомления, почта, sms и т.д. (часто используют с Amazon CloudWatch) 19. Amazon SQS - Amazon Simple Queue Service - сервис принимает очереди сообщений для хранения |
2. Открытие бесплатного аккаунт Free Tier
1 2 |
# Внимание понадобится кредитная карта https://aws.amazon.com/ru/ |
3. Первая настройка.
1 2 3 4 5 |
Первым делом в консоле AWS идем в настройки пользователей, пишем в поиске IAM. Создаем пользователей и группы. IAM - управление пользователями (похоже на MS windows AD) MFA - это включения двух факторной аутентификации, нужно будет на телефон установить ПО. |
4. Рекомендации по windows 2016+ в AWS EC2 для быстродействия
1 2 |
Set-MpPreference -DisableRealtimeMonitoring $true - отключить антивирус мс Uninstall-WindowsFeature -Name Windows-Defender - удалить антивирус от мс |
5. EC2 при создании instance рекомендуется создавать TAG
1 2 3 |
# !!! EC2 при создании instance рекомендуется создавать TAG # !!! будет проще понять что за диски и т.д. Name WEB-SERVER |
6. Amazon linux установка apache2
1 2 3 4 |
cd /var/www - перейти в каталог веб по умолчанию sudo yum install httpd - установка sudo service httpd start - запуск сервера chkconfig on - добавить автозагрузку |
7. awc cli install ( aws console )
1 2 3 4 5 6 7 8 9 |
Ubuntu: sudo apt-get install awscli RedHat: sudo yum install awscli На windows должен быть установлен python Также на Linux и Windows можно установить через Python: pip install awscli aws --version - для проверки после установки |
8. AWS ssh подключение:
1 2 3 4 |
Для ubuntu пользователь по умолчанию ubuntu Для всех остальных unix пользователь по умолчанию ec2-user Подключатся по ssh к у вас должен быть файл pem. Генерируется при создании виртуалки. Также добавить новый \ импортировать старый можно в разделе EC2 -> Network & Security -> Key PairsNew |
9. aws cli use \ использование:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
!!! У пользователей aws два вида доступа: консоль aws и программный. !!! "Access key ID" и "Secret access key" нужен для программного доступа. Нам понадобится Access key ID и Secret access key. Мы их получаем при создании пользователя. Так же мы их можем получить в оснастке IAM -> user -> Security credentials -> Create access key !!! Внимание Secret access key подсмотреть получится только один раз при создании, если не записали придется пересоздать заново. Запускаем консоль awscli куда мы ее там поставили. Пишем: aws configure У нас попросят: Access key ID: ввести учетные данные Secret access key: ввести учетные данные регион: (можно посмотреть в оснастке EC2, или прям в ссылке https://eu-west-1.console.aws.amazon.com/ec2/v2/home?region=eu-west-1#Instances: то есть region=eu-west-1) предпочитаемый формат: yaml \ json \ text \ table Пример: ubuntu@ip-XXX-XXX-43-187:~$ aws configure AWS Access Key ID [None]: XXXXZ7IWZ3YRXZDPXXXX AWS Secret Access Key [None]: XXXXA5TUBJkE6inhXXXXMPssP6poRFixT7B7XXX Default region name [None]: eu-west-1 Default output format [None]: json Что произойдет?: В домашнем каталоге пользователя будет создан каталог .aws В каталоге .aws будет два файла: config и credentials содержимое config ubuntu@ip-XXX-XXX-43-187:~/.aws$ cat config [default] region = eu-west-1 output = json [profile reader] region = eu-west-1 output = json [profile writer] region = eu-west-1 output = json [profile pofig] region = eu-west-1 output = json содержимое credentials ubuntu@ip-XXX-XX-43-187:~/.aws$ cat credentials [default] aws_access_key_id = XXXXZ7IWZ3YRXZDPXXXX aws_secret_access_key = XXXXA5TUBJkE6inhXXXXMPssP6poRFixT7B7XXX [write] aws_access_key_id = XXXXZ7ZWZ3YRXZDPXXXA aws_secret_access_key = XXXXA5TUBJkE6inhXXXXMPssP6poRFixT7B7XXX [reader] aws_access_key_id = XXXXZ7IZZ3YRXZDPXXXZ aws_secret_access_key = XXXXA5TUBJkE6inhXXXXMPssP6poRFixT7B7XXX [pofig] aws_access_key_id = XXXXZ7IWZ3YRXZDPXXXV aws_secret_access_key = XXXXA5TUBJkE6inhXXXXMPssP6poRFixT7B7XXX Далее теперь мы можем использовать команды aws aws ec2 describe-instances - покажет все сервера в EC2 aws ec2 describe-regions - показать все регионы |
10. S3 bucket (вёдра)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
S3 - Simple Storage Service гарантируется: 99.99% availability (если файл нужен то вероятность его получения 99.99%) гарантируется: 99.999999999 durability (гарантируется что файлы не пропадут 99.999999999% и будут доступны в будущем) Используются для: Backup & Recovery Data Archiving Big Data Analytics Статические Web Sites Internet Share Drive Максимальное коли-во bucket-ов 100. Всегда можно попросить увеличить. Максимальный размер файла / объекта 5Tb Максимальный размер файла за один PUT = 5GB Большие файлы можно загружать через MultiParUpload (специальная команда) Типы хранения файлов / объектов: 1 - Amazon S3 Standart 2 - Amazon S3 Standart - infrequent Access 3 - Reduced Redundancy Storage 4 - Amazon Glacier ( ледник \ очень долгое хранение файлов \ но доступ к архиву по запросу ( может быть до 5 часов)) Что такое bucket?! По сути это просто папка. Для которой можно настроить тип хранения. Права доступа. Bucket policy - тонкая настройка прав на backet, по кнопке "Policy generator" можно генерировать политики доступа. (формат json, можно использовать спецсимволы, звездочка "*" все) Versioning \ Logging \ Static web hosting \ Tags \ Cross-region replication \ Transfer acceleration \ Events \ Requester pays Versioning - при включении появляется возможность восстановить удаленный файл - как бы резервное копирование - включается один раз на backet, отключить не возможно, можно приостановить. (для работы требуется Versioning) Cross-region replication - (Managment -> Cross-region replication) - позволяет делать репликации файлов из одного региона в другой. Реплики создаются только новых файлов. lifecycle - (Managment -> lifecycle) - позволяет настроить автоматический перенос в хранилище по дешевле (от Standart до Glacier), а так же удалять старые версии файлов и очистить хранилище Static Web Site - использовать s3 backet как веб хостинг (простой html\css) |
10. S3 bucket (вёдра) используем awscli
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
aws s3 mb s3://myb.hellow.world - создать bucket с именем myb.hellow.world (будет использоваться профиль по умолчанию default) aws s3 mb s3://myb.hellow.writer --profile=writer - создать bucket с именем myb.hellow.writer используя профиль writer aws s3 mb s3://myb.hello.writer1 --region=us-west-2 --profile=writer - создать bucket с именем myb.hello.writer1 используя профиль writer в регионе us-west-2 aws s3 ls - показать все доступные bucket aws s3 ls --profile=writer - показать все доступные bucket используя профиль writer aws s3 cp ОТКУДА КУДА - скопировать файл (можно использовать спец символы. Например точка "." - текущий каталог и т.д.) aws s3 cp 1.jpg s3://myb.hello.writer1 - скопировать файл 1.jpg в bucket с именем myb.hello.writer1 aws s3 sync . s3://myb.hellow.world - выполнить синхронизацию всех файлов из текущей директории(спец символ точка ".") с bucket с именем myb.hellow.world |
11. EC2 Виртуальные серверы (Elastic Compute Cloud)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
!!! Elastic - в aws все эластик. Изменяемый: размер, кол-во, производительность, качество, все... instance - серверы виды: Instances ---> On Demand (для тестов, дорого, следующий логичный переход это на Reserved ) Spot Requests ---> Spot Reserved Instances ---> Reserved(1-3years) (на долгий срок и дешевле на 70% при полной оплате) Dedicated Hosts ---> Вас переместят на отдельный сервер \ как бы аренда железного сервера \ полезно для ПО которое использует привязку к железу для своей защиты лицензии Scheduled Instances ---> Scheduled Reserved(daily, weekly, mounthly) !!!On Demand ---> Оплата серверов по часовая. Даже если вы его включили на 5 минут. !!!Spot ---> Ставки \ Работают по определенному времени \ договору \ деньгам \ по часовая оплата \ за последний час если такой Spot instance падает по вине aws (например поднялась цена) вы не платите !!!Reserved ---> Контракт на несколько лет(от одного до трех лет) и три вида оплаты: Оплата сейчас; Оплата частично(частями); Полная оплата(на 70% дешевле). Типы серверов: t2.nano - 1vCPUs - 0.5(GiB) RAM t2.micro - 1vCPUs - 1(GiB) RAM t2.small - 1vCPUs - 2(GiB) RAM t2.medium - 2vCPUs - 4(GiB) RAM T - General Purpose M - General Purpose C - Compute Optimized (производительнее чем T,M) F - FPGA OPtimized (что-то для программистов) G,P - GPU Optimized (сервера с видеокартами) X,R - RAM Memory Optimized (сервера на которых много оперативки) D,I - Storage Optimized !!!Тип сервера всегда можно изменить (выключаешь instance и меняешь его тип) 2 - второе поколение сервера 1vCPUs ~ 2.5Ghz (естественно не для всех типов) EBS - Elastic Block Store - диски Типы дисков / два вида / можно загружаться root-boot / нельзя загружаться other: Root-boot: General Purpose SSD (GP2) up to 10.000 iops - Быстрые Provisioned IOPS SSD (IO1) up to 20.000 iops - Очень быстрые Magnetic - медленно other: General Purpose SSD (GP2) up to 10.000 iops - Быстрые Provisioned IOPS SSD (IO1) up to 20.000 iops - Очень быстрые Cold HDD (SC1) - медленно - тот же Magnetic Throughput Optimized HDD (ST1)- медленно - тот же Magnetic только более производительный Magnetic - медленно |
12. AWS — виртуальные серверы EC2 — volume, snapshot
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Instance - виртуальный сервер Volume - HDD/SSD диск Snapshot - резервная копия volume AMI - резервная копия instance AMI - Amazon Machine image (GOLDEN COPY) Загрузится с диска snapshot не возможно. Snapshot можно подключить диском к любому instance. Для полной резервной копии(которую можно будет загрузить) нужно выполнить AMI. Snapshot можно скопировать в другой регион, подключить диск к пк. AMI - можно скопировать в другой регион и там развернуть instance. При создании AMI создаются snapshot'ы volums... |
13. bootstrapping
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
Bootstaraping - позволяет при установке Instance выполнить любой скрипт. Скрипт запускается только один раз при установке Instance. New Instance -> Configure Instance Details -> Advanced Details -> User data Для Linux (Amazon) пример скрипта bash для bootstrapping #!/bin/bash echo "---start---" yum -y update yum -y install httpd echo "<html><body> <p> hello world </p> </body> </html>" > /var/www/html/index.html service httpd start chkconfig httpd on cat netumenya.txt echo "UserData executed on $(date)" >> /var/www/html/log.txt echo "---finish---" Лог выполнения скрипта можно посмотреть в instance: less /var/log/cloud-init-output.log Для Windows это могут быть скрипты bat или ps1. Пример скрипта на powershell для bootstrap instance windows: <powershell> Write-Host "----START of PowerShell Script------" Add-WindowsFeature web-server Set-Content c:\Users\Administrator\Desktop\test.txt "UserData executed on $(Get-Data)" Rename-Computer -NewName MYCOMPUKTER Add-Content c:\User\Administrator\Desktop\test.txt "------TestFile-------" Get-Service | Out-File c:\Users\Administrator\Desktop\test.txt -Append | Format-Table Test-Connection www.google.com | Out-File c:\Users\Administrator\Desctop\test.txt -Append | Format-Table Write-Host "----END of PowerShell Script" </powershell> Лог выполнения скриптов в Windows искать тут: Windows 2019: C:\ProgramData\Amazon\EC2-Windows\Launch\UserdataExecution.log Windows 2016: C:\ProgramData\Amazon\EC2-Windows\Launch\UserdataExecution.log Windows 2012: C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt Windows 2008: C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt С каким скриптом запускался instance всегда можно посмотреть. #### раньше так было Instance -> ПКМ на Instance -> View/Change User Data Instance -> ПКМ на Instance -> Instance settings -> Edit User Data |
13. EC2 и IAM Roles \ роли
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Роли позволяют настроить различные права доступа. Роли глобальные, действуют на все регионы и instance. Роль к instance можно подключить только одну. Роль можно подключить при установке instance. AWS service - EC2, Lambda and others Another AWS account - Belonging to you or 3rd party Web identity - Cognito or any OpenID provider SAML 2.0 federation - Your corporate directory для чего \ куда дать \ какие права доступа EC2 \ S3 bucket \ S3FullAccess EC2 \ S3 bucket \ S3ReadOnly |
14. AWS IP адресация
1 2 3 4 5 6 7 |
Private IP - адрес доступный внутри сети ( внутренний \ локальный \ за маршрутизатором ) Public IP - адрес доступный в интернете (внешний) Elastic IP - адрес доступный в интернете Private IP - ПК доступен в внутренней сети vpc, постоянный и не изменяется Public IP - ПК доступен в интернете, временный, Изменяется при Stop\Start не изменяется при Reboot сервера Elastic IP - ПК доступен в интернете, постоянный и не изменяется, если создали и не прикрепили к ПК то будете платить деньги за этот IP, максимально по умолчанию у вас может быть 5 таких адресов. |
15. Данные о сервере EC2 http://169.254.169.254/lates/meta-data/
1 2 3 4 5 6 7 8 9 10 |
Можно получить данные: ami-id, ami-launch-index, ami-manifest-path, block-device-mapping/ , events/ , hibernation/, hostname, identity-credentials/, instance-action, instance-id, instance-life-cycle, instance-type, local-hostname, local-ipv4, mac, metrics/, network/, placement/, profile, public-hostname, public-ipv4, public-keys/, reservation-id, security-groups и многое другое... Примеры для linux: curl http://169.254.169.254/ curl http://169.254.169.254/lates/meta-data/ curl http://169.254.169.254/lates/meta-data/local-ipv4 curl http://169.254.169.254/latest/meta-data/mac |
16. Elastic Load Balancer
1 |
балансировка http / https трафика |
17. AWS Auto scaling Group
1 2 3 4 5 6 7 8 9 10 11 12 |
Авто клонирование серверов для улучшения производительности. Horozontal scaling Auto Scaling Group Subnet in AZ - Какие AZ использовать для запуска серверов Min - Минимальное количество Running серверов Max - Максимальное количество Running северов Desired - Желаемое текущее количество серверов (при запуске) LoadBalancer - Какой EBL присоединить ко всем серверам Scale OUT - Когда добавлять серверы Scale IN - Когда убивать серверы |