рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!
рдореИрдВрдиреЗ Amazon-AWS Iaaa рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рд╡рд┐рдлрд▓-рд╕реБрд░рдХреНрд╖рд┐рдд (HA) рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд▓рд╕реНрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рдореВрд▓ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд╕рд╛рде 9 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕ рдмрдВрдбрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦреЗ рдЬрд╛ рдЪреБрдХреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕реАрдХреНрдпреВ рдФрд░ pgpool рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдорд╛рдирдХ рд╣реИред рд╡рд┐рдЪрд╛рд░рд╣реАрди рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рджрд┐рдП рдЧрдП рдЯреБрдХрдбрд╝реЗ рдЕрдиреБрдкрдпреБрдХреНрдд рд╣реИрдВ, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЦреЛрд▓рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред
рд╢рдмреНрджрд╛рд╡рд▓реА:
рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкреНрд░рддрд┐рдХреГрддрд┐ - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреЛрд╕реНрдЯ рдиреЛрдбреНрд╕ рдкреЛрд╕реНрдЯ рдорд╛рд╕реНрдЯрд░ рд╕реЗ рдЦреБрдж рдХреЛ рдЕрдкрдбреЗрдЯ рдЦреАрдВрдЪ рд▓реЗрдВрдЧреЗред рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЧреНрд░рд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╣реЙрдЯ рд╕реНрдЯреИрдВрдбрдмрд╛рдп - рдЧреБрд▓рд╛рдо рдиреЛрдбреНрд╕ рдХреЛ рд╡рд╛рд░реНрдо рд╕реНрдЯреИрдВрдбрдмрд╛рдИ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП READ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджрд╛рд╕ рд╕рд░реНрд╡рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рд╕реЗ рд╡рд░реНрддрдорд╛рди рдЖрдзрд╛рд░ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред рдмрджрд▓реЗ рдореЗрдВ, рдкреНрд░рддрд┐рдХреГрддрд┐ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ (рд╕рд┐рдВрдХ рдпрд╛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕) рд╣реЛ рд╕рдХрддреА рд╣реИред
рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдорд╛рд╕реНрдЯрд░-рд╕реНрд▓реЗрд╡ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдЧреБрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд╕рд╛рде, рдорд╛рд╕реНрдЯрд░, рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рджрд╛рд╕ рдХреЛ рднреЗрдЬрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рд╣реИ, рдмрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджрд╛рд╕ рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдореЗрдВ рд▓рдЯрдХрд╛ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдРрд╕реА рдпреЛрдЬрдирд╛ рдХреЗ рд╕рднреА рдЕрд░реНрде рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВред ред
рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛:
рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдПрдХрд▓ рдмрд┐рдВрджреБ рд╕реЗ рд░рд╣рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред Pgpool рд╕реНрддрд░ рдкрд░, рд╣рдо рдЗрд╕рдХреА рдореВрд▓ рдкреНрд░рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ рдХрд┐рд╕реА рдПрдХ рдиреЛрдб рдХреЗ рдкрддрди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рдФрд░ IP рдХреЛ рдЙрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪреЗ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИред Postgresql рд╕реНрддрд░ рдкрд░, рд╣рдо рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкреНрд░рддрд┐рдХреГрддрд┐ + рд╣реЙрдЯ рд╕реНрдЯреИрдВрдбрдмрд╛рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдорд╛рд╕реНрдЯрд░ рдХреЗ рдкрддрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧреБрд▓рд╛рдо рдЬрд▓реНрджреА рд╕реЗ рдЕрдкрдиреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдПрдЧрд╛, рдЧреБрд▓рд╛рдо $ PGDATA рдореЗрдВ рдПрдХ рдЯреНрд░рд┐рдЧрд░ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдХрд░ рдорд╛рд╕реНрдЯрд░ рдХреЛ рдкрдЧрдкреБрд▓ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред рдПрдХ рдЧреБрд▓рд╛рдо рджреБрд░реНрдШрдЯрдирд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреАрд╡рди рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдПрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХреЛрдИ рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реЗрд░рдлреЗрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдиреЛрдб рдбреНрд░реЙрдк рдХреА рдЖрдХрд╕реНрдорд┐рдХ рд╕реНрдерд┐рддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХреНрд░реИрд╢ рдХреЗ рд╕рднреА рд╡рд░реНрдгрд┐рдд рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдиреНрдпреВрдирддрдо рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
AWS рдХреНрд▓рд╛рдЙрдб (Amazon Web Services): pgpool-1 (IP: 10.0.3.11), pgpool-2 (IP: 10.0.3.12), db-1 (IP: 10.0.3.21), db-2 ( рдЖрдИрдкреА: 10.0.3.22)ред VPC рдореЗрдВ рддреБрд░рдВрдд рдирд┐рдЬреА рдкрддреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╢реАрдиреЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░рд┐рдмреВрдЯ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рдЙрдмрдВрдЯреВ рд╕реЗ рдПрдореА -8 рдИ 987 рдПрдл 9 рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рднреА рдЫрд╡рд┐ рдХреЛ рдЪреБрдирдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ - рддреЛ рдЕрдореЗрдЬрд╝реЕрди рд▓рд┐рдирдХреНрд╕ рд▓реЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдЯреЗрдХреНрд╕реНрдЯ рджреНрд╡рд╛рд░рд╛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ред
рд╡рд┐рдиреНрдпрд╛рд╕:
1.
рдбреАрдмреА -1 - рдмрдВрдбрд▓ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рдорд╛рд╕реНрдЯрд░
...
wal_level = hot_standby
# рдорд╛рд╕реНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░ рдЕрдЧрд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдорд╛рд╕реНрдЯрд░ рдФрд░ рдЧреБрд▓рд╛рдо рд╕реНрдерд╛рди рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдорд╛рд╕реНрдЯрд░'рдП рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред
hot_standby = on
...
рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
checkpoint_seaction, max_wal_senders, wal_keep_seolution
рдкреНрд░рддрд┐рдХреГрддрд┐ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ
wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server рдкрдврд╝рдХрд░ рдХрд╕ рд▓реЗрдВред
Pg_hba.conf рдореЗрдВ рд╣рдо рдкреНрд░рддрд┐рдХреГрддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ VPC рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рд╕рдм рдХреБрдЫ рдШреВрдо рд░рд╣рд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдмрд╛рд╣рд░ рд╕реЗ рд╕реАрдзреА рдкрд╣реБрдБрдЪ рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рдЕрднреА рдкрдВрдЬреАрдХреГрдд рдЯреНрд░рд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ:
рдореЗрдЬрдмрд╛рди рдкреНрд░рддрд┐рдХреГрддрд┐ 10.0.3.0/24 рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░рддреА рд╣реИ
2.
рдбреАрдмреА -2 - рдЧреБрдЪреНрдЫрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рджрд╛рд╕
...
wal_level = hot_standby
hot_standby = on
...
рджрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдВрдбрдмрд╛рдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ .conf рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ $ PGDATA рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ /var/lib/postgresql/9.3/main рдереА
recovery.conf:
рд╕реНрдЯреИрдВрдбрдмрд╛рдп_рдореЛрдб = 'рдкрд░'
Primary_conninfo = 'рд╣реЛрд╕реНрдЯ = 10.0.3.21 рдкреЛрд░реНрдЯ = 5432 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ = рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ'
рдЯреНрд░рд┐рдЧрд░_рдлрд╛рдЗрд▓ = '/var/lib/postgresql/9.3/main/postgresql.trigger'
Pg_hba.conf рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛
3.
pgpool -1pgpool.conf:...
backend_hostname0 = '10 .0.3.21 '
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/var/lib/postgresql/9.3/main'
backend_flag0 = 'ALLOW_TO_FAILOVER'
backend_hostname1 = '10 .0.3.22 '
backend_port1 = 5432
рдмреИрдХреЗрдВрдб_рд╡реЗрдЯ 1 = 1
backend_data_directory1 = '/var/lib/postgresql/9.3/main'
backend_flag1 = 'ALLOW_TO_FAILOVER'
# рдЯреАред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧрд░реНрдо рд╕реНрдЯреИрдВрдбрдмрд╛рдп рд╣реИ:
load_balance_mode = рдкрд░
# рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╣рдорд╛рд░реЗ рдХрд╛рдо рдЖрдПрдЧреА
master_slave_mode = рдкрд░
master_slave_sub_mode = 'рд╕реНрдЯреНрд░реАрдо'
sr_check_period = 10
sr_check_user = 'postgres'
sr_check_password = ''
рджреЗрд░реА_рд╢реНрд░реЗрд╖реНрда = резрежреж
# рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬрдм рджрд╛рд╕> 1
follow_master_command = ''
# рдиреЛрдб рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдкрд░ рдХреНрдпрд╛ рдХрд░реЗрдВ:
failover_command = '/etc/pgpool2/failover.sh% d% P% H% R'
# рдЬрдм рдЧрд┐рд░ рдиреЛрдб рд╡рд╛рдкрд╕ рдЖрдП рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВ:
failback_command = ''
# рдлреЗрд▓рдУрд╡рд░ рдЪрд▓рд╛рдПрдВ рдЬрдм рд╣рдо рдмреИрдХрдПрдВрдб рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ
fail_over_on_backend_error = рдкрд░
search_primary_node_timeout = 10
рдХрд┐рд╕ рдпреВрдЬрд░ рдХреЗ рддрд╣рдд рд╣рдо рдСрдирд▓рд╛рдЗрди рд░рд┐рдХрд╡рд░реА рдХрд░реЗрдВрдЧреЗ
рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐_рд╕рд░ = 'рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ'
рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐_рдкрд╛рд╕рд╡рд░реНрдб = ''
# рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ, рдкрдЧрдкреБрд▓ рдЧреНрд░рд╛рд╣рдХреЛрдВ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдФрд░ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдкрд░ рдирд╣реАрдВред
# рд░рдирд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ $ PGDATA рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐_1st_stage_command = 'basebackup.sh'
рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐_2nd_stage_command = ''
# рдиреЛрдб рдХреА рдмрд╣рд╛рд▓реА рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рд╕реЗрдХрдВрдб рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐_ рд╕рдордп = 90
# рд╣рдо pgpool рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдирдЬрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╣рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ
use_watchdog = рдкрд░
wd_hostname = 'pgpool-1'
wd_port = 9000
wd_authkey = ''
# рд╡рд╣ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддрд╛ рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдиреЗрдХреНрдЯ рд╣реЛрдЧрд╛:
рдбреЗрд▓реАрдЧреЗрдЯ_рдЖрдИрдкреА = '10 .0.3.10 '
# рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдмрдВрдзрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╣рд╛рдВ рд╣реЛрдЧреА:
ifconfig_path = '/ opt / AWS'
# рд╣рдо рдПрдХ рдиреЛрдб рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдЖрдИрдкреА рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
if_up_cmd = 'if.sh рдЕрдк $ _IP_ $'
# рд╡рд░реНрдЪреБрдЕрд▓ IP рдХреЛ рдиреЛрдб рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ
if_down_cmd = 'if.sh рдиреАрдЪреЗ $ _IP_ $'
ARP рдХреИрд╢ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЪреБрдЕрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдЦреАрдВрдЪрддреЗ рд╣реБрдП #Pgpool рдЕрд░реНрдкрд┐рдд рдХрд░рддрд╛ рд╣реИ
arping_cmd = ''
# рд╣рдо рдкрдбрд╝реЛрд╕реА рдЦреВрдВрдЯреА рдиреЛрдб рдХреА рдЖрдЬреАрд╡рд┐рдХрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ:
# рдЬрд┐рдпрд╛рд░рдд рдХрд░реЗрдВ рдпрд╛ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
wd_lifecheck_method = 'рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди'
# рдЪреЗрдХ рдХреЗ рдмреАрдЪ рд╕реЗрдХрдВрдб рдореЗрдВ рдЕрдВрддрд░рд╛рд▓:
wd_interval = 4
# рд╣реЗрд▓рдореЗрдЯ рдХрд┐рд╕ рдкреЛрд░реНрдЯ рдкрд░ рд╣реИ:
wd_heartbeat_port = 9694
# рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЯ рдореИрдВрдбреНрд░реЗрд▓ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░рд╛рд▓
wd_heartbeat_keepalive = 2
# рд╕рдордп рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рдПрдХ рдореВрдХ рдиреЛрдб рдХреЛ рдЧрд┐рд░рд╛рдП рдЬрд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:
wd_heartbeat_deadtime = 15
# рдкрдбрд╝реЛрд╕реА рдиреЛрдб рдХрд╛ рдкрддрд╛:
рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди
heartbeat_destination_port0 = 9694
# рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди_рджреЗрд╡рд┐рд╕ 0 = ''
# рд╣рдо рдПрдХ рдФрд░ рдиреЛрдб рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:
other_pgpool_hostname0 = 'pgpool-2'
other_pgpool_port0 = 9999
other_wd_port0 = 9000
...
4.
pgpool -2рдпрд╣ рд╡рд┐рдиреНрдпрд╛рд╕ pgpool-1 рдХреЗ рд╕рдорд╛рди рд╣реИ, рдкрдбрд╝реЛрд╕реА рдиреЛрдб рдХрд╛ рд╡рд░реНрдгрди pgpool-2 рд╕реЗ pgpool-1 рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ
рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ / etc / рдореЗрдЬрдмрд╛рди рдореЗрдВ рд╣рдо рдирд╛рдо рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ IP рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ:
10.0.3.11 рдкреИрдЧрдкреБрд▓ -1
10.0.3.12 pgpool-2
10.0.3.21 db-1
10.0.3.22 db-2
5. рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pgpool рдХрд╛ рдПрдХреАрдХрд░рдг
Pgpool-1 рдФрд░ pgpool-2 рдХреЗ рднрд╛рдЧ рдкрд░, рд╣рдо failover_command рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рддрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдиреЛрдб рдЧрд┐рд░рддрд╛ рд╣реИ (рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЬрдм рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рдЧрд┐рд░рддрд╛ рд╣реИ)ред рд╡рд╣ рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдиреЛрдб рдЧрд┐рд░ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рдпрджрд┐ рдорд╛рд╕реНрдЯрд░ рдЧреБрд▓рд╛рдо рдкрд░ рдПрдХ рдЯреНрд░рд┐рдЧрд░ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рджрд╛рд╕ рдХреЛ READ-WRITE рдореЛрдб рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдЙрд╕реЗ рдЧреБрд░реБ рдмрдирд╛рддрд╛ рд╣реИ:
Db-1 рдФрд░ db-2 рдкрдХреНрд╖ рд╕реЗ, рд╣рдо рдХрд╛рдо рдХреЗ рд▓рд┐рдП pgpool рдпреЛрдЬрдирд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
sudo -u postgres psql -f /usr/share/postgresql/9.3/extension/pgpool-recovery.sql template1
рд╣рдо $ PGDATA рдореЗрдВ рдПрдХ pgpool_remote_start рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдкрдбрд╝реЛрд╕реА рдиреЛрдб рдкрд░ рдкреЛрд╕реНрдЯрдЧреНрд░реИрд╕реНрдХрд▓ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ [рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреЛрд╕реНрдЯрдЧреНрд░реИрд╕реНрдХрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдкрдХреЛ рдиреЛрдб рдХреЗ рд▓рд┐рдП $ PGDATA рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ pgpool рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ]:
рдФрд░ рдпрд╣ рднреА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐_1st_stage_command рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдирдП рджрд╛рд╕реЛрдВ рдХреЗ рд╡рд░реНрддрдорд╛рди рдорд╛рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╣реЛрдЧреА (pgpool_remote_start рдХреЗ рдмрдЧрд▓ рдореЗрдВ $ PGDATA рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ):
5. рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рджреВрд░рд╕реНрде рдореЗрдЬрдмрд╛рдиреЛрдВ рдкрд░ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╛рд╕рд╡рд░реНрдб рд░рд╣рд┐рдд рдкрд╣реБрдВрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
pgpool-1 -> db-1, db-2
pgpool-2 -> db-1, db-2
рдбреАрдмреА -1 -> рдбреАрдмреА -2
рдбреАрдмреА -2 -> рдбреАрдмреА -1
рдЖрдк ssh рд╣реЛрд╕реНрдЯ-рдЖрдзрд╛рд░рд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк ssh рдХреАрдЬрд╝ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХреГрдд_рдХреА рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХреНрд╕реЗрд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕реЗ рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ pgpool рдХреЗ рджреМрд░рд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдЧрд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╣реИрдВ:
Pgpool-1 рд╣реЛрд╕реНрдЯ рд╕реЗ, рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░реЗрдВ:
sudo -u postgres ssh -i /path_to_key -T postgres@db-1 id
рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХреНрд╕реЗрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ ssh рдХреЗ рд▓рд┐рдП рдЬреНрдЮрд╛рдд_рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕ рд╕реНрддрд░ рдкрд░, 4 рдиреЛрдбреНрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рд╣реИред
- рдорд╛рд╕реНрдЯрд░ рд╣реЛрд╕реНрдЯ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ (db-1)
- рд╣рдо рдЧреБрд▓рд╛рдо рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдордХрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдкреЛрд╕реНрдЯрдЧреНрд░реИрд╕реНрдХрд▓ рдЕрднреА рддрдХ рдЙрд╕ рдкрд░ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ), $ PGDATA рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдВ:
mv main main.bak && sudo -u postgres pg_basebackup -h 10.0.3.21 -D /var/lib/postgresql/9.3/main -U postgres -v -P && cp recovery.done main/recovery.conf && chown postgres:postgres main/recovery.conf
(Recovery.done - рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ .conf рдЯреЗрдореНрдкрд▓реЗрдЯ рдЬреЛ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХреЗ рдЖрдИрдкреА рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ) - рджрд╛рд╕ рдкрд░ postgresql рдЪрд▓рд╛рдПрдВ:
sudo service postgresql restart
- рд╣рдо рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ "pg_stat_replication рд╕реЗ рдЪрдпрди рдХрд░реЗрдВ" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦрддреЗ рд╣реИрдВ:
application_name | walreceiver
client_addr | 10.0.3.22
рд░рд╛рдЬреНрдп | рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ
sent_location | 1 / 2A000848
write_location | 1 / 2A000848
flush_location | 1 / 2A000848
replay_location | 1 / 2A000848
рд╕рд┐рдВрдХ_рдкрд╛рдпрд░рд┐рдЯреА | 0
рд╕рд┐рдВрдХ_рд╕реНрдЯреЗрдЯ | async
рдпрд╛ рд╕рд┐рд░реНрдл db-1 рдФрд░ db-2 рдореЗрдЬрдмрд╛рдиреЛрдВ рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╡рд╛рд▓ рдкреНрд░реЗрд╖рдХ / рд░рд┐рд╕реАрд╡рд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдкреИрдЧрдВрдмрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐_рдЖрдИрдкреА рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рдХреЛ if_up_cmd рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЦреАрдВрдЪрддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╣рд╛рдВ ifconfig рд╣реИ)ред
рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ:
wd_escalation: рдорд╛рд╕реНрдЯрд░ pgpool рдХреЗ рд▓рд┐рдП рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛
рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж, рд▓реЙрдЧреНрд╕ рдореЗрдВ рджреВрд╕рд░рд╛ рдкреИрдЧрдкреБрд▓ рдЪрд▓рд╛рдиреЗ рдкрд░, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкрдбрд╝реЛрд╕реА pgpool рдиреЛрдб рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╣рдЪрд╛рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд▓рд┐рдВрдХ:
find_primary_node: рдкреНрд░рд╛рдердорд┐рдХ рдиреЛрдб рдЖрдИрдбреА 0 рд╣реИ
рдкреВрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ pcp_ * рдХрдорд╛рдВрдб рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - pcp_pool_status, pcp_node_info, рдпрд╛ pgpool рдиреЛрдбреНрд╕ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдХреЗ "рд╢реЛ рдкреВрд▓_рдиреЛрдбреНрд╕?", "рд╢реЛ рд╢реЛ_рдкреВрд▓";
рдЗрди рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкреВрд▓ рдореЗрдВ рдиреЛрдбреНрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ pgpool рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ -
www.pgpool.net/docs/pgpool-II-3.3.2/doc/pgpool-en.htmlрдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ pgpool рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреВрд╕рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ if_up_cmd рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕реНрд╡рдпрдВ рдкрд░ рдЦреАрдВрдЪ рд▓реЗрдЧрд╛ред
рдЬрдм db-1 рдпрд╛ db-2 рдмреИрдХрдПрдВрдб рдХреНрд░реИрд╢ рд╣реЛрддрд╛ рд╣реИ, рддреЛ failover_command рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред
Pcp_attach_node рдФрд░ pcp_recovery_node рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреИрдХреЗрдВрдб рдХреЛ рдкреВрд▓ рдореЗрдВ рд▓реМрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
AWS рдХрд░реНрдордЪрд╛рд░реА:
рддреЛ AWS рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯреЗрдлрд╝реНрдлрд╝реНрд╕ рдореЗрдиреВ рдореЗрдВ "рдПрдХ рджреНрд╡рд┐рддреАрдпрдХ рдирд┐рдЬреА рдкрддреЗ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ" рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкреВрд░реНрд╡-рд╕реМрдВрдкрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдореЗрдЬрд╝реЕрди рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛, рдЗрд╕ рдкрддреЗ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ pgpool-1 рдФрд░ pgpool-2 рдХреЗ рдмреАрдЪ рдХреНрд░реЙрд▓ рдХрд░реЗрдВ (рдпрджрд┐ рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ amazon linux рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рдм рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИред )ред AWS рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рдХреА рдЧрдИ рдЫрд╡рд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ
ec2-api-tools рд╕реЗрдЯ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Api-tools рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг
amazon рд╕реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
Ec2-api-tools рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ - apt-get install default-jre
рдЕрдВрдкреНрд╕ / рдмрд┐рди рдореЗрдВ рдЕрдирдкреИрдХреНрдб рдПрдкреА-рдЯреВрд▓реНрд╕ рдЖрд░реНрдХрд╛рдЗрд╡ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрд░рд╡реНрд╕ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрдЧреАред
рд▓реЗрдХрд┐рди amazon api рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреБрдВрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╣рд╛рдБ amazon рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдИ рдЧрдИ рд╣реИ -
docs.aws.amazon.com/IAM/latest/UserGuide/ManagingCredentials.html рдФрд░ рдпрд╣рд╛рдБ
docs.aws.amazon.com/IAM/batest/UserGuide/ManagingUserCerts.htmlрдкрд╣рд▓реЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдФрд░ IAM рдореЗрдиреВ (
рдХрдВрд╕реЛрд▓.aws.amazon.com/iam/home?#users) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╕рдореВрд╣ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рд╕реНрдкрд╖реНрдЯ рдореЗрдВ рдПрдХ рдХреБрдВрдЬреА рдмрдирд╛рддреЗ рд╕рдордп рдорд╛рд▓рд┐рдХ рдХреЛ рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред - рджреВрд╕рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред рдЕрдореЗрдЬрд╝реЕрди, рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдПрдХ рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП IAM рдореЗрдиреВ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдиреЗ рдХреА рдЬреЛрд░рджрд╛рд░ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реЗрдВрдЧреЗ, рдмрдЬрд╛рдп AWS рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЦрд╛рддреЗ рдХреЗ рдПрдХ рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
рджреВрд╕рд░реЗ рд▓рд┐рдВрдХ рдкрд░, рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рдЕрдкрдирд╛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рд╕рднреА рдХреЛ рдЙрд╕реА AWS IAM рдореЗрдиреВ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ:
Opensl genrsa 1024> рдирд┐рдЬреА-рдХреА.рдкреЗрдо
Opensl pkcs8 -topk8 -nocrypt -inform PEM -in private-key.pem -out private-key-in-PCKS8-format.pem
Opensl req -new -x509 -nodes -sha1-days 3650 -key private-key.pem -outform PEM> certificate.pem
рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рд╕рд╛рдордЧреНрд░реАред Iem рдореЗрдВ AWS рдкрд░ Pem рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рдмрдВрдзрди IAM рд╕реБрд░рдХреНрд╖рд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдореЗрдиреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдЗрди рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ:
рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ .pem рдкреИрд░рд╛рдореАрдЯрд░ EC2_CERT рдХреЗ рд▓рд┐рдП
EC2_PRIVATE_KEY, AWS_ACCESS_KEY рдФрд░ AWS_SECRET_KEY рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА-рдХреБрдВрдЬреА-рдЗрди-PCKS8-format.pemред
рдЖрдк ec2-api-tools рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ if.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИ рдЬреЛ рдЗрдВрд╕реНрдЯреЗрдВрдЯ рдХреЗ рдмреАрдЪ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ pgpools рдХреЗ рд▓рд┐рдП рдЦреАрдВрдЪреЗрдВрдЧреАред рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдЬрд┐рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдЕрдк / рдбрд╛рдЙрди) рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рдЖрдИрдкреА рдкрддреЗ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдЖрдИрдкреА рдХреЗ рд▓рд┐рдП рд╕рдмрдиреЗрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рддреА рд╣реИ (рдореИрдВ / 24 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рд╕рд┐рд░реНрдл рдкрд┐рдЫрд▓реЗ рдСрдХреНрдЯреЗрдЯ рдХреЛ рдХрд╛рдЯ рджреЗрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдорд╛рд╕реНрдХ рдирд╣реАрдВ рд╣реИ / 24 рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦрддреНрдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред рдореИрдВ рд╕рдмрдиреЗрдЯ рдХреЛ рдорд╛рдирддрд╛ рд╣реВрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рджреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдкреНрд░рд╛рдердорд┐рдХ рдФрд░ рдкреНрд░рдмрдВрдзрди, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕ рдкрд░ рджреНрд╡рд┐рддреАрдпрдХ рдЖрдИрдкреА рдХреЛ рд▓рдЯрдХрд╛рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЕрдЧрд░ред рд╕реНрдХреНрд░рд┐рдкреНрдЯ: рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓реЛрдЪрджрд╛рд░ IP рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ec2-Associates-address рдФрд░ ec2-unassign-private-ip-address рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рджрд░рдЕрд╕рд▓, рдпреЗ рдЗрд╢рд╛рд░реЗ рджреЛрд╕реНрддреЛрдВ рдХреЛ pgpool рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдП рдЬрд╛рдиреЗ рдереЗ, рдЬреЛ AWS рдХреЗ рд╕рд╛рде Amazon Linux рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред