Разработка и администрированиечерез тестирование- облачный сервис «Битрикс24» в АмазонеАлександр Сербул1С-Битрикс@AlexSerbul
Наши цели• Посмотретьна AmazonWebServices(AWS)с«птичьегополета»• Научитьсяэффективноснимработать,вт.ч.наPHP• Уверенноразви...
AWS с «птичьего полета»• AmazonElasticComputeCloud(EC2)–серверыиобразы• AmazonElasticBlockStore(EBS) -внешниедиски• AutoSc...
AWS с «птичьего полета»• AmazonSimpleQueueService(SQS) -очередисообщений• AmazonSimpleNotificationService(SNS)-уведомлялка...
AWS с «птичьего полета»• AmazonCloudFront–CDNповсемумиру• AmazonRoute53–управлениеDNS• AmazonRelationalDatabaseService(RDS...
AWS с «птичьего полета»• AmazonCloudWatch–мониторинг+аналитика• AmazonVirtualPrivateCloud(VPC)–собственнаяподсетка(скласте...
AWS с «птичьего полета»Availability zone (AZ) =«датацентр»Высокоскоростныеканалы между ДЦRegion = группа связанных датацен...
AWS с «птичьего полета»Availability zone (AZ) =«датацентр»Region = группа связанных датацентровСерверы (EC2)Диски (EBS) –д...
AWS – все не так гладко• Веб-сервисывнутриархитектурноотличаютсядруготдруга,вт.ч.поподходуиAPI.Невсегдаудобностыкуются.• П...
AWS – нужно строить своеуправляющее ядро• ВнутренняясистемамониторингаCloudWatch-покаоченьограничена,уступаетнапр.Nagios/M...
AWS SDK for PHP• http://aws.amazon.com/php/• http://aws.amazon.com/sdkforphp/REST API веб-сервисов АмазонаКонсольный клиен...
AWS SDK for PHP - документацияhttp://docs.amazonwebservices.com/AWSSDKforPHP/latest/
Бэкап данных в S3/SnapshotsДиск (EBS)Файлы надиске Хранилище данных(S3 = Simple StorageService)Объекты илиснепшоты.Автомат...
Бэкап данных в S3/Snapshots• Нетинструментовочисткиустаревшихснепшотовиобразовмашин,ихнужнописать(иначеможноуперетьсявлими...
Бэкап данных в S3/Snapshots…foreach ($vols as $path => $id) {$response = $ec2->create_snapshot($id, array(Description=>"Sn...
Бэкап MySQL в S3/SnapshotsДиск (EBS)Буферы MySQL(InnoDB) в памятиUnix: ec2-consistent-snapshotили:“FLUSH TABLES WITH READL...
Балансировка/Переключение трафикаAvailability zone (AZ) =«датацентр»Region = группа связанных датацентров, SLA = 99,95%ДЦ1...
Балансировка/Переключение трафикаRegion = группа связанных датацентровДЦ1 ДЦ2Балансировщик (ELB)Группа автомасштабирования...
Балансировка/Переключение трафикаRegion = группа связанных датацентровДЦ1 ДЦ2Балансировщик (ELB)Группа автомасштабирования...
Балансировка/Переключение трафикаRegion = группа связанных датацентровДЦ1 ДЦ2Балансировщик (ELB)Группа автомасштабирования...
Балансировка/Переключение трафика• Можногибкоуправлятьтремяслужбами:ELB,AutoScaling,CloudWatch–подстраиваяфункционалподсво...
Балансировка/Переключение трафикаAWS SDK for PHP:AmazonELB:: set_load_balancer_listener_ssl_certificate ( $load_balancer_n...
Автоматическое масштабирование• ВCloudWatchсоздаемAlarm,которыйприсреднемCPU>20%вызоветдействиеподобавлениювAutoScalingGro...
Системауправления• ВCloudWatchнедостаточновозможностей,ноиспользуемегомаксимально• AWSSDKforPHPивообщеработасAPIамазонанев...
Системауправления-тестNagiosAWS SDK for PHPТестТестТестТестОбработчик событияОбработчик событияОбработчик событияCloudWatc...
Системауправления –обработчик событияNagiosAWS SDK for PHPТестТестТестТестОбработчик событияОбработчик событияОбработчик с...
ЧтомытестируемСтандартныетестыnagios:• Пинг,LA,местонадисках• Использованиеswap,числопроцессов• Мониторингraid(унас10рейды...
ЧтомытестируемБазовыетестыMySQL:• Состояниерепликации–отсутствиеошибок,величинаотставанияslaves• BufferPoolhitrate• Числоа...
ЧтомытестируемТестывременивыполнениястраницииспользованияпамятиотpinba:• Пиковоевремявыполнениястраницывирт.хоста• Пиковое...
ЧтомытестируемТестысостоянияамазонаипревышениялимитов:• Проверяемпревышенияключевыхлимитовамазона• Числоживыхмашинзабаланс...
ЧтомытестируемТестывыполнениябизнес-операцийиобработчиковсобытий:• Скриптыбэкаповиобработчикиобновляютлог-файл(проверкавре...
Администрирование через тестированиеПереддобавлениемлюбогосервисаилиобработчикавобязательномпорядке:• Добавляетсятестнапро...
ОбработчикиОбработчикистараютсявернутьсистемуврабочеесостояние:• Принедоступностиmemcached(ов)делаетсявременноепереключени...
Pacemaker/HeartbeatvsNagiosБылонесколькобезуспешныхподходовпонятьстройностьикрасоту–Pacemaker/Heartbeat.Документация–ужасн...
Архитектура «Битрикс24»(www.bitrix24.ru)ДЦ1 ДЦ2Балансировщики (ELB)Группаавтомасштабирования(AutoScaling)Мониторинг (Cloud...
Спасибо за вниманиеАлександр Сербул1С-Битриксserbul@1c-bitrix.ru@AlexSerbulПопробуйте http://www.bitrix24.ru12 человек/5ГБ...
Upcoming SlideShare
Loading in …5
×

Разработка и Администрирование через тестирование - облачный сервис

339 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
339
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Разработка и Администрирование через тестирование - облачный сервис

  1. 1. Разработка и администрированиечерез тестирование- облачный сервис «Битрикс24» в АмазонеАлександр Сербул1С-Битрикс@AlexSerbul
  2. 2. Наши цели• Посмотретьна AmazonWebServices(AWS)с«птичьегополета»• Научитьсяэффективноснимработать,вт.ч.наPHP• Уверенноразвиватьфункционал,неотставаяотрынка• Держатьсозданнуюсистемуподпостояннымконтролем• Изучитьрезультат- сервис«Битрикс24» -изнутри
  3. 3. AWS с «птичьего полета»• AmazonElasticComputeCloud(EC2)–серверыиобразы• AmazonElasticBlockStore(EBS) -внешниедиски• AutoScaling–масштабирование(отнагрузкиит.д.)• ElasticLoadBalancing-балансировщики• AmazonSimpleStorageService(S3)–облачноехранилищеУправляемыйизкодахостингсмножествомреализованныхEnterprise-паттернов:
  4. 4. AWS с «птичьего полета»• AmazonSimpleQueueService(SQS) -очередисообщений• AmazonSimpleNotificationService(SNS)-уведомлялка• AmazonSimpleEmailService(SES)–рассылкипочты• AWSIdentityandAccessManagement(IAM)–управлениеучетками
  5. 5. AWS с «птичьего полета»• AmazonCloudFront–CDNповсемумиру• AmazonRoute53–управлениеDNS• AmazonRelationalDatabaseService(RDS)–MySQLсslavesиauto-failover• AmazonDynamoDB,AmazonSimpleDB-NoSQL• AmazonElastiCache -«неубиваемый»memcached
  6. 6. AWS с «птичьего полета»• AmazonCloudWatch–мониторинг+аналитика• AmazonVirtualPrivateCloud(VPC)–собственнаяподсетка(скластерами)Полезныхсервисовмного,готовыепаттерныпозволяютпростомасштабироватьсяиобеспечиватьнеплохуюотказоустойчивость(SLAдо99,95%).
  7. 7. AWS с «птичьего полета»Availability zone (AZ) =«датацентр»Высокоскоростныеканалы между ДЦRegion = группа связанных датацентров
  8. 8. AWS с «птичьего полета»Availability zone (AZ) =«датацентр»Region = группа связанных датацентровСерверы (EC2)Диски (EBS) –доступнытолько внутридатацентраСнепшоты дисковОбразы серверовДанные в облаке (S3)Учетки (IAM)Балансировщикии др. –реплицируются«между»датацентрами, науровне региона
  9. 9. AWS – все не так гладко• Веб-сервисывнутриархитектурноотличаютсядруготдруга,вт.ч.поподходуиAPI.Невсегдаудобностыкуются.• Прослеживаетсяэволюцияархитектур–например«наслоенияконцепций»вIAM/S3• Имеютсянеочевидные«жесткие»ограниченияилимиты–напримерчислоучетоквIAM(<=5000)
  10. 10. AWS – нужно строить своеуправляющее ядро• ВнутренняясистемамониторингаCloudWatch-покаоченьограничена,уступаетнапр.Nagios/Munin• Измерениявнутримашин(top)иизCloudWatch–могутотличатьсявразы(CPU,LA,др.)• Нередко«соседи»навиртуальноймашиневнезапновлияютнапроизводительность(CPUStolen%)Нужнонаучитьсядержатьконфигурациюподконтролем,автоматизировавмаксимумопераций.
  11. 11. AWS SDK for PHP• http://aws.amazon.com/php/• http://aws.amazon.com/sdkforphp/REST API веб-сервисов АмазонаКонсольный клиент для unix,написан на javaAWS SDK for PHPSSL (как правило)Библиотека,документация,примеры (2.1М)
  12. 12. AWS SDK for PHP - документацияhttp://docs.amazonwebservices.com/AWSSDKforPHP/latest/
  13. 13. Бэкап данных в S3/SnapshotsДиск (EBS)Файлы надиске Хранилище данных(S3 = Simple StorageService)Объекты илиснепшоты.Автоматически:консолидациябэкапов, сохранениетолько инкрементовUnix: s3tools, s3fsAWS SDK for PHP:AmazonS3::create_object ( $bucket,$filename, $opt ) и др.AWS SDK for PHP:AmazonEC2::create_snapshot ( $volume_id,$opt )Машина сдискамиAWS SDK for PHP:AmazonEC2::create_image ( $instance_id,$name, $opt )
  14. 14. Бэкап данных в S3/Snapshots• Нетинструментовочисткиустаревшихснепшотовиобразовмашин,ихнужнописать(иначеможноуперетьсявлимит).• Нужнописатьоболочку,дляповторанеудавшихсяопераций,логированияит.п.
  15. 15. Бэкап данных в S3/Snapshots…foreach ($vols as $path => $id) {$response = $ec2->create_snapshot($id, array(Description=>"Snapshot:".$instanceRole.":".$path));if ( $response->isOK() ) {bxc_log("Started snapshot for ($id): ".$response->body->snapshotId);$r = $ec2->create_tags($response->body->snapshotId, array(array(Key => Name, Value => "Snapshot:".$instanceRole.":".$path),array(Key => Role, Value => "Snapshot:".$instanceRole.":".$path),));if ( !$r->isOK() ) {bxc_log_amazon_error($response, __FUNCTION__.":".__LINE__);}} else {bxc_log_amazon_error($response, __FUNCTION__.":".__LINE__);return false;}}• Полезносоздаваемымобъектамприсваиватьтэги,длядальнейшейфильтрации
  16. 16. Бэкап MySQL в S3/SnapshotsДиск (EBS)Буферы MySQL(InnoDB) в памятиUnix: ec2-consistent-snapshotили:“FLUSH TABLES WITH READLOCK”fsfreeze –f mountpoint (LinuxExt3/4, ReiserFS, JFS, XFS)AWS SDK for PHP:AmazonEC2::create_snapshot ($volume_id, $opt )AmazonEC2::create_image ($instance_id, $name, $opt )fsfreeze –u mountpointДанные MySQL(InnoDB) на дискеХранилище данных(на базе S3 = SimpleStorage Service)Снепшоты.Автоматически:консолидациябэкапов, сохранениетолько инкрементов
  17. 17. Балансировка/Переключение трафикаAvailability zone (AZ) =«датацентр»Region = группа связанных датацентров, SLA = 99,95%ДЦ1 ДЦ2Балансировщик (ELB)Группа автомасштабирования (AutoScaling)CNAME к «myproj-1873425.us-east-1.elb.amazonaws.com», SSL-терминация
  18. 18. Балансировка/Переключение трафикаRegion = группа связанных датацентровДЦ1 ДЦ2Балансировщик (ELB)Группа автомасштабирования (AutoScaling)
  19. 19. Балансировка/Переключение трафикаRegion = группа связанных датацентровДЦ1 ДЦ2Балансировщик (ELB)Группа автомасштабирования (AutoScaling)
  20. 20. Балансировка/Переключение трафикаRegion = группа связанных датацентровДЦ1 ДЦ2Балансировщик (ELB)Группа автомасштабирования (AutoScaling)Мониторинг(CloudWatch)Образ машины (AMI)
  21. 21. Балансировка/Переключение трафика• Можногибкоуправлятьтремяслужбами:ELB,AutoScaling,CloudWatch–подстраиваяфункционалподсвоизадачи• Автоматическоеувеличениечисламашинприростенагрузки• Автоматическаязаменавышедшихизстроямашин• ПереключениетрафикавдругойДЦприавариисервисаилидляпроведениярегламентныхработ
  22. 22. Балансировка/Переключение трафикаAWS SDK for PHP:AmazonELB:: set_load_balancer_listener_ssl_certificate ( $load_balancer_name,$load_balancer_port, $ssl_certificate_id, $opt )AmazonELB:: configure_health_check ( $load_balancer_name, $health_check,$opt )AmazonELB::enable_availability_zones_for_load_balancer ($load_balancer_name, $availability_zones, $opt )AmazonELB::register_instances_with_load_balancer ( $load_balancer_name,$instances, $opt )AmazonAS:: update_auto_scaling_group ( $auto_scaling_group_name, $opt )AmazonAS: set_desired_capacity ( $auto_scaling_group_name,$desired_capacity, $opt )и другие.
  23. 23. Автоматическое масштабирование• ВCloudWatchсоздаемAlarm,которыйприсреднемCPU>20%вызоветдействиеподобавлениювAutoScalingGroupсерверов,например,2машин(атакжевышлетнамписьмо)• Создаем«обратный»Alarm,которыйприуменьшениинагрузкинаCPU<10%будетубиратьпо1машине
  24. 24. Системауправления• ВCloudWatchнедостаточновозможностей,ноиспользуемегомаксимально• AWSSDKforPHPивообщеработасAPIамазонаневсегдапрямолинейна–нужнапрослойка• ДляосновногомониторингаиактивнойобратнойсвязииспользуемNagiosиегообработчикисобытий• ДляаналитикивосновномиспользуемMunin,частьданныхберемизCloudWatch
  25. 25. Системауправления-тестNagiosAWS SDK for PHPТестТестТестТестОбработчик событияОбработчик событияОбработчик событияCloudWatch -автомасштабированиеОбработчик событияЯдроПрослойкавспомогательного кода(PHP, bash)Утилиты AWSдля консолиAPI АмазонаТест nagiosPinbaТест
  26. 26. Системауправления –обработчик событияNagiosAWS SDK for PHPТестТестТестТестОбработчик событияОбработчик событияОбработчик событияCloudWatch -автомасштабированиеОбработчик событияЯдроОбработчик событияПрослойка вспомогательного кода(PHP, bash)Утилиты AWSдля консолиAPI Амазона
  27. 27. ЧтомытестируемСтандартныетестыnagios:• Пинг,LA,местонадисках• Использованиеswap,числопроцессов• Мониторингraid(унас10рейдыизEBS-дисков)• Безопасность–наличиеобновленийсофтаДляобщейкартины-наборстандартныхплагиновкMuninинесколькодесятковграфиковпокаждоймашине
  28. 28. ЧтомытестируемБазовыетестыMySQL:• Состояниерепликации–отсутствиеошибок,величинаотставанияslaves• BufferPoolhitrate• Числоактивныхпотоков• Число«долгих»потоков• Частотасозданиянадискевременныхтаблицидругие
  29. 29. ЧтомытестируемТестывременивыполнениястраницииспользованияпамятиотpinba:• Пиковоевремявыполнениястраницывирт.хоста• Пиковоеиспользованиепамятивирт.хоста• Среднеевремявыполнениястраницвирт.хостаспрефиксом(поразделам)• Среднееиспользованиепамятивирт.хостом• Среднеевремявыполненияагентов(послеfastcgi_finish_request)Дополнительновыводимгистограммураспределенияхитовпоступенькамвремени(поpinbaипосуточнымлогам)
  30. 30. ЧтомытестируемТестысостоянияамазонаипревышениялимитов:• Проверяемпревышенияключевыхлимитовамазона• Числоживыхмашинзабалансировщиками• ПланируемпроверятьпоказателинагрузкиотCloudWatch–их,однако,оченьмало• Пингнамашинумониторингаnagiosвдругомрегионеамазонаиобратно(мониторингмониторинга)
  31. 31. ЧтомытестируемТестывыполнениябизнес-операцийиобработчиковсобытий:• Скриптыбэкаповиобработчикиобновляютлог-файл(проверкавременимодификации)• Скриптыбэкаповиобработчикивобязательномпорядкеимеютлогошибок(2>илиerror_log)–ондолженбытьпустымЛогошибокоченьпомогаетприработесиногда«нестабильным»APIамазона:- Недоступностьвеб-сервиса- Недоступностьресурса,хотяужеимеетсяегоID
  32. 32. Администрирование через тестированиеПереддобавлениемлюбогосервисаилиобработчикавобязательномпорядке:• Добавляетсятестнапроверкуего«живости»,иногданачислопроцессовсданнымименемит.п.• Добавляетсятестнаналичиеисвоевременноеобновлениелог-файлаобработчика/сервиса• ДобавляетсятестнанулевойразмерлогаошибокСейчасвсистеме:около1000тестов,5сервисныхгрупп,4группхостов.Этоконечнозамедляет,однакопозволяетувереннодвигатьсявперед,менятьконфигурацию,проводитьэксперименты.
  33. 33. ОбработчикиОбработчикистараютсявернутьсистемуврабочеесостояние:• Принедоступностиmemcached(ов)делаетсявременноепереключениетрафикавдругойДЦ• ПрикрахемашиныMySQLилипроцесса,репликации–временноепереключениетрафикавдругойДЦ• Проводитсяпростая«реанимация»(рестартmemcached)ит.п.• Есливсесервисыподнялись–трафиквозвращаетсяобратноОбработчикидляnagiosнаписанынаbash,PHP/MySQL.
  34. 34. Pacemaker/HeartbeatvsNagiosБылонесколькобезуспешныхподходовпонятьстройностьикрасоту–Pacemaker/Heartbeat.Документация–ужасна.ПоканетдоверияDRBD.ПишемсвоюпростуюавтоматикунабазеNagios/PHP/MySQLиAWS ИспользуемдлякластераAutoScaling,шардыMySQLMaster-Master(Active-Passive)ипереключениетрафиканабалансировщиках(можнотакжеElasticIP).Картинка–ниже.
  35. 35. Архитектура «Битрикс24»(www.bitrix24.ru)ДЦ1 ДЦ2Балансировщики (ELB)Группаавтомасштабирования(AutoScaling)Мониторинг (CloudWatch)Образ машины (AMI)SSL - терминацияPercona XtraDBMaster-Master(Active/Passive)Memcached MemcachedMemcached MemcachedMemcached MemcachedМасштабирование PHPМасштабированиеMySQLФайлы/Бэкапы/Снепшоты – S3
  36. 36. Спасибо за вниманиеАлександр Сербул1С-Битриксserbul@1c-bitrix.ru@AlexSerbulПопробуйте http://www.bitrix24.ru12 человек/5ГБ - бесплатно

×