Post on 14-Dec-2015
Тема
Создание Standby баз в Amazon Cloud 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
Регионы доступности:• US East (Northern Virginia) • US West (Northern California) • EU (Ireland)• Asia Pacific (Singapore) • Asia Pacific (Tokyo)
Инстанс RAM (GB)
EC2 CU(virt. core x EC2 CU) Storage (GB) 32/64 bit
Small (ST) 1.7 1 (1vc 1 EC2 CU) 160 32
Large (ST) 7.5 4 (2x2) 850 64
Extra Large (ST) 15 8 (4x2) 1690 64
Extra Large (HM) 17.1 6.5 (2x3.25) 420 64
Double Extra Large (HM)
34.2 13 (3x3.25) 850 64
Quadruple Extra Large (HM)
68.4 26(8x3.25) 1690 64
Medium Instance 1.7 5(2x2.25) 350 32
Extra Large Instance(HC)
7 20(8x2.5) 1690 64
Лицензирование• SE/O 4vc = 1socket=1PL• SE max 16vc, SEO – max 8vc• EE vc*0.5 = 1PL
http://aws.amazon.com/ec2/instance-types/
EC2, цены (US East), On Demand
Linux Windows
Small (ST) $0.085 per hour $0.12 per hour
Large (ST) $0.34 per hour $0.48 per hour
Extra Large (ST) $0.68 per hour $0.96 per hour
Extra Large (HM) $0.50 per hour $0.62 per hour
Double Extra Large (HM) $1.00 per hour $1.24 per hour
Quadruple Extra Large (HM) $2.00 per hour $2.48 per hour
Medium (HC) $0.17 per hour $0.29 per hour
Extra Large (HC) $0.68 per hour $1.16 per hour
Итого стоимость 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
Минусы• Дороже
Тип инстанса Цена в час
Small (ST) 0.11
Large (ST) 0.44
Extra Large (HM) 0.65
Double Extra Large (HM) 1.30
Quadruple Extra Large 2.60
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)
– Реальная нагрузка
ASM 1x100GB ASM 10x10 XFS, SW RAID 10x10
trans/sec 257 400 221
log file sync(ms) 34 15 24
db file sequential read(ms) 30 9 18
db file parallel write(ms) 3 3 3
log file parallel write(ms) 19 4 11
Stress Prod
log file sync(ms) 17 8
db file sequential read(ms) 11 16
db file parallel write 3 2
log file parallel write 12 3
Производительность
• 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 ONSET 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-crypthttp://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 в амазон, отключить RACtar cvf - db/ crs/|gzip > ora_homes.tar.gzSCPgunzip < 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.dchmod 744 cssd_startchkconfig --add cssd_startservice cssd_start start
Краткая инструкция, мониторинг
cd $ORACLE_HOME/backupmkdir stb_moncd stb_mon
"vi check_lag.sql"set termout offset feedback offset timing offset heading offset pagesize 0
spool lag_val.out
select round((sysdate-max(next_time))*24) lag_hoursfrom 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) dgwhere l.thread# = dg.thread and l.sequence# = dg.max_sequence;
spool off
exit
"vi run.sh"#!/bin/bashexport ORACLE_SID=XXXexport ORACLE_HOME=/opt/oracle10g/dbexport PATH=$ORACLE_HOME/bin:$PATH
sqlplus '/as sysdba' @check_lag.sqllag=`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; fifi
CRON0 */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.26Tasks: 103 total, 1 running, 102 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.0%sy, 0.0%ni, 25.0%id, 74.9%wa, 0.0%hi, 0.0%si, 0.1%stMem: 15728640k total, 11561392k used, 4167248k free, 1067548k buffersSwap: 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
• Недавно появившаяся технология
• Меньше контроля
• Не определена ценовая политика (??)