ЁЯЧГя╕П рдзрдбрд╛ 17 тАФ RDS: рднрд╛рдбреНрдпрд╛рдиреЗ рдШреЗрддрд▓реЗрд▓реЗ рджрдкреНрддрд░ рдХрд╛рд░реНрдпрд╛рд▓рдп
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 20 рдкреИрдХреА рдзрдбрд╛ 17 ┬╖ рдорд╛рдЧреАрд▓: lesson-16-route53 ┬╖ рдкреБрдвреАрд▓: lesson-18-cloudwatch
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рдзрдбреЗ 01тАУ17. рдкреНрд░рддреНрдпреЗрдХ рдЦрд▒реНрдпрд╛ system рдЪреЗ stateful рд╣реГрджрдп тАФ рдЖрдгрд┐ "managed" рдЖрдкрд▓реА рдХрд┐рдВрдордд рд╡рд╕реВрд▓ рдХрд░рддреЗ рдЕрд╢реА рдкрд╣рд┐рд▓реА service.
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
рд╢рд╛рд│реЗрдЪреНрдпрд╛ рдиреЛрдВрджреА тАФ рдЧреБрдг, рдкреНрд░рд╡реЗрд╢, рдлреА тАФ рджрдкреНрддрд░ рдХрд╛рд░реНрдпрд╛рд▓рдпрд╛рдд ЁЯЧГя╕П рд░рд╛рд╣рддрд╛рдд: рдореНрд╣рдгрдЬреЗ database. рддреБрдордЪреНрдпрд╛рдХрдбреЗ рджреЛрди рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд:
- рд╕реНрд╡рддрдГ рдЪрд╛рд▓рд╡рд╛ рдПрдХрд╛ рдмрд╛рдХрд╛рд╡рд░ (EC2 рд╡рд░ Postgres): рддреБрдореНрд╣реАрдЪ рдХрд╛рд░рдХреВрди рдмрдирддрд╛. рд░рд╛рддреНрд░реАрдЪреНрдпрд╛ photocopies, software patches, рд╣реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдкрд╛рдгреНрдпрд╛рдЦрд╛рд▓реА рдЧреЗрд▓реНрдпрд╛рд╡рд░ рдПрдХ рдЬрд╛рджрд╛ рдХрд╛рд░реНрдпрд╛рд▓рдп, рдкрд╣рд╛рдЯреЗ 3 рд╡рд╛рдЬрддрд╛рдЪреА recovery тАФ рд╕рдЧрд│реЗ рддреБрдореНрд╣реА, рдХрд╛рдпрдордЪреЗ.
- рдХрд╛рд░рдХреБрдирд╛рд╕рд╣ рдХрд╛рд░реНрдпрд╛рд▓рдп рднрд╛рдбреНрдпрд╛рдиреЗ рдШреНрдпрд╛ тАФ RDS. рддреБрдореНрд╣реА engine рдирд┐рд╡рдбрддрд╛ (Postgres, MySQLтАж) рдЖрдгрд┐ рдХрд╛рд░реНрдпрд╛рд▓рдпрд╛рдЪрд╛ рдЖрдХрд╛рд░; backups, patching рдЖрдгрд┐ failover рдЪреА рдХрд╡рд╛рдпрдд AWS рдХрд░рддреЛ.
рднрд╛рдбреЗрдХрд░реВрдЪреЗ рддреАрди рдлрд╛рдпрджреЗ:
- рд░рд╛рддреНрд░реАрдЪреНрдпрд╛ photocopies ЁЯУ╕ тАФ automated backups + point-in-time restore: "рдордВрдЧрд│рд╡рд╛рд░реА 14:03 рд▓рд╛ рдЬрд╕реЗ рд╣реЛрддреЗ рддрд╕реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп."
- рдЖрд░рд╕рд╛ рдХрд╛рд░реНрдпрд╛рд▓рдп ЁЯкЮ тАФ Multi-AZ: рд╢реЗрдЬрд╛рд░рдЪреНрдпрд╛ рдЗрдорд╛рд░рддреАрдд рд╣реБрдмреЗрд╣реВрдм standby, рджрд░ second рд▓рд╛ sync. Primary рдкрд╛рдгреНрдпрд╛рдЦрд╛рд▓реА тЖТ AWS рд╕рд╛рдзрд╛рд░рдг рдПрдХрд╛ рдорд┐рдирд┐рдЯрд╛рдд phonebook рдордзрд▓реА рдиреЛрдВрдж рдЖрд░рд╢рд╛рдХрдбреЗ рд╡рд│рд╡рддреЛ. рддреБрдордЪреЗ app рдлрдХреНрддтАж рдкреБрдиреНрд╣рд╛ connect рд╣реЛрддреЗ. рдЖрд░рд╕рд╛ рдЯрд┐рдХрдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╣реЗ, рд╡рд╛рдЪрдгреНрдпрд╛рд╕рд╛рдареА рдирд╛рд╣реА тАФ failover рд╣реЛрдИрдкрд░реНрдпрдВрдд рддреЛ рдХреЛрдгрддрд╛рд╣реА traffic рджреЗрдд рдирд╛рд╣реА.
- рд╡рд╛рдЪрдХрд╛рдВрд╕рд╛рдареА photocopy рдмрд╛рдХ ЁЯУЪ тАФ read replicas: рдЕрд╣рд╡рд╛рд▓рд╛рдВрдЪрд╛ рдЬрдб рд╣рдВрдЧрд╛рдо? рдлрдХреНрдд-рд╡рд╛рдЪрдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рддреА рдЬреЛрдбрд╛; рд▓рд┐рд╣рд┐рдгрд╛рд░реЗ рдЦрд░реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рд╡рд╛рдкрд░рдд рд░рд╛рд╣рддрд╛рдд. рдпрд╛ read scaling рд╕рд╛рдареА рдмрдирд╡рд▓реЗрд▓реНрдпрд╛ рд╡реЗрдЧрд│реНрдпрд╛ рдкреНрд░рддреА рдЖрд╣реЗрдд тАФ Multi-AZ standby рдирд╡реНрд╣реЗ.
рдЖрдгрд┐ рд╕рдВрдкреВрд░реНрдг course рдПрдХрддреНрд░ рдмрд╛рдВрдзрдгрд╛рд░рд╛ рдПрдХ рддрдкрд╢реАрд▓: рддреБрдордЪреНрдпрд╛ app рд▓рд╛ рдХрд╛рд░реНрдпрд╛рд▓рдпрд╛рдЪрд╛ рдЖрдХрдбрд╛ рдХрдзреАрдЪ рдХрд│рдд рдирд╛рд╣реА тАФ рддреЗ endpoint рд▓рд╛ рдлреЛрди рдХрд░рддреЗ (рдПрдХ DNS рдирд╛рд╡, рдзрдбрд╛ 16 рдЪреА phonebook!) рдЬреЗ рдиреЗрд╣рдореА рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ primary рдХрдбреЗ рдирд┐рд░реНрджреЗрд╢ рдХрд░рддреЗ. Reception-desk рдЪреА рдпреБрдХреНрддреА, state рд▓рд╛ рд▓рд╛рд╡рд▓реЗрд▓реА.
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart LR
app["ЁЯЦея╕П app (private wing)"]
ep["тШОя╕П endpoint DNS<br/>school-db.xyz.rds.amazonaws.com"]
p["ЁЯЧГя╕П primary office (AZ-a)<br/>private subnet, SG: app only"]
m["ЁЯкЮ standby mirror (AZ-b)<br/>synced ┬╖ failover only, no reads"]
bak["ЁЯУ╕ nightly photocopies<br/>+ point-in-time restore"]
rr["ЁЯУЪ read replica(s)<br/>reports go here"]
app -->|"1 dial the name"| ep -->|"2"| p
p ==>|"3 sync"| m
p -->|"4"| bak
p -.->|"async"| rr
тЭУ рдХрд╛рдп
- Multi-AZ тЙа read replica: рдЖрд░рд╕рд╛ рдЯрд┐рдХрдгреНрдпрд╛рд╕рд╛рдареА (sync, рдЕрджреГрд╢реНрдп, auto-failover); replicas рд╡рд╛рдЪрдгреНрдпрд╛рд╕рд╛рдареА (async, рджреГрд╢реНрдп, failover рдЪреЗ рд╡рдЪрди рдирд╛рд╣реА). рдкрд░реАрдХреНрд╖реЗрдЪрд╛ рдЖрд╡рдбрддрд╛ рдкреНрд░рд╢реНрди, outage рдЪрд╛рд╣реА рдЖрд╡рдбрддрд╛.
- рдЬрд╛рдЧрд╛: private subnets (рдзрдбрд╛ 13), SG рдлрдХреНрдд app рдмрд╛рдХрд╛рдВрдЪреНрдпрд╛ SG рд▓рд╛ allow рдХрд░рдгрд╛рд░рд╛ (рдкреБрдиреНрд╣рд╛ рдзрдбрд╛ 10 рдЪрд╛ pattern).
- k8s StatefulSets рд╢реА рддреБрд▓рдирд╛ (k8s рдзрдбрд╛ 22): рдирд╛рд╡рд╛рдЪреНрдпрд╛ рдкрд╛рдЯреНрдпрд╛ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдмрд╛рдХрд╛рдВрд╕рд╣ рддреБрдореНрд╣реА cluster рдордзреНрдпреЗ Postgres рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛ тАФ рдлрдХреНрдд рддреБрдореНрд╣реА рдкреБрдиреНрд╣рд╛ рдХрд╛рд░рдХреВрди рдмрдирддрд╛, рдЬрд╛рд╕реНрддреАрдЪреНрдпрд╛ рдкрд╛рдпрд▒реНрдпрд╛рдВрд╕рд╣. рдмрд╣реБрддреЗрдХ teams: stateless k8s рдордзреНрдпреЗ, state RDS рдордзреНрдпреЗ. рдХрдВрдЯрд╛рд│рд╡рд╛рдгреЗ рд╡рд┐рдХрдд рдШреНрдпрд╛, рдЦрд╛рд╕ рддреЗ рдмрд╛рдВрдзрд╛.
- Aurora: AWS рдЪреЗ рд╕реНрд╡рддрдГрдЪреЗ engine тАФ рддреЗрдЪ рджрд╛рд░, рднрд╛рд░реА рдЗрдорд╛рд░рдд (storage 3 рдЗрдорд╛рд░рддреАрдВрдд 6├Ч photocopy рдХреЗрд▓реЗрд▓реЗ, рдЬрд▓рдж failover, рдорд╣рд╛рдЧ).
ЁЯдФ рдХрд╛
State рдордзреНрдпреЗ cloud рдЪреНрдпрд╛ рдЪреБрдХрд╛ рд╣рд╕рдгреНрдпрд╛рд╡рд╛рд░реА рдиреЗрддрд╛ рдпреЗрдд рдирд╛рд╣реАрдд. рд╣рд░рд╡рд▓реЗрд▓рд╛ stateless рдмрд╛рдХ = рдЦрд╛рдВрджреЗ рдЙрдбрд╡рдгреЗ (рдзрдбрд╛ 12 рддреЛ рдмрджрд▓рддреЛ). рд╣рд░рд╡рд▓реЗрд▓реЗ рджрдкреНрддрд░ рдХрд╛рд░реНрдпрд╛рд▓рдп = рд╢рд╛рд│реЗрдХрдбреЗ рдЧреБрдгрдЪ рдирд╛рд╣реАрдд. рд╣рд╛ рдЕрд╕рдорддреЛрд▓ рд╣рд╛рдЪ рдХрд╛рд░рдХреБрдирд╛рд▓рд╛ рдкреИрд╕реЗ рджреЗрдгреНрдпрд╛рдЪрд╛ рд╕рдВрдкреВрд░реНрдг рдпреБрдХреНрддрд┐рд╡рд╛рдж рдЖрд╣реЗ: рдЬреЗ рднрд╛рдЧ рдХреЛрдгрд╛рдЪреЗ рддрд░реА рдкреВрд░реНрдгрд╡реЗрд│ рдХреМрд╢рд▓реНрдп рдЖрд╣реЗрдд тАФ рдЦрд░реЛрдЦрд░ restore рд╣реЛрдгрд╛рд░реЗ backups, рдЦрд░реЛрдЦрд░ failover рд╣реЛрдгрд╛рд░реЗ failovers тАФ рддреЗ рднрд╛рдбреНрдпрд╛рдиреЗ, рддрдкрд╛рд╕рд▓реЗрд▓реЗ рдЖрдгрд┐ рдХрдВрдЯрд╛рд│рд╡рд╛рдгреЗ рдорд┐рд│рддрд╛рдд.
ЁЯФз рдХрд╕реЗ
aws rds describe-db-instances --query \
'DBInstances[].{id:DBInstanceIdentifier,engine:Engine,size:DBInstanceClass,multiAZ:MultiAZ,endpoint:Endpoint.Address}'
# the failover drill (Multi-AZ instances):
aws rds reboot-db-instance --db-instance-identifier school-db --force-failover
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛ (~20 рдорд┐рдирд┐рдЯреЗ, db.t4g.micro free tier рд╡рд░ ~рдореЛрдлрдд тАФ рдирдВрддрд░ DESTROY рдХрд░рд╛)
рддреБрдордЪреНрдпрд╛ lab VPC рдЪреНрдпрд╛ private subnets рдордзреНрдпреЗ db.t4g.micro Postgres рдмрдирд╡рд╛,
рдПрдХрд╛ рдмрд╛рдХрд╛рд╡рд░реВрди endpoint рдирд╛рд╡рд╛рд▓рд╛ psql рдХрд░рд╛, рдПрдХ row insert рдХрд░рд╛,
--force-failover рдиреЗ reboot рдХрд░рд╛, рдЖрдгрд┐ рддреЗрдЪ рдирд╛рд╡ рджреБрд╕рд▒реНрдпрд╛ рдЗрдорд╛рд░рддреАрддреВрди рдЙрддреНрддрд░ рджреЗрддрд╛рдирд╛
рдкрд╛рд╣рд╛. рдордЧ рддреЗ delete рдХрд░рд╛ (lab рдордзреНрдпреЗ final snapshot рд╡рдЧрд│рд╛, рдЖрдгрд┐ рддреЗ рдЦрд░реЛрдЦрд░ рдЧреЗрд▓реЗ
рдХрд╛ рддреЗ рддрдкрд╛рд╕рд╛ тАФ рдХрд╛ рддреЗ рдзрдбрд╛ 20 рд╕рд╛рдВрдЧрддреЛ).
тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ
psql -h ENDPOINT private рдмрд╛рдХрд╛рд╡рд░реВрди connect рд╣реЛрддреЗ; reboot-db-instance --force-failover рдирдВрддрд░ рддреЛрдЪ endpoint рджреБрд╕рд▒реНрдпрд╛ AZ рдордзреВрди рдкреБрдиреНрд╣рд╛ рдЙрддреНрддрд░ рджреЗрддреЛ.
ЁЯз╣ рд╕рд╛рдлрд╕рдлрд╛рдИ тАФ рдЪрд╛рд▓реВ рдареЗрд╡реВ рдирдХрд╛
DB instance delete рдХрд░рд╛ (lab рдордзреНрдпреЗ final snapshot рд╡рдЧрд│рд╛) рдЖрдгрд┐ describe-db-instances рд░рд┐рдХрд╛рдореЗ рдЖрд╣реЗ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛ тАФ RDS рддрд╛рд╕рд╛рдкреНрд░рдорд╛рдгреЗ bill рдХрд░рддреЗ
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
- 'testing рд╕рд╛рдареА' publicly accessible database
- Multi-AZ standby reads рджреЗрддреЛ рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░рдгреЗ тАФ рддреЛ рджреЗрдд рдирд╛рд╣реА
- Final snapshot рд╕рд╣ delete рдХрд░рдгреЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рдкреИрд╕реЗ рдХрд╛рдпрдо рднрд░рдд рд░рд╛рд╣рдгреЗ
тПня╕П рдкреБрдвреЗ
рдмрд╛рдХ, files, рдЧрд░реНрджреА, рдирд╛рд╡реЗ, рдиреЛрдВрджреА тАФ рд╕рдЧрд│реЗ рдЪрд╛рд▓реВ. рдкрдг рдкрд╣рд╛рдЯреЗ 3 рд╡рд╛рдЬрддрд╛ рдпрд╛ рд╕рдЧрд│реНрдпрд╛рд╡рд░ рд▓рдХреНрд╖ рдХреЛрдг рдареЗрд╡рддреЗ? рдзрдбрд╛ 18: CloudWatch тАФ рдкреНрд░рдЧрддрд┐рдкреБрд╕реНрддрдХреЗ, рдбрд╛рдпрд▒реНрдпрд╛ рдЖрдгрд┐ рдзреЛрдХреНрдпрд╛рдЪреНрдпрд╛ рдШрдВрдЯрд╛.