200 likes | 348 Views
Тема. Создание Standby баз в Amazon Cloud c использованием стороннего шифрования. О компании. Щукин С.А, DBA. Disaster Recovery Site. Зачем это необходимо? Плюсы Катастрофоустойчивость Логические повреждения Снятие части нагрузки Минусы Покупка отдельного железа - $$$
E N D
Тема Создание Standby баз в AmazonCloud c использованием стороннего шифрования
О компании Щукин С.А, DBA
Disaster Recovery Site Зачем это необходимо? • Плюсы • Катастрофоустойчивость • Логические повреждения • Снятие части нагрузки • Минусы • Покупка отдельного железа - $$$ • Размещение в ДЦ, обслуживание, энергопотребление
Облачные сервера Amazon • Продукты • Amazon Elastic Compute Cloud (EC2) • Amazon Relational Database Service (RDS) • Amazon Elastic Block Store (EBS) • Amazon Simple Storage Service (S3) • Простая регистрация • Кредитная карта • Телефон
Amazon Elastic Compute Cloud (EC2) Типы инстансов • On-Demand Instances • Reserved Instances • Spot Instances • Лицензирование • SE/O 4vc = 1socket=1PL • SE max 16vc, SEO – max 8vc • EE vc*0.5 = 1PL Регионы доступности: • US East (Northern Virginia) • US West (Northern California) • EU (Ireland) • Asia Pacific (Singapore) • Asia Pacific (Tokyo) http://aws.amazon.com/ec2/instance-types/
EC2, цены (US East), On Demand Итого стоимость EC2 Extra Large HM (17GB RAM, 6.5 CU) в год (без сториджа): $4380 -On demand $1325 - Reserved http://aws.amazon.com/ec2/pricing/
Amazon Relational Database Service (RDS) Плюсы • Проще в использовании • Предустановленная БД • Amazon мониторинг • Автоматический патчинг • Автоматические бекапы Минусы • Дороже Cтоимость EC2 Extra Large (17GB RAM, 6.5 CU) в год (без сториджа): $5694 - On demand $1850 - Reserved http://aws.amazon.com/rds/
Amazon Elastic Block Store (EBS) Дисками в Амазоне • Локальные диски переаллоцируются для инстанса после каждого рестарта • EBS диски постоянны • EBS диски можно аттачить между разными инстансами • Размер EBS диска от 1GB до 1TB • Привязаны к Региону • Можно делать снапшоты • Выше производительность и надежность Цена EBS • $0.10 за GB/мес. 1 TB база - $1228в год • $0.10 за 1 миллион I/O операций - ???
Amazon Simple Storage Service (S3) «Ленточная библиотека» Amazon’а • Защита данных через Oracle Secure Backup + RMAN set encryption on for all tablespaces algorithm 'AES128' identified by "PASSWORD" only; run{ Allocate channel c1 device type SBT MAXPIECESIZE 5G parms 'SBT_LIBRARY=/opt/oracle10g/db/lib/libosbws11.so ENV=(OSB_WS_PFILE=/opt/oracle10g/db/dbs/osbwsdb.ora)'; .... Allocate channel c7 device type SBT MAXPIECESIZE 5G parms 'SBT_LIBRARY=/opt/oracle10g/db/lib/libosbws11.so ENV=(OSB_WS_PFILE=/opt/oracle10g/db/dbs/osbwsdb.ora)'; crosscheck backup; backup as compressed backupset database format 'system/system_db_%T_%s_%p.rman'; backup as compressed backupset skip inaccessible archivelog all not backed up format 'system/db_logs_%T_%s_%p.rman' delete all input; backup current controlfile format 'system/system_ctl_%T_%s.rman'; } • Самая высокая заявленная надежность99.999999999% (EBS ~ 99.5%) за год • $0.14 за GB в месяц http://aws.amazon.com/s3/ • Установка OSB • http://rman.s3.amazonaws.com/osbws_install.jar • java -jar osbws_install.jar -AWSID ... -AWSKey ... -otnUser shchukin@devexperts.com -otnPass ... -walletDir /opt/oracle10g/db/dbs/osbws_wallet -configFile /opt/oracle10g/db/dbs/osbwsXXX.ora -libDir /opt/oracle10g/db/lib -validateotn 0
Полная стоимость облака за год Калькулятор - http://aws.amazon.com/calculator Пример – инстанс High Memory Extra Large • 17.1 GB RAM • 6,5 Computing Unints • 1024 GB EBS (4x250GB) • 1 Elastic IP (бесплатно пока используется). Количество ограничено на аккаунт • Traffic входящий – 2 TB в месяц (бесплатно, исходящий до10 TB / $0.120 за GB в месяц) • RESERVED -$2928 • ON DEMAND - $5820 • + S3 (1 TB ->RMAN сжатие 500GB) - $840 ($0.14 за GB/мес)
Производительность • IO • Синтетический тест (BenchmarkSQL) • Реальная нагрузка
Производительность • IO, RMAN • Restore • 97MB sec, Stress1, 3 потокас локального диска. 170min, 973GB, 176GB backup • 56MB sec, Stress2, 5 потоковс локального диска.280min, 922GB • Recover • 7-14MB/sec, Stress1, 70 min, 58GB logs • 16MB/sec, Stress2, 195 min, 192GB logs • IO, dbms_file_transfer между облаками • 90MB/sec - 1 thread • 15MB/sec - 6 threads
Производительность • Standby MRP Apply rate – 0.5 – 1 MB/sec • SCP speed – из интернета в облако – 0.5-2 MB/sec, между облаками – 30 MB/sec • CPU speed - 12 секунд (Extra Large ST). (С)DSVOLK . Prod CPU speed – 15 секунд. SET SERVEROUTPUT ON SET TIMING ON DECLARE n NUMBER := 0; BEGIN FOR f IN 1..10000000 LOOP n := MOD (n,999999) + SQRT (f); END LOOP; DBMS_OUTPUT.PUT_LINE ('Res = '||TO_CHAR (n,'999999.99')); END; /
Защита данных - шифрование • LUKS (Linux Unified Key Setup), dm-crypt http://code.google.com/p/cryptsetup/ http://code.google.com/p/cryptsetup/wiki/DMCrypt • Пример • Проверка поддержки egrep 'AES|CRYPTO' /boot/config-$( uname -r )|grep CONFIG_CRYPTO_AES CONFIG_CRYPTO_AES=m CONFIG_CRYPTO_AES_X86_64=m • Создание "Создать" cryptsetup -y luksFormat /dev/sdh (x7 раз, меняя /dev/sdh) "Открыть" cryptsetup luksOpen /dev/sdh encr_sdh (x7 раз, меняя /dev/sdh) "Закрыть - не обязательно" cryptsetup luksClose encr_sdh "Проверить" что доступ к данным возможен только через mapper можно командой, пример: hexdump -C /dev/sdh |grep 'encrypted' hexdump -C /dev/mapper/encr_sdh |grep 'encrypted‘ • Возможна смена паролей cryptsetup luksAddKey /dev/sdh cryptsetup luksDelKey /dev/sdh 0 • CPU overhead незначительный
Краткая инструкция • Создать аккаунт, создать инстас через Firefox + ELasticFox (http://aws.amazon.com/developertools/609?_encoding=UTF8&jiveRedirect=1). Настроить политики безопасности в ELasticFox • Скопировать ORA_HOMES в амазон, отключить RAC tar cvf - db/ crs/|gzip > ora_homes.tar.gz SCP gunzip < ora_homes.tar.gz| tar xvf – • Подготовить шифрованные девайсы для ASM и для локальной файловой системы • Создать сервис CSSD (10g), экземпляр ASM 11G можно ставить через GUI предварительно выставив runlevel в 3 Create diskgroup data external redundancy disk ‘/dev/mapper/encr_sde’, ‘/dev/mapper/encr_sdf’, ‘/dev/mapper/encr_sdg’, ‘/dev/mapper/encr_sdh’, ‘/dev/mapper/encr_sdi’, ‘/dev/mapper/encr_sdj’, ‘/dev/mapper/encr_sdl’, ‘/dev/mapper/encr_sdn’,'/dev/mapper/encr_sdo', '/dev/mapper/encr_sdp'; • Скопировать/Восстановить базу • Создать stunnel между prod базой и standby • Добавить мониторинг
Краткая инструкция, сервис CSSD vi /etc/init.d/cssd_start #!/bin/sh # # chkconfig: 345 99 10 # description: CSSD for ASM case "$1" in start) nohup /opt/oracle10g/crs/bin/localconfig reset & sleep 50 nohup /etc/init.d/init.cssd run >/dev/null 2>&1 </dev/null & ;; stop) ;; esac exit 0 cd /etc/init.d chmod 744 cssd_start chkconfig --add cssd_start service cssd_start start
Краткая инструкция, мониторинг cd $ORACLE_HOME/backup mkdir stb_mon cd stb_mon "vi check_lag.sql" set termout off set feedback off set timing off set heading off set pagesize 0 spool lag_val.out select round((sysdate-max(next_time))*24) lag_hours from v$archived_log l,(select thread, max(sequence) max_sequence from (select substr(message, instr(message, 'thread_')+7,1) thread ,substr(message, instr(message, 'seq_')+4,instr(message, '.')-(instr(message, 'seq_')+4)) sequence ,message from v$dataguard_status where message like 'Media Recovery Log%') group by thread) dg where l.thread# = dg.thread and l.sequence# = dg.max_sequence; spool off exit "vi run.sh" #!/bin/bash export ORACLE_SID=XXX export ORACLE_HOME=/opt/oracle10g/db export PATH=$ORACLE_HOME/bin:$PATH sqlplus '/as sysdba' @check_lag.sql lag=`cat lag_val.out` hour=`date +%H` if [ $lag -gt $2 ]; then message="ERROR: $1 Standby LAG IS $(cat lag_val.out) HOURS !!!"; echo $message|mail -s "$1 Standby monitoring" $4; else if [ $lag -le $2 ]; then if [ $hour = $3 ]; then message="OK: $1 Standby current lag: $(cat lag_val.out) hour(s)"; echo $message|mail -s "$1 Standby monitoring" $4; fi else message="WARNING: Can't determine lag for $1 Standby, check it manually!"; echo $message|mail -s "$1 Standby monitoring" $4; fi fi CRON 0 */1 * * * (cd /opt/oracle10g/db/backup/stb_mon; ./run.sh "System XXX" 4 18 xxx@xxx.com)
Польза Standby • Лаг в данных. Если установлен можно посмотреть данные в прошлом при необходимости или в случае логического повреждения • Сделать бекап базы. Без негативного воздействия на продакшен базу • Dbms_file_transfer. Отправить часть данных на стресс базу • Миграция на 11g (utlu112i.sql). Если нет возможности прогонять скрипт на продакшене -> Standby + Restore Point + Flashback Database • Временно открыть в Read Onlyдля специальныхотчетов • Active Standby
Минусы Amazon • Залипание. Высокое LA, IO тормозитРедко но случаи бывают, реальный продакшен под большим вопросом top - 02:03:03 up 40 min, 3 users, load average: 9.19, 5.19, 2.26 Tasks: 103 total, 1 running, 102 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 25.0%id, 74.9%wa, 0.0%hi, 0.0%si, 0.1%st Mem: 15728640k total, 11561392k used, 4167248k free, 1067548k buffers Swap: 9638992k total, 0k used, 9638992k free, 9535888k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 15 0 10348 756 632 S 0.0 0.0 0:00.02 init 2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0 3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 • Неполноценный саппорт. http://www.oracle.com/technetwork/topics/cloud/faq-098970.html#support • HugePages – не поддерживаются • Иногда не создать инстанс. Мотивируется временным исчерпанием ресурсов зоны • Смена IP после ребута. Проблемы с Listener, CSSD. Лечится через Elastic IP
Альтернатива – Oracle Cloud • Недавно появившаяся технология • Меньше контроля • Не определена ценовая политика (??)