á á˝áá ááľáĽ ᨠPostgreSQL áľá á°áľ ááťáťáá ááłá áĽáá´áľ áĽáá°á°á¨áľá áĽáááááłáá ᣠááá ááĽá á áľááá áá áĽá á áá¨á¨áť áá áĽáá°á°áá ᨠá˘
á á¨áá°á á°á¨á á¨á°áŤá á áááááľ á ááᥠá ááá ááŞáŤ 2,5 áááŽá á°á áááá˝áŁ á á¨áá 50áşá + áá á°á áááá˝á˘ á ááááŽáš á á ááľ á¨á á¨ááááľ ááá ááľáĽ á á ááá ááááᥠ100+ á¨á°ááŤáŠ á°áá¨áŽá˝ á ááááľ áľáŤ áá áá¸áᣠá¨áĽááá á ááľáĽ 50 á¨ááááľ á¨ááἠááł áŤáá¸á áá¸áá˘
ááá ááᣠá¨á°áá áá áá á¨ááŤááἠá¨ááĽáśáŹáľ áááááľá á¨ááá áľáá
á ááłá áááł áŤáá á¨á፠áá°áá áŞáŤ ááᢠáĽá á°á áááá˝ á á°ááłáłá á°ááł áá á á°ááłáłá áá á˛á°áŠ, ááá áááŚá˝á á áĽááá°á áá áŤáŤá, ááááŤáąá áĽáŤááłááąá ááἠáá° á¨ááἠááł áĽáá˝ááá. áá° á¨ááἠááłá˝á á á°á¨ááľ áá° 10áşá
á¨áá á áĽáŤááá˝ á ááᢠá áŹá˛áľ á¨áá°á áááľ ááᣠ80-100K áĽáŤááá˝á á á°á¨ááľ áĽáá˝áááá˘
ááá á¨Redis áá° PostgreSQL ááá¨ááá˘
ááááŞáŤ áá á áááááłá˝á áááá áá¨ááá˝ á á áááአRAM ááľáĽ á¨ááŤá¨áá˝ ááá áĽá´áľ á¨ááá áŹá˛áľ áá á°ááˇáá˘
á¨Redis áĽá áá˝
- á¨áá°á ááá˝ ááĽááľ, ááááŤáąá ááá ááá á áá á°á¨ áľááľáł ááľáĽ á°á¨áá˝áˇá;
- á¨áá áŁá á፠áĽá á¨ááŁááľ áááááľ.
ááĽá á¨Redis ááłáśá˝áĄ-
- ááá áĽááá°á ááĽááśá˝ á¨áá. á áá°áá áŞáŤá˝á á°á¨á áĽááąá áááľáá°á áá¨áá. áĽáá° á áááłá°á áá áá áááá á á°áἠá áá°áŤá áĽá á áŁá ááľáĽáľáĽ áŽáľ ááťá áŤáľááááá.
- á¨áá¨áá áá á á áá á°á¨ áľááľáł áá á á¨á°áá°á ááᢠá¨áá¨áá áá á áĽá¨á¨áᨠá˛ááľ áá á°á¨ áľááľáłá áĽáŤá°á áááłá, áĽá á áá¨á¨áť, á á°áá¨á á ááłá áŁá áŞáŤáľ ááľáĽ áĽáááŁáá, áá á á AWS ááľáĽ á¨á áĽááľ á áááľá ááááἠá áááááłá˝áá áááá áá ááá.
- áá á°á á¨áááá¨áľ á°á¨áá áŤáááá¨áĽ ááá¨áľ á áľááá áá, ááááŤáąá. á áŁá áĽá á¨áĽáŤááá˝ áĽááľ á ááᢠááĽá á áŁá áĽáŠá á¨áááá¨áľ á°á¨á 17-20 áá´ ááᢠá 30-40 áá´ á°á¨áᣠá¨á áááá¨áť áĽá á¨á áááááą ááľá ááľ ááááᥠáĽáŤááá˝ á¨á á ááážá˝ áĽáááááᢠáĽáá° á áááłá°á ááᣠáá á áĽá áá á á´áá´áá á 2018 á°ááśááᣠá¨Redis áá á á ááľ ááááŤáľ á áá ááááŤáľ á¨2 áá á áá áááá¨áľ á˛áá áᢠá˝ááŠá ááááłáľ á áá á ááá˝ áá á áááááąá ááá°áŤáááľ áĽáá á ááá á˝áá áŤáá áľá Redis ááłá á°áá°ááá˘
- á áŽáą ááľáĽ áŁá áĽáá á áľá á°áśá˝ áĽááłá á¨ááἠá ááááŁá á ááááľ ááá áá áĽá áá á ááἠáááľá°áŤá¨á áĽá áá áŽáľ á ááťá áŤáłáááá˘
ááłáśášá áááľ ááľáĽ á áľááŁá áĽá áá° ááš ááá áááľ áĽááłááĽá á°ááááĽá, á á°ááá°á ááĽááśá˝ áĽá á áááá¨áľ áá áĽáá á áááá. áááá á áľáááᣠáĽá á ááŤáŽá˝á á°ááľá PostgreSQL á ááá§áá˘
á1,5 áááłáľ áŤá
á áá° á á˛áľ áłáłá¤á áĽá¨á°áááłááľá ááá°áá áĽá á¨áá¨áá ááľáĽ áľáá˝ ááá áĽáť á°áááłá
á°ááᣠáľááá
á áá á¨Redis áĽá PostgreSQL áá á á ááľ áá áĽá¨á°áŤá ááᢠá áá¨á ááśá˝ ááŤá¨á áľá ááááłááľ áĽá áľááááŤá¨á á°á¨ááá˝ á°á¨á᪠áá¨á á°á˝áá
ááááłááľ áľáááá á¨áĽá áá°áá áŞáŤ á ááĽáł á¨áá¨á ááą áá á°ááś ááľá°á Redis áĽá PostgreSQL á°á¨á°áᢠá¨PostgreSQL áááľá°á áá áĽá áŤáá°ááłá°á áľáááá˝ áŤáá á
á áá á¨áᢠá¨ááἠááłá áĽá
áľ áá
á áááľáááĄ-
PgBouncerá á áá°áá á áá
á áááááłááľá áľ áá áááąá áĽáŤá°á áá áᥠá¨á°á áááá˝ áĽááľ áĽá á¨PostgreSQL áá á¨áá°áŠ á¨á ááááŽá˝ áĽááľ á¨ááŻáᣠáĽá á¨áááááľ áĽáĽá¨áľ ááááᢠPostgreSQL ááĽáŤááłááą áááááľ á¨á°áᨠáá°áľ áááĽáŤá áĽá ááĽáśá˝á áá áá. á¨áááááśá˝á áĽááľ áĽáľá¨ á ááľ ááĽáĽ áľá¨áľ áá¨áá áá˝áá, á áá áá፠áá á°á á¨ááἠááł á ááááá á¨ááááľ áĽáľá á á. á áĽáá°áá ááááľ áááł ááľáĽ áŤáá á°áľáá á ááŤá á¨áá á¨áą ááľ áááľ á¨ááá á¨áááááľ á áľá°áłáłáŞá ááá¨áĽ áá.
ááááááľ á áľá°áłáłáŞ áááľ á ááŤáŽá˝ áá áŠáᥠPgpool áĽá PgBouncerᢠááá áá á¨ááááŞáŤá á¨áá¨á ááą áá á áĽáŽ á¨ááĽáŤáľ á¨ááĽááľ áááłá á áá°ááá, áľááá PgBouncer á ááá áá.
á¨áá¨á°ááá á¨áľáŤ ááá ááĽá á ááá
á°ááᥠáá°áá áŞáŤá˝á á ááľ PgBouncerá áŤáááᣠá¨ááá PostgreSQL ááśá˝ á áᣠáĽá á¨áĽáŤááłááą ááľá°á ááᣠá ááľ á¨ááááłá°á áľáááá˝ áŤáá á ááľ á
á á áá˘
á á°ááłáłá áá áááá á¨ááἠáá á á PostgreSQL ááľáĽ áá¨áá¸áľ á ááťááá áĽá á¨áá¨á ááą áá á¨ááĽáŤáľ ááĽááľ ááĽá á áľááá áá á, áľááá
PostgreSQL á á áááŹá˝á á°á¨á áááŤáľ áááá. á¨áá
á áá á¨á°ááá¸á áĽá
áľ á á ááťáŤáááľ ááš áá-á á˛áľ PostgreSQL áťááľ á˛á¨áá ᨠPgBouncer áá
á¨áľá áááá á á áá áĽá á áááŹá˝á áá˛áŤáá á¨á á˛áą á¸áá°á´ áá á áĽáŽ ááľáŤáľ áá˝ááá˘
PgBouncer á áá°áłáŤáá˘
áá áĽá áľ áĽá¸áá á¨PgBouncer ááłá áĽáľá¨áá°á áľ áá áľá¨áľ á°ááˇáᢠááá á ááŁááá˝ á á¨ááá á áááą áááľáá áá á áá°áŠá áľ AWS ááľáĽ ááᢠá áĽáá°áá ááááľ áááłáὠᣠááłáá á ááá áá° á á˛áľ áááľáá ááááłááłá áĽá áĽáá°áá áá°áŤáᢠáá á PgBouncer á°á¨áľáˇáᣠáá á¨áááá ááᢠá¨áá ááľááľ áá¤áľ á25 á°áá á áááááłá˝á á áááááą ááᢠAWS ááĽáá°áá á áááľ áááłáá˝ á á°á áá-áá áĽá á áá áááá ááááŤá, áá á á ááŤá áá á á ááŤá˝á ááľáĽ á áá°á°áá á¨á.
á¨á፠á ááᣠáľá PgBouncer áĽá PostgreSQL áľáĽáľáŚá˝ áľá á°áľ ááťáťá á áá ááá á áľá á áá áᣠááááŤáąá á áĽá AWS áá፠ááľáĽ á ááááá áááł á°ááłáłá áááł áá¨á°áľ áá˝ááá˘
á¨PgBouncer áĽááľá ááťáťá áá´á áĽáá°áá¨á°áá áááĽá°ááᥠááá á¨áá°áá áŞáŤ á°áá¨áŽá˝ á¨ááľááá ááľ áŁáááľá áŤáááᣠá¨ááá áááľ PgBouncers á áᢠáĽáŤááłááą PgBouncer á¨áĽáŤááłááąá áťááľ á°ááłáłá ᨠPostgreSQL ááá áááá¨áłáᢠá¨AWS ááłá áĽáá˝áľ áĽáá°áá á¨á°á¨á°á°áŁ ááá áľáŤáá áá° áá PgBouncer áááááŤáᢠá¨á ááłá¨ áá¨áĽ áááľ ááá á áááłáŤáľ á¨áá¨á á á AWS ááá˘
áá
áĽá
áľ á á˛áľ PgBouncer á ááááŽá˝á áá¨á ááá áŤá°ááááá˘
ᨠPostgreSQL áŤáá°áłáŤ áááľá°á ááá áŠ
áá áá á˝áá á áááłá áľ áá á¨á°ááŤáŠ á ááŤáŽá˝á áááľ ááľáĽ á áľááĽá°áá-á áŤáľ á¨á°áťá á áááłáŤáľ ᣠrepmgr ᣠAWS RDS ᣠPatroniá˘
á áŤáłá¸á á¨á°áťá áľááŞááśá˝
áĽááą á¨ááłáá áľáŤ áá¨áłá°á áĽá ááľááľ á˘á¨á°áľ á ááá áá° ááłá áŤáľá°ááá áĽá ᨠPgBouncer áá áá áŤáááá˘
á¨áá á ááŤá¨áĽ áĽá áá˝ á¨áá°áá áááááľ áá¸á, ááááŤáąá áĽááľá áĽáŤáľá áľááŞááśá˝á áá˝áá áĽá á áľááá áĽáá´áľ áĽáá°áá°áŠ áááááŁá.
Cons:
- ááłá á ááá°á ᣠááááá á¨á ááłá¨ áá¨áĽ áĽáá˝áľ á°á¨áľáˇáᢠáŤáá°áłáŤááľ, áá áá áłáŤáá , á ááá áá° ááłá áŤáľá°áááá, á áŽáá ááł áá ááľáŤáąá áááĽáá. á áá¤áąá, á ááá áááľ áá ááľáĽ áááľ á ááááŽá˝á áĽááááá áĽá á¨ááą ááľáĽ á¨áľáá á¨á áἠáá áá áłá áá¨á áĽááłáá á ááá á. áá áááł á¨á°á¨áá-á ááá á°áĽáá áá áŤá;
- ááá ááá˝ áłááá áá¨áᢠá áĽá áá á ááľáĽáŁ ááľá°á áĽá á ááľ á áᣠá¨á°ááŤá¨áá á ááᣠá áá áá° ááłá ááááłááłá áĽá á¨á áá á áá á ááá˝ á¨áááᣠáľááá á á˛áľ á á á áĽá áá¨áá á ááĽáá˘
- 12 PostgreSQL áťááśá˝ áĽáŤáá áľá ááľááľ áŚááŹá˝á á°á¨á᪠ááľáľá áĽááááááᣠáá áááľ 12 áááľá°áŽá˝á áá¨áłá°á á ááĽá áááľ ááᢠá¨áťááśá˝ ááĽá áĽá¨á¨áᨠá áááŁáą áŤáá°áłáŤáá áááááá ááľáłááľ á ááĽááľ.
á áŤáľ á¨á°áťá á áááłáŤáľ á áŁá á¨á°ááłá°á áááľáá áĽá ááá áŤááá áľáá áááááᢠá á áᾠᨠPostgreSQL ááá áá á áŁá ááá á ááŤá áááá ááá áá á áááŤá áľááá ááĽá á°áľáá á áá°áá.
Repmgr
á¨PostgreSQL ááááá˝ ááŁááľ á áľá°áłáłáŞáŁ á¨PostgreSQL áááľá°á áľáŤá ááľá°áłá°á áá˝ááᢠá á°ááłáłá áá, á¨áłáĽá ááľáĽ á ááśáá˛á ááľááľ á¨ááá, áľááá ááľáŤ á á°á áááá áááľá áá á¨áŤáľáá "áá¸ááŤ" ááťá áŤáľáááááłá. áľááá ááá ááá á áŤáľ á¨á°áá áľááŞááśá˝ á¨á áá á¨á°ááłá°á ááá áá˝áá ᣠáľáááá áĽá Repmgrá áĽááłá á ááá¨áááá˘
AWS RDS
á¨ááŤáľááááá ááá áá áá°áááᣠááľáŹáá˝á áĽáá´áľ áĽáá°áá°áŤ áŤááá áĽá á¨áááááśá˝á áááł áŤááŤáᢠá ááśáá˛á áááŤá¨á á áá: ááłá á˛ááľ, á áá á á˛áľ ááł áááá, áĽá AWS á¨á˛ á¤á á¤áľ áááἠáá° á á˛áą ááľá°á ááááŁá, á áááš á á°ááŤáŠ AZs ááľáĽ ááá áá˝áá.
ááłáśáš áĽáŠ ááľá°áŤá¨áŤáá˝ á ááááá áŤáŤáľáłá. áĽáá° áĽáŠ ááľá°áŤá¨áŤ ááłáᥠá¨áĽá á ááŁááá˝ á tcp áááááśá˝ áá°áŚá˝ á áá¸áᣠá ááŤáłáá áááłáŁ á RDS ááľáĽ áá°á¨á á áá˝áááĄ
net.ipv4.tcp_keepalive_time=10
net.ipv4.tcp_keepalive_intvl=1
net.ipv4.tcp_keepalive_probes=5
net.ipv4.tcp_retries2=3
á á°á¨ááŞá, AWS RDS á¨áá°á áá á¨áá áá áááľ áĽáĽá áááľ ááťáá, áá áá áááľá ááá°á ááá ááááŤáľ áá á.
ááľáŽá
áá PostgreSQLá á áĽáŠ á°ááśá˝áŁ á ááśáá˛á ááľááľ áĽá á github áá á¨ááá áŽáľá áááľá°áłá°á á¨áááśá á áĽááľ ááá˘
ᨠPatroni áĽá áá˝:
- áĽáŤááłááą á¨áá á¨áľ áááŞáŤ ááááťá, áĽáá´áľ áĽáá°áá°áŤ ááá˝ áá;
- á ááśáá˛á ááľááľ á¨áłáĽá ááľáĽ áá áŤá;
- á áááśá á¨á°áá ᣠáĽá áĽá áĽáŤáłá˝á á áááśá ááľáĽ áĽá áľáááá ᣠá˝ááŽá˝á ááááá áĽá ááááŁáľá á¨ááŽáááąá áááľ áááá ááá áááááá á˘
- PostgreSQLá áá á áá áŤáľá°áłáľáŤáᣠá ááá á¨áááľá°á ááśá˝ áá áŤááá áá á¨áľ á á ááľ áá áĽáá˛ááአááá áľáááłáᣠáĽá áááľá°á á á˛áąá áá á ááá°áá á áĽáá°áá áááá áŤáá áľáŁ áá Patroni á áá áá áĽáá°áá áá¨ááá áá˝ááá˘
Cons:
- ᨠPgBouncer áá áĽáá´áľ á áľááá ááľáŤáľ áĽáá°ááťá á¨á°ááśáš ááľáĽ ááá˝ á áá°áá. ááá áĽááłá á°áááś áááĽáŤáľ á áľá¸á᪠á˘ááá, ááááŤáąá á¨ááľáŽá á°ááŁá PostgreSQL á ááľá°áłá°á áá, áĽá á¨ááľáŽá áá áŤáá áááááľ áĽáá´áľ áĽáá°áááľ ááľááá á¨áĽá á˝áá áá;
- á áľááá áĽáŤáá˝ áá á¨ááľáŽá á á°ááŁá á áĽááľ ááłááá˝ á á, á¨áŁáś á¨áá°áá á áĽá ááłááá˝ á á.
á áá¤áąá, áŤáá°áłáŤ áááľá°á áááá á Patroni á ááá áá.
Patroni áľáá ፠áá°áľ
á¨ááľáŽá á ááľáŁ 12 PostgreSQL áťááśá˝ á á ááľ ááľá°á áá
á áĽá á ááľ á
á áŁáá°ááłá°á áľáááá˝ áá á¨áᢠá áááŹá˝á á°áá¨áŽá˝ á¨áá¨á ááąá á¨á°á¨áąáľ á ááľááá ááľ áŁáááľ á áŠá á˛áá á¨ááá¸á ᨠPgBouncer áá áááľ á ááŁááá˝ áá አáĽá á¨ááá¸á ááá ᨠPostgreSQL á ááááŽá˝ áá áŠá˘
Patroni á ááá°áá á á¨á°á¨ááá á¨áá¨ááť áááľá°á áá
á¨áľá ááá¨áĽ áŤáľáááááᢠPatroni áĽáá° ááá°d ᣠZookeeper ᣠáááľá áŤá á¨á°á¨ááá á¨áá
á áá¨ááť áľáááśá˝ áá áá°áŤáᢠá¨áŽááľ áá á áĽáá¨áľ á¨áá°áŤ áĽá á¨á áá á áá á¨ááá ááá áľ á¨á°áá á¨áááľá áááľá°á á áá ፠áá á áá:: áááľáá ááłááááľ á áá áá áá ááááá áĽáŠ ááááŤáľá˘
Patroni á¨áááľá áá áĽáá´áľ áĽáá°áá°áŤ
áśáľáľ á áááá˝á áŤáá á¨áááľá áááľá°á á áá áĽá ááľáŽá áááľá°á á᪠áĽá á á (á ááľáŽá ááľáĽ ááłá á¨áááľá°á á᪠ááŁáá áĽá áŁáŞáŤááš á ááá˝ ááŁáá)ᢠáĽáŤááłááą á¨Patroni áááľá°á ááłá áľá áááľá°á áááł áŤáááá¨áĽ áá° áááľá áááŤáᢠáľááá ᣠá¨áááľá áá áá á¨ááľáŽá áááľá°á á¨á ááá áá á áĽá á á áá áá á᪠áá áĽáá°áá ááá áá˝ááá˘
Patroniá á¨áááľá áá ááááááľ á¨áááľá áá á ááá°áŤá áľ ááááľ áĽá á áááááą áĽá
áľ áá á áááľá¨áľ á http ááá https á
áá¸áľ á áľá°ááá
áááá˝ áŤáľáááááłá á¨áááá áŚáá´áá á°ááśá˝á ááĽááľ á á áá á˘
host: the host:port for the Consul endpoint, in format: http(s)://host:port
scheme: (optional) http or https, defaults to http
ááá áááľáá, áá áĽáá ááĽááśá˝ ááááŤá. á¨áŽááąá áá á°á áááą á á°á á á áááááľ á https á áŠá áĽáá°áŤáá áĽá á¨áááááľ á ááááŤá˝á áá áá áááľááá˘
consul:
host: https://server.production.consul:8080
verify: true
cacert: {{ consul_cacert }}
cert: {{ consul_cert }}
key: {{ consul_key }}
áá áá á áá°áŤáᢠá áááłá áľ áá Patroni á¨áááľá áá áááááľ á áá˝ááᣠááááŤáąá á http á áŠá áááá ááááŤáá˘
ᨠPatroni ááá áŽáľ á˝ááŠá ááááá á¨áľáˇá. á áááśá ááťá áĽáŠ ááᢠá¨á áľá°ááá áá¤áľ á ááá ááááľ á áá°á°áá°áá ᣠáĽá ááŽáśáŽá á áĽá áľ ááľáĽ áááá˝ á áá áľá˘ á¨áááľá áá á áĽáŽ áááľáŤáľ á¨áá°áŤá á¨áá á ááá ááĽá áĽáá°áá áááľááá˘
consul:
host: server.production.consul:8080
scheme: https
verify: true
cacert: {{ consul_cacert }}
cert: {{ consul_cert }}
key: {{ consul_key }}
áááľá-á áĽááľ
áľááá , ááááá ááľáááŤáá ááá áá. á áá á ááľáŽá áááľá°á ááľáĽ ááŞá á˛ááአPgBouncer áĽáá´áľ á ááááŠá áĽáá°áááá áá¨áłáľ á ááĽá. á á°ááą ááľáĽ ááá áĽáŤá ááá áááľ á¨áá, ááááŤáąá. áĽááŤ, á ááá á°á¨á, ᨠPgBouncer áá ááľáŤáľ á áá°ááá¸á.
áááľáá ááááá, áąááąá-á áĽááľ PgBouncer áĽá Patroniá á ááŁáá áĽá áĽáá°á¨áł á¨á°áťáá áľ á ááľ á˝áá á ááá (á ááŤáłáá áááł áááąá á ááľáłááľá)ᢠáá áŽáá°á-á´ááááľ áĽáá´áľ áĽáá°áá°áŤ áĽááľááá¨áá á ááłáłáá˘
áááľá á áĽááľ á áááľá ááľáĽ áŤááá ᨠPostgreSQL áááľá°á áá á á ááááľ áĽáá°áá¨áłá°áá áłááᢠááŞá á˛áá¨á, ᨠPgBouncer áá á¨áľá áŤáááá áĽá áĽáá°áá áááŤá áľááá áááŤá.
á áĽááľ áľáá
áááľ áĽáá° áŽáľ áá¨áá¸áą ááᣠáľááá
á á˛áľ á¸áá°á´ á˛á¨áá á á˛áľ áá áááŁáą áĽá á áĽááąá á áŤáľ á°á áááá á á ááᣠáá á¨á° áááľá áĽáá° áŽáľ ááá
áá°áááá˘
á¨ááľáŽá áá á á˛áľ áĽá ááá
á áá¤áąá, á¨áá¨á°ááá á¨áľáŤ áĽá
áľ á ááá°áá.
ááá á¨áá°áá áŞáŤ á ááááŽá˝ áááá áá°ááłá â á¨áááŁá ááᾠᨠPgBouncer á ááŁááá˝ á á â á áĽáŤááłááą á ááŁá áŽáá°á-á´ááááľ á°áááŻá, á¨áĽáŤááłááąá á¨ááľáŽá áááľá°á áááł á¨áá¨áłá°á áĽá ᨠPgBouncer áá
á¨áľá á áľáááááľ á¨áá¨áłá°á á˛áá áá
á áá áá á᪠áĽáŤááá˝á áááŤá. á¨áĽáŤááłááą ááá.
á áĽá ááá¨á
áá áá áĽá áľ á áľáá˝ á¨áá¨áŤ á áŤáŁá˘ á¨ááááá á ááľ áĽáá°áŤáá áĽá á áŤáľ-á°á á¨áááŤá¨áá á á áŤá á á¨ááá áá ᢠá°ááłáá á¨áá°á á°ááŁááá á áááłá á°áá áĽá á ááŤá áá á¨áááľá°á ááŞáá "áá°ááľ". á AWS ááľáĽ áá á áŽááśá á áŠá ááłááá áĽáá° ááááľ ááá ááá˘
á°ááŁáá á 10-20 á°á¨ááľ ááľáĽ á°áááś á°ááá°áŁ áĽá á¨á፠áĽáá°áá á áá°á áááľ ááááłááľ ááá¨á˘ áá
áááľ á¨ááľáŽá áááľá°á á áľááá á°ááˇáᥠááŞáá ááጠáá¨ááá áá° áąááąá áᨠáĽá áąááąá-á áĽááľ áá˛áŤáá áá
áá áá¨á á ááłáŁ ᨠPgBouncer áá
á¨áľá á°ááś áĽáá°áá áĽáá˛áŤá áľáááá áá¨á˘
á á¨áá°á áááľ ááľáĽ áĽáá´áľ áĽáá°áá°áá áĽá á¨áĽá¨ááľ ááá á áľááš áĽáá˛áአááľá¨á?
ááá ááá á áľááá áá°áŤá! áá á áłá˛áľ áĽáŤááá˝ á á-á á¨áá°á áááľ áĽáá´áľ áĽáá°áá°áŤ? á áááľ ááľáĽ áááá ááá á ááĽááľ áĽá á á áľá°ááá áááł áĽáá´áľ áááŁáľ áĽáá°ááťá?
á¨áááľ áá¨áŤá á¨ááááŤá áľ á¨áá¨áŤ á áŤáŁá˘ á¨ááááŞáŤáá áĽáŤá áĽááľááááľ áá¨áłáá. á áĽá ááá ááľáĽ á¨áááľ áá áá á áá á°ááłáłá áá áĽá á áľáá˝ áá á á¨á ááŤá˝ áá áĽáŠá á¨áá á¨áá¨áŤ áá¨áá á ááĽáˇáᢠá áá°áá áá áľ á¨PostgreSQL ááśá˝ á ááąá "áááá°á" áĽá áá áĽáá°ááá á ááá¨áľ áĽáááľáááᢠááá áá á¨á፠á ááľ, á ááśáá˛á áá˝á¨áá¨áá áá¨ááἠá áľááá áá, ááááŤáąá á áá á áŤáŁá˘ áá áĽá ᨠPostgreSQL á¸áá°á´áá˝ á áá, áľááá á¨ááá¨áľá á ááľ á¨áá á¨áľ áľááŞááśá˝á á áŁá áĽáŠ áá¨áŤ áĽááááá.
áááąá á°ááŁáŤáľ á¨áĽááŁá áĽááá˝ áááľááᣠáĽá áá PostgreSQL 9.6 á ááᢠáá˛áŤáá áá° 11.2 ááťáťá áĽáá˝ááá?
á 2 á°á¨ááá˝ áááľá¨á áĽáááľááá-ááááŞáŤ áá° 11.2 á áťá˝á, á¨ááŤá Patroni á áľááł.
PostgreSQL ááá
ᨠPostgreSQL áĽáŞáľá á ááĽááľ áááááᣠá ááŤáŠá áá áá -k, á á¨áľáá á°á¨á áááááá˝ á á˛áľá áá áĽáá°ááá አáĽá áááĽáá áá áłáľ á áŤáľáááá. á 300-400 áᣠáá°á¨áľ, áááá 1 á°á¨ááľ áááľáłá.
áĽá áťááśá˝ á áá ᣠáľááá áááá á áŤáľ-á°á áá¨ááá á áá áľá˘ áá áá áááľá¨á á á ááá á¨ááťáťáŤ áá°áąá ááĽá á¨ááŤáľá°áááľ ááťá á¨áá˝á á¨ááŤááť áá˝áá á˝ááááĄ-
/usr/lib/postgresql/11/bin/pg_upgrade
<b>--link </b>
--old-datadir='' --new-datadir=''
--old-bindir='' --new-bindir=''
--old-options=' -c config_file='
--new-options=' -c config_file='
áĽáá áá ááťáťáŤáá á¨ááááá á ááľ á áááŞáŤá áá¨ááá áĽááłááŚáľ áἠáááľ áŤáľáááá -- á á¨áááĽááťáťá ááťááá ááá¨áááĽ. á¨áĽá áľááŞááľ áĽáá˛á á¨ááťáťáŤ áááá áá á¨áśá˝á áá°áŤáᢠá¨áĽá áľááŞááľ á 30 á°á¨ááľ ááľáĽ á°á áá áá, áá á á áŁá áĽáŠ áá¤áľ áá.
Patroni á áŤáľáááŠ
ááá°ááá á˝áá ááááłáľ, ᨠPatroni áá á¨áľá áĽáť áááá¨áą. áŚáá´ááá áá¨áᝠᨠinitdb áá á¨ááłá áá á á ááᣠáĽáąá Patroni ááááŞáŤ á˛ááአá á˛áľ á¨ááἠááł á¨ááľááá áááááľ á áá áľá˘ ááá áá á áľááľá á¨á°ááá á¨ááἠááł áľáááᣠáá á ááá á ááá á¨áááአááľáĽ á áľááá°áááá˘
Patroni ááľá á áá á¨á ᨠPostgreSQL áááľá°á áá ááŤá áľáááá áĽá áĽáąá ááľáŹáľ áľááááᣠá á˛áľ á˝áá á áá ááᥠáááąá á ááááŽá˝ áĽáá° á᪠áááŠá˘ Patroni áľá áááľá°á ááááŞáŤ áááł ááá á¨ááŤááá ááá á¨áá áĽá áááąáá á ááááŽá˝ á°ááłáłá áľá áŤáá¸á áĽáá° áááľ á¨á°ááŤáŠ ááááá˝ ááááá ááááŤáᢠáá áá á˝áá ááááłáľ áááŤáá á áŁáŞáŤá áá áŁáá áá¨á áá°á¨á áŤáľáááááłá
rm -rf /var/lib/postgresql/
áá á áŁáŞáŤá áá áĽáť áá°á¨á á áá áľ!
áášá á á á˛ááá Patroni á¨áá á¨áľ áŁáá á ááŞá áá áŤá áĽá áá° á áá ááááłá áĽá á áá áááľ áá á¨áľ á áá áŤááá áááł ááááá˘
ááá áŤáá áá á˝áá ááá á¨PostgreSQL áľáĽáľáŚá˝ á ááŁáŞ áá áá°á¨áá¸á ááᢠáĽáŤááłááą ááá áľáááá ááá á¨ááŤáá á¨áá áá á¨á°ááá° ááᢠááá áá Patroni ááá áá á˛ááá ááá áľáĽáľáŚá˝ áአáľá áááŤá¸á áááŁá. áááľáá á PostgreSQL áá á ááľáĽ á¨áááľá°á áľá ááá¨á ááá˘
á¨áááľ áá¨áŤ
á áŚááśá˝ áá á¨á°á ááá áááľ á¨ááŤáľááľá áá¨áŤ ááá¨ááᢠáááą á ááŤá áááłá áĽá´áłá˝á áá á˛á°ááľáŁ á°ááłáłá áá¨áŤá á°ááááᣠá ááľ ááłá á¨PostgreSQL á᪠áá á áĽáá°ááᢠá ááśáá˛á á áááłáŤáą áĽáá°á á á áá á°ááˇáᥠPatroni ááŞáá áááŚáŁ áŽáá°á-á áĽááľ á¨PgBouncer áá á¨áľá á ááá áĽáá°áá áĽáá˛áŤá áľáĽáá ááłáᢠá ááŤáá ááľáĽ á ááŤááśáťá˝á áá°á¨áľ á¨20-30 á°á¨ááľ áááá¨áśá˝ áĽá á¨áá¨á ááą áá áŤáá áááááľ áá á á°áŤáŤá á ááááŽá˝ áá á ááľá°á áá á áŤáá¸á áľá á°áśá˝ áĽááłá ááá˝ áá áᢠáá á¨á°ááá° áááł áá ᣠáĽáá°áá áŤá áĽá´áśá˝ ááľáááłá˝á á°ááŁáááľ áŤáá¸á áĽá á áĽááá áááľ á¨á áááááľ ááľáŤ áá á¨á°áťá áá¸áá˘
Patroni áá° áááľ áááŁáľ
á áá¤áąá, á¨áá¨á°ááá áĽá áľ á ááĽá°áá.
- áááľá á áĽááľ áá° PgBouncer á ááááŽá˝ á á°áá áĽá á áľááł;
- ᨠPostgreSQL ááááá˝ áá° áľáŞáľ 11.2;
- á¨áááľá°á áľá ááááŠ;
- ᨠPatroni áááľá°á á áááá ááá˘
á á°ááłáłá áá á¨áĽá áĽá áľ á ááááá áá áááľ ááťáá á¨ááááŞáŤáá ááĽáĽ áĽááľááá áŤáľá˝ááá ᣠáĽáŤááłááąá PgBouncer á á°áŤá á¨áľáŤá áĽááľáááľ áĽá á áአáá áááľá á áĽááľ áá°ááŤáľ áĽáá˝ááá ᢠáľááá á á°á¨ááá˘
áááŁá áá°ááŤáľáŁ áááá á¨ááŤááť áá˝áááľ á áá¨áŤ á áŤáŁá˘ áá áľááá¨áá áĽá á¨áá áľááŞááą á¨ááľáá¸á፠áá ááĽáŤááłááą áťááľ á¨1,5 áĽáľá¨ 2 á°áá áá áᢠá áááááłá˝áá áłáááἠáááá ááá á á¨á°áŤ áá° áĽáŤááłááą á¸áá°á´ áááá¨á áĽáá˝áááᣠáá áĽáŤááłááąá PostgreSQL ááĽá á°áááá˝ ááĽááľ á ááĽáᢠá áá á ááŁá áááŁá¸á á áá á¸áá°á´ áá áŤá á°á áááá˝ á áá áá áá á áá ááľáŤáľ á ááťááᣠáĽá áá ááĽá á°ááŁáááľ á¨áááá˘
á¨áá
áááł áááŤá á ᨠ3 áአá¨ááŤáá°á á¨áłáá°á áĽáá áá á. á áááááłá˝áá áá á áá ááá°á á¨ááἠááł ááááťá˝áá áľááťá˝á áá
ááłáá°ááľ áĽáŤ ááľáŽáľ ááᢠá¨áááĽáá ááľáŽáľ ááá¨á á ááľ áłáááľ áááˇáᣠáĽá áá áĽáá ááá á á
áĽá á°á¨á᪠ááááááľ áá°ááᢠá á°á áŁáŁáá ááᣠáĽáŤáłá˝áá á á°á¨ááŞááľ á áľá áĽáááᥠááĽáŤááłááą PostgreSQL á¸áá°á´áŁ á¨á
áἠáááá áá¨á ááŤá áŤáá°áłáŤ áľáá á
á á ááłá áĽá ááĽáŤááłááą áťááľ á á˛áľ ááłá á¨áá¨ááᣠáá
á á ááľáŽá áááľá°á ááľáĽ á á˛áľ á
á ááá á áá áľá˘ áá¨áá ááá°á¨á áľááá ááááá¸á . áá
áá á¨áľá
á°áľ á á°áá áááááľ á¨áľáˇá.
á áááááłá˝áá áĽáá°áá á áľááá¨ááᣠááá ááá áĽáá° áááŁá á°ááˇáᣠá°á áááá˝ ááľáŤáłá¸áá ááĽáááᣠááá áá á ááŤáááš áá á áááľá á ááááŽá˝ áá áŤáá°ááá° á¨áá°á áááľ áĽááłá á áľá°ááááá˘
ááá á áá°á á áŤáŁá˘ áá
áá á áá¨áá? áá
á˝áá áá á¨á° áááľá áĽáá° áŽáľ ááá
áá¨á°á áĽá á á ááá áá á¨á° áááśá˝á á¨áá¨áŤ á á¨áŁá˘ áĽáľá¨ áááľ ááĽáŤáľ áĽáá°ááŤáľááá á ááᣠáŤáłáŤáᢠáŤáá áá፠áŤááááá á˝áá ááááľ á áŁá ááá ááᢠáá áá? áááľá á ááááŞáŤ á áááľ áá áłá¨ ᣠáĽá á áá¨áŤ á á¨áŁá˘áὠᣠá áá¤áąá ᣠá áá¨áŤ á á¨áŁá˘áὠᣠá¨áááľá áĽáľá á¨áááľ á¨á áá áá áᢠáá á¨á°ááááľ á á ááą ááľáĽáŁ á¨áááľá á áĽááľ áá á˛á°áŤ á¨á˛áአááá°áľ á°ááˇáᢠáľááá
ᣠá ááá áááľáá á áááááᣠá áá
á á˝ááŠá ááłáá˘
ᨠPatroni áľáĽáľáĽá áĽáá°áá áŤáľáááŠ
ááá áá á á˛áľ á˝áá ááĽáááᣠááá áĽááłá áŤáá á¨á áááᢠáááľáá áľáááá á ááá á¨áááľá áááľ áľááá â Patroni á¨áá áááľá á áááá áá ááááá â ááá ááá áá°áŤá á¨áááá á áá áá á¨áááľááá ááľ á¨áááľá°á áĽááľááá°áááᢠááá áá á¨áááľá áááľá°á á¨áá¨á¨áť á°á¨á áá á°áá°á á¨áááľáá áááľ áľáĽáá á áá¨ááá áľ áá ááá á¨ááľáŽá áľáĽáľáŚá˝ á ááá áĽáá°áá ááአáĽá á áááἠááľáłááťá ááľáĽ á¨áá¨á°ááá áľá á°áľ á á¨áá˘
ERROR: get_cluster
Traceback (most recent call last):
...
RetryFailedError: 'Exceeded retry deadline'
ERROR: Error communicating with DCS
<b>LOG: database system is shut down</b>
á¨Patroni áááľá°á áľá áááľá°á áá¨á áááŁáľ á ááťáá áĽá áĽáá°áá áááŻáá˘
áááľá áááááľáŁ á github áá áŁá ááłá ᨠPatroni á°áŤá˛áá˝á á ááá°ááᢠá áááá ááááťá˝á áá ááťáťáŤáá˝á á áááááĄ-
consul:
consul.checks: []
bootstrap:
dcs:
retry_timeout: 8
á˝ááŠá á áá¨áŤ á áŤáŁá˘ áá ááľáá á˝ááá áĽá áĽááá á á ááŤáŽá˝ áĽá፠ááá¨ááᣠáá á ááŤáłáá áááł áĽááą á áá°áŠáá˘
á˝áአá ááá á áá°ááłá. á¨áá¨á°ááľá áááľááá˝ áááá¨á á á á°áá:
- á áĽáŤááłáṠᨠPatroni áááľá°á ááłá áá á¨áááľá ááŞáá áá ááá˘
- á áŽáą ááľáĽ áŤááá á˝áá áŤáľá°áŤááá˘
áľá á°áą á¨áľ áĽáá°á°á¨á°á° áĽáá¨áłááᥠá˝áአááááŁáľ á áááá ááá áŤáá°áťá¨á ááŁáŞ áá ááĽá፠á á ááá ááᢠá¨áá¨á¨áťá á¨áááľá á áááá á¨áááľá°á á˛áááľ á á ááá á¨áááľá áááľá°á á¨á ááľ á°á¨ááľ á áá ááááᣠá áá ááááŤáľ ááľáŽá á¨áááľá°áá áááł ááááľ á ááťáá áĽá áááá áľáĽáľáĽ áĽáá°áá áŤáľáááŤáá˘
áĽáá° áĽáľá ááᣠááá á°á¨á᪠áľá á°áśá˝ á ááá áááá˘
Patroni áá áá áá¤áśá˝
ááľáŽá á á°áłáŤ áááł á¨á°ááᨠá áá á áĽáŤááłááą ááá ááľáĽ á°á¨á᪠á
á á ááááᢠá áá á áĽáŤááłááą áááľá°á ááľáĽ á¨ááá á° ááŁá¤á á ááłáŤ á áᥠá ááľ á᪠ââáĽá áááľ á
ááá˝áŁ á˛ááአá ááá á¨á°á°áá á áá´áá˛ááľá˘
ááľáŽá á ááá¨áľ áá á¨áŚáľáľ ááŤáľ á áá áĽá¨á°áŤ áá. á áá
áá áĽááą áĽáá ááááłáľ ááľáááá á˘áá á˝ááᢠá á
ááĄáŁ á¨á ááą ááá á᪠á AWS ááľáĽ áá°áŁ á ááśáá˛á ááľááľ á°ááˇá áĽá á°á áááá˝ ááľáŤáłá¸áá ááĽáááᢠááľáŽá áá áĽáŤáá á áááˇá.
ᨠPatroni á á ááá áľáá˝ áá áááŤáĄ-
- á¨áá á¨áľ áááŚá˝ áááááľá˘ á á ááľ ááłá áá á ááááŠá ááá¨á á á áá áĽá áĽáľá¨ áá áááľá°á áľá¨áľ ááłáŁá. á á˛áąá áá á ááá°áá á áłáá ááľááá áŤáľááá Patroni áŤáłáá ááłáᢠPatroni áááá áááľá°á á á ááľ áľááá áĽáá°áá ááľááá áá˝ááᣠáá á°áá á áŁá ááš ááá˘
- á áŤáľ-á°á á áááłáŤáľ áá°áŤá áĽá áĽáá ááááłáľ á áľááľá á˝ááá˘
- ᨠPostgreSQL ááá áŤá á¨áá°áá áŞáŤ áá፠ááᢠááááŞáŤ á ááášá áá° á á˛áą áľáŞáľ áááá á ááĽááľáŁ á¨á፠á Patroni áááľá°á ááľáĽ áŤááá á᪠áááᥠáĽá á¨áľáŽáá á᪠áŤáááᢠá áá áááł, á ááśáá˛á ááľááľ á áľáááá áá¨áŤ áá¨á°áłá.
ááá: hab.com