αα αααα»αα’ααααααααα»αααΉαααααΆααα’αααααΈαααααααααΎαααΆαααααααα αΆααααΆαα’ααα±αααα α»α PostgreSQL α ααα»α’αααΈααΆαααΆααΆααααΆαααΆααΏαααααΆαααααααΆααααΎα αα·αα’αααΈαααααΆαααΎαα‘αΎααα ααΈαααα ααα
ααΎαααΆαααααΆαααααααα»ααααααα α’αααααααΎααααΆαα 2,5 ααΆαααΆαααα ααΌααΆαααα·ααααα α’αααααααΎααααΆααααααα 50K+ ααΆαααααΆααααααα αααΆαααΈαααααΆαααΈααΆαααα Amazone αααα»αααααααα½αααααααααα’ααα‘ααα 100+ servers ααααααααααΆαααα»αααααΎαααΆαα₯αααααα ααααααα»ααααααααΎααα 50 αααα·ααα ααΆαα½αααΌαααααΆααα·ααααααα
αααααααΆααααααααΆααααΌαααΊααΆαααααα·ααΈ Java αααα monolithic ααααααααααααΆααΆαααααΆαα websocket αααααΆαα½αα’αα·αα·ααα αα
ααααααα’αααααααΎααααΆααααΆα
αααΎαααααΎααΆααα
ααΎααααΆααααα½ααααα»αααααααα½α αα½αααααΆααα’ααααΎαααΆαααααΆααααααΌααα
αααα»ααααααααΆααΆααααααα ααΈαααααααΎααααααααΆαααααΆααααααΌαααΈαα½αααα
αααα»αααΌαααααΆααα·ααααααα ααΎαααΆαααααΎαααα αα 10K αααα»ααα½ααα·ααΆααΈαα
ααΆααααΌαααααΆααα·ααααααααααααΎαα αα
ααααααα»αααααααααα»ααα
αααα»α Redis ααΎααααααααααΎ 80-100K αααα»ααα½ααα·ααΆααΈα
α ααα»α’αααΈααΆαααΆααΎαααααΌαααΈ Redis αα PostgreSQL
ααααΌα ααααΆααααααααααΎαααΆαααααΎααΆαααΆαα½α Redis αααααΆααααΆαααααααααααΆααααααααααΆαα»ααα·ααααααααΆααα’αααα αααα»α RAM αααααααΆαααΈαααα
αα»ααααααααα·αααα Redisα
- ααααΏαααααΎαααααααα, αααααΆααα α’αααΈααααααααΆαααααΌαααΆααααααΆαα»ααα αααα»αααΆαα αα αΆα;
- ααΆαααΆααααα½αααααΆαααααα»ααα»α αα·αααΆαα ααααα
αα»ααα·ααααα·αα Redis αααααΆααααΎα:
- αα·αααΆαααααα·ααααα·ααΆααα·αααααΆααααα ααΎαααΆαααααΆααΆααααααααααΎαα ααααα·ααααααααα·ααΈααααααΎαα ααΆα’αα»αα ααΆαα·ααααααααααΎαααΆαααα’αα α αΎααααααΌαα±αααααααααΌααααα»αααααΆαααααΆααα
- α ααα½ααα·ααααααααααΌαααΆαααααααααα ααα½αα’αααα αα αΆαα αα ααααααα ααα½ααα·ααααααααΎαα‘αΎα α’αααα αα αΆαααΉαααΎαα‘αΎα α αΎααα ααΈαααα αα ααΎαααΉαααααΎαααΆααα ααααααααααααα»αααααΆαααααΎαααΎα ααααα αααα»α AWS αααααΌαα±ααααααααααααΆααααααααααΎαααΎααααΈααααΆααααααΌαααααααααααααα»α
- ααΆα αΆαααΆα ααααα»αααΆααααααΆααααα·α latency ααΆαααΆαα·α αα ααΈαααααα ααΎαβααΆαβααααΎβα αααΎαβααΆααα ααααα·ααααααΆαααααα’αααα»ααααααΆααααΎαααΊ 17-20 ms α αα ααααα·α 30-40 ms ααΎαααα½αααΆαααΆαααααΎααααααΆαααΌαα ααααααααΎααΈαααααα·ααΈααααααΎα αα·αααΆαααααΎα±ααααΌα ααααΆααααααααααΎαα ααΆα’αα»αα ααΆααΆαααΎαα‘αΎαα ααααααΎααα αααα»ααααααααΆ ααααΆα 2018 αα ααααααααααΈαα½αααΆαα½α Redis αααααΆααα ααα»αααα½αα ααα½αααΆαααα½αααΆααααααΆαααα 2 ααα αααΎαααΆαααααααΆα ααΎααααΈαααααααΆααααα αΆ ααΎαααΆαααααααααααΆααααααΆαααααααΆααααααααααΆααααΆαααααΆαααααα·αααΆαααααααα»α α αΎαααΆααααα½αα§ααΆα ααα Redis αααααΆααααα αΆα
- ααΆααΆααααα½ααααα»αααΆαααα½αααΆαααΆααα·ααααΈαααααΆααααααΆαααα·αααααα αααααΈααΆααΆαααα α»αααΌα ααΆα αα αααα»αααΌα α αΎααααααΆααααα αααΆααααα αααΎααααα»αααΆααααααααΌαααΎααααΈαααα·αααααααααα
ααΎαααΆααα·αααΌαααΈαα»ααα·ααααα· α αΎαααΆαααΉαααΆ ααΎαααααΌαααΆαααααΆααααααΌααα ααα’αααΈαααααΆααααααΆααααα½α αααααΆαααααα·ααααα·ααΆαααααααΆ αα·ααα·α ααΆαααΆαααΉαααα’αααα ααΎααΆαααΊααααΆαα ααΆαααααΎααΆαααααΆαααααΆα αα·ααΆααααααΎαααΆα αααΎα αα·αααααΎαααΎα PostgreSQL α
ααΎαααΆαααααΆααααααΌααα
ααΆααααΌαααααΆααα·ααααααααααΈα’αααααααα 1,5 ααααΆαααα αΎα α αΎαααΆαααααΆααααΈαααααααααΌα
αα½ααααα·αααααα ααΌα
ααααα₯α‘αΌααααααΎααααα»αααααΎααΆααααα»ααααααααΆαααααΆααΆαα½α Redis αα·α PostgreSQL α ααααααΆαααααααα’αααΈααααΆααααΆαααααΆαααααΆααααααΌα αα·αααΆαααααΆααααααΌααα·αααααααααΆαααΌαααααΆααα·ααααααααααΌαααΆαααααααα
αααα»α
αα
ααααααααΎαα
αΆααααααΎαααααΆααααααΌαααααΌα αααααα·ααΈααααααΎαααΆαααααΎααΆααααααααΆααααΆαα½αααΌαααααΆααα·αααααα α αΎαα
αΌαααααΎαα Redis αα·α PostgreSQL α α
ααααα PostgreSQL ααΆααα αα·αα
ααααααΆαα½αααΆαα
ααααα’ααααΆαα αααααΆααααααααααααααΆαααααΌαααααΆααα·ααααααααΎααα
ααΌα
αααα
ααΆαα’αα»αααα PgBouncer
αααααααααααΎααααα»αααααΆααααΈ ααα·ααααααααα»αα’αα·αααααααααα α ααα½αα’αααααααΎααααΆαα αα·αα ααα½ααααΆαααΈααααααααααΎααΆαααΆαα½α PostgreSQL ααΆαααΎαα‘αΎα α αΎαααΎαα αΆααααααΎαααααααΆααααααΆααα PostgreSQL αααααΎαααααΎαααΆαααΆα ααααα‘αααααααΆααααΆααααααΆααααΈαα½αα αα·αααααΎααααΆααααααΆαα α’αααα’αΆα αααααΎαα ααα½αααααΆααααααΆαααα αΌααααα ααα»α ααΆααααΆαααα½α ααΎαα·αααΌα αααααα ααΆαα±ααΆαααΎααααΈααα½αααΆαααααΎαααΆαααΌαααααΆααα·ααααααααα’αααα»αα αααααΎαααααα’αααα»αααααΆαααΆαααααααααΊααααΎαααΎαα’ααααααααααααααΆααααααΆαααααααΉααααα ααΈαα»αααΌαααααΆαα
ααΎαααΆααααααΎαααΈααααααΆααα’ααααααααααααααΆααααααΆααα Pgpool αα·α PgBouncer α ααα»ααααααΈαα½ααα·αααΆααααααααααααα·ααααα·ααΆαααααΆαααααΎααΆαααΆαα½αααΌαααααΆααα·ααααααααΌα ααααααΎαααΆαααααΎαααΎα PgBouncer α
ααΎαααΆααααα
ααααααααΆαααααΆαααΆαααΌα
ααΆααααααα αααααα·ααΈααααααΎαα
αΌαααααΎ PgBouncer αα½α ααααα
ααΈααααααααααΊααΆαα PostgreSQL α αΎααα
ααΈαααααααααΈαα½ααααΊαα½αα
ααααααΆαα½αααΆαα
ααααα’ααααΆαα
αααα»ααααααΆαα½αααααΆααα ααΎααα·αα’αΆα
αααααΆαα»αα
ααα½ααα·ααααααααΆααααΌααα
αααα»α PostgreSQL α αΎαααααΏαααααΆαααααΎααΆαααΆαα½αααΌαααααΆααα·ααααααααΆαααΆααααααΆαααααααΆααααΎα ααΌα
ααααααΎαααΆαα
αΆααααααΎαααααα PostgreSQL αα
ααααα·ααααααα·ααΈα αααααααΆααααααααΆααα·αααααΆααΆαααΎααΊααΆαααΆαααΆααααα½ααααααΆααααΏααααα αα
ααααααααα PostgreSQL shard ααααΈ ααΆαααααααααΆααααΎααααΈααααΎαα
αα
α»ααααααααΆαααΆαααααααα
ααΆαααααααα PgBouncer α αΎααααααα·ααΈα’αΆα
ααααΎαααΆαααααΆααααΆαα½α shard ααααΈα
ααΆααααΆααα PgBouncer
αααααααΆααααααααααΎαααΆααα αΌααααααααααα§ααΆα ααα PgBouncer αααα½ααααααΆαααααΆααα ααΎααααα·ααα αααα»α AWS ααααααααααααΈααΆααα’αααααα»αααααΎαααΆαααΎαααααααΉααααααΆααααΆαααΆααααααα αααα»αααααΈαααααα ααααα»ααααΆααααααααΆααααΈαα αααααααΉαααααΈ α αΎαααααΎαααΆααααααααα ααΆααΆαααΎαα‘αΎαααΆαα½α PgBouncer ααα»ααααααΆαα·αα’αΆα ααααΎααΆαααα ααααααβααβααΆαβααααΆααβα α»αβαααβααΊβααΆαβαα·αβα’αΆα βααααΎβααΆαβααβααααΆααααβααααβααΎαβαααααα 25 ααΆααΈβα AWS ααααΆαα’ααααααΎααΆαααααΎααααΆααααααααααααΆααααααΆαααΆααααααα ααααα·αααααΌαααΆαα’αα»αααααα αααα»αααααααααααααΎααα ααααααα
αααααΆααααΈααα ααΎαααΆααα·ααααΆαααααα ααα’αααΈααΆαα’ααα±αα ααααααα α»ααααα PgBouncer αα·ααααα»α PostgreSQL ααΈαααααααααΆαααΆαααααααααααΆα’αΆα ααΎαα‘αΎαααΆαα½αααααΈααΆαα½ααα αααα»αααααΈ AWS ααααααΎαα
ααΎαααΆααααααΎααααααααΆαααααΆαα’αααααααααα α»α PgBouncer ααΌα ααΆαααααα: αααΆαααΈααααααααα·ααΈααΆααα’ααα αΌαααααΎ Network Load Balancer ααααα ααΈαααααααΆα PgBouncers ααΈαα PgBouncer ααΈαα½ααααΎααα PostgreSQL ααΌα ααααΆαα shard ααΈαα½ααα ααααα·αααΎααΆαααΆαα AWS ααΎαα‘αΎαααααααα α ααΆα αααααΆααα’ααααααΌαααΆααααααΌαααααααΆαααα PgBouncer ααααααααα Network Load Balancer failover ααααΌαααΆααααααααα AWS α
αααααααΆααααααααααΎα±ααααΆαααΆαααΆααααα½ααααα»αααΆααααααααααΆαααΈααα PgBouncer ααααΈα
αααααΎα PostgreSQL Failover Cluster
αα ααααααααααΆααααα αΆααα ααΎαααΆααα·α αΆαααΆααΎαααααΎαααααααααααΆα ααΆααααΆαααααααααααααααααα½αα―α, repmgr, AWS RDS, Patroni α
ααααααΈαααααααααααααααα½αα―αα
αα½αααα’αΆα αααα½ααα·αα·αααααΆαααΆααααααα α αΎααααα»αααααΈααΆαααΆααααΆααα ααααααααααΆαααΆαα αααααα αα αα·αααααΎαα αα α»ααααααααΆαααΆαααααααα ααΆαααααααα PgBouncer α
αα»ααααααααα·αααα·ααΈααΆααααααααααΊααΆαααΆαααααααα»α αααααα’ααααααααααααααΈαααααααα½αα―α α αΎααααα αααΆααααΈαααααααααΆααααΎαααΆαα
αα»ααα·ααααα·:
- αααααα ααααΆαα·αααααΆαααα αααα»ααα αα·αααΆααααΆααααααααΆαα’αΆα ααΉαααΎαα‘αΎαα αααΆαααβαααβαα·αβααΉαβααΈβααΏαβαααβααΉαβααΎαβααααααβααΆαβα ααααβαα βααα αΆαα αααβααα αΆααβα αΆααβααΉαβααααβααααΎα ααΆαααααα ααΎαααΉαααα½αααΆααααΆαααΈαααα ααα½αααΈααααα»ααα½ααΆααΈααΆαα α αΎαααΎαααΉααα·αααΉαααΆαα½αααΆαααα»αα αααααα½αααΆααΆααα·ααααααα α»αααααααααα»ααααααα ααααΆαααΆααααααααΌαααΆαααα α αααααααΆααααααα½αααααΆα;
- ααΎαβααααΌαβααΆαβαα»αβα ααβαααβααααΆαβααΆαβααααΎαβααα αα αααα»αααΆαααααααα ααΆααααααααααααααΎα αα αα·αα αααααα½α αααααΆααααΈααααΌα ααΆαα ααααααΉαααααΆααααΈα‘αΎαααΎαα α αΎαααΎααααααΆαα αααΆααα αααααααα αΎα ααΌα ααααααΎαααααΌαααααααααΆαα ααααααααΈαααααα
- ααΎαααααΌαααΆαααΆααααα½ααα·αα·αααααααααααααααα·ααααα·ααΆααααΆααα ααααααααΎαααΆα 12 PostgreSQL shards αααααΆααααααΆααΎαααααΌααααα½ααα·αα·ααα 12 clusters α ααΆαα½αααΉαααΆαααΎαα‘αΎαααα ααα½α shards α’αααααααααΌαα αα αΆαααΎααααΈααααΎαα αα α»ααααααααΆαααΆααααΆααααααααα
ααΆααααΆααααααα»αααΆααααααααααααα½αα―αααΎααα αααα»αααααΆαααΆαα α αΎαααΆαααΆαααΆαααΆααααααααα·αααααΆααα ααΆαα½αααΉαα ααααα PostgreSQL αααα½α αααααΉαααααΆαααΆαααααΎαααΆααααα½ααααα»α ααα»ααααααΆαα·αααΆαααα ααα ααΌα ααααααΆαα·ααααααα·αααααααΆααααΎαααα
Repmgr
αααααα·ααΈαααααααααααΆαα αααααααααΆαααααα»α PostgreSQL αααα’αΆα αααααααααααααα·ααααα·ααΆαααα ααααα PostgreSQL α αααα»ααααααΆαα½αααααΆαααααΆαα·αααΆαααΆααααΆααααααααααααααααααα·α ααααΈαααα’αααααααααΌα αααααααααΆααααΆαααΆαα’αααααΉαααααΌαααααα "αα»α" ααααΆαααααα½αααααα’ααααα ααΎααααΌααααααααααααΆααααααΆααααα ααα ααΌα ααααβα’αααΈαβα’αΆα βααααααααΆαβααΆααααβαααα»αααααΆαβααΆαβααααααΈαβαααβαααααβαααβαααα½αα―α ααΌα ααααβααΎαβαα·αβααΆαβααΆααααα Repmgr ααα
AWS RDS
ααΆααααα’αααΈααααααααΆααααααΎαααααΌαααΆα ααΉαααΈαααααααααΎαααΆαααααα»ααα»α αα·ααααααΆααΆαααααΆααααααΆααααααα ααΆααΆαααΆαααααΆααααααΌααααααααααααααααα·α αα ααααααααααααΆαα α’αααα ααααααααΆαααΆααααααΈ α αΎα AWS ααααΆααααααΌααααααααααΆ dns αα ααΆααααααΈ ααααααααΆαα ααααα’αΆα ααΆαααΈααΆαααα 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 ααΆαααααααααααα·αααΈααααααααΉααααααα§ααΆα αααααααααΆ αααααΆα ααα»ααα αααααααααΆααααΆαααααααα αααααααααααΆααααα
αααΆααΌααΈ
αααααΊααΆααααΌ python αααααΆααααααααααα PostgreSQL ααΆαα½αααΉαα―αααΆαααα’ ααΆααααΆααααααααααααααααααα· αα·αααΌαααααααα ααΎ github α
αα»ααααααααα·αααα Patroniα
- αααΆαααΆααααααααααααα ααΆααααααααααΈαα½ααααααΌαααΆααα·αααααΆ ααΆα αααΆααα’αααΈαααααααααΆααααΎαααΆαα
- ααΆααααΆααααααααααααααααααα·ααααΎαααΆαα ααααΈαααα’αα;
- αααααααΆ python α αΎααααααΆαααΎααααα½αα―ααααααα αααΎααα αααα»α python ααΆααΉαααΆααααααΆααααα½ααααααΆαααα½αααΎααααα»αααΆααααααααΆααααα αΆ α αΎααααα ααααΆαα½ααααααΆαα’αα·αααααααααααααααααα
- αααααααααααΆαααααα»α PostgreSQL α’αα»ααααΆαα±ααα’αααααααΆααααααΌαααΆαααααααα ααΆαααααααααα ααΎααααΆααααΆααα’ααααα ααααααααα»αααααααα½α α αΎαααααα·αααΎα αααααααααΌαα αΆααααααΎαα‘αΎααα·αααΎααααΈα’αα»ααααααΆαααααααα ααΆααααααααααααΈ αααααΆα’αΆα ααααΌαααΆαααααΎααααααααααααααΎ Patroni α
αα»ααα·ααααα·:
- ααΆαα·αα αααΆααααΈα―αααΆαα’αααΈααααααααΎααΆαααΆαα½α PgBouncer α±ααααΆαααααΉαααααΌαααα αααααΈααΆααΆαα·ααΆααααα»αααΆαα α ααΆααΆααααααα ααΈαααααααΆααα·α αα αααα Patroni ααΊααΎααααΈααααααααα PostgreSQL α αΎααααααααααΆααααααΆαααα Patroni ααΉααα ααΆαααα αΆααααααΎααα½α αα α αΎαα
- ααΆαα§ααΆα ααααα½αα ααα½αααααΆαα’αα»αααα Patroni ααΎααα·ααΆααααααααααααααΆαα§ααΆα αααααΆα αααΎαααααΆαα’αα»ααααααΈααααΌαα
ααΆαααααα ααΎαααΆαααααΎαααΎα Patroni ααΎααααΈαααααΎαα ααααααααΆαααα
ααααΎαααΆαα’αα»αααα Patroni
αα»αααα Patroni ααΎαααΆα 12 PostgreSQL shards αα
αααα»αααΆαααααααα
ααΆαααααααααααααα½α αα·αα
αααααα½αααΆαα½αααΆαα
ααααα’ααααΆαα αααΆαααΈααααααααα·ααΈααΆαα
αΌαααααΎααΌαααααΆααα·ααααααααΆαααα Network Load Balancer ααααα
ααΈααααααααααΆα§ααΆα αααααΈαααΆαα½α PgBouncer α αΎααα
ααΈααααααα½αααΆααΊααΆαααΆαααΈααα PostgreSQL ααΆααα’ααα
ααΎααααΈα’αα»αααα Patroni ααΎαααααΌαααααΎαααΎαααΆαααααααα
ααΆααααααααα
αααααααΆααααα»ααααααΆαα
ααα
αΆαα Patroni ααααΎααΆαααΆαα½ααααααααααααα»αααααααα
ααΆααααααααα
ααα
αΆαααΌα
ααΆ etcd, Zookeeper, Consul α ααΎαααΎαααααΆαα
ααααααα»αααα»ααααααααα
ααΎααΈααααΆα αααααααΎααΆααα½αααααΆααΆαα½α Vault α αΎαααΎααα·αααααΎααΆαααααα α ααα»ααααααα’ααΎααααΈα
αΆααααααΎαααααΎααααΆαααα»αααα»ααααααΆααααααααααααααΆαααααααα»αα
ααααααα Patroni ααααΎααΆαααΆαα½ααα»αααα»α
ααΎαααΆαα ααααααα»αααα»ααααααΆαααΈααααΆαα αα·αα ααααα Patroni αααααΆαα’αααααΉαααΆααα·αα’αααα αααα (αα αααα»α Patroni ααααααΌαααΆαααα α ααΆα’αααααΉαααΆαα ααααα α αΎαααΆαααααααΌαααΆαααα α ααΆα αααα)α α§ααΆα αααααΈαα½ααααα ααααα 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 ααΆααα½ααααααααΆααααα αΆα ααΏαααα’ααΆααααΌαααΆααααααααΆ python α ααΆααααααΆαααΆαααΆαααααααααΆαααΈααα·αααααΌαααΆααααααΆααα·ααΈααΆαα½αααα αΎααα·ααΈααΆαααααΌααααααααΆαααα αααα»ααααααααΆαααα αααααΆααααααααααα»αααααααα ααΆααααααααααΆαααΆααααααΆααααααΎααΆαααΆαα½ααα»αααα»αααΎααα ααΌα ααΎαα
consul:
host: server.production.consul:8080
scheme: https
verify: true
cacert: {{ consul_cacert }}
cert: {{ consul_cert }}
key: {{ consul_key }}
αα»αααα»α-ααααΌ
ααΌα αααα ααΎαααΆαααααΎαααΎααααααααααα»ααααααΆααααΆαααααααα ααΆααααααααα α₯α‘αΌααααααΎαααααΌααααααΈααααααα PgBouncer ααΉαααααΌαααΆααααααααααααΆαα αααααααΆααααααΌαα’αααααΉαααΆααα αααα»ααααα»α Patroni α αα·αααΆαα ααααΎαα αααααααα½αααααα αααα»αα―αααΆααα ααΈαααααα αα ααΈααα ααΆαααααΆααα ααΆαααΆαααΆαα½α PgBouncer αα·αααααΌαααΆααα·αααααΆααα
αααα»αααΆαααααααααααααααααΆα ααΎαααΆαααααΎαα’ααααααα½α (ααΆα’αα»αααααα»ααα·αα αΆαα αααααΎααα) αααααΆααααΌαααΆααααααααΆ Π‘onsul-template αα½αααΆαα αααΎααααα»αααΆαααααΌαααα PgBouncer αα·α Patroni α αααααΆααααα»αα±ααααΎααααΎαα’αααααααΈααααααα Consul-template ααααΎαααΆαα
ααΆααΆαααααααααΆαααΆ Consul-template αααα½ααα·αα·αααααΆαα·α αα ααΌαααΆαααααααα ααΆαααααααααααααα»α PostgreSQL αα αααα»ααα»αααα»αα αα ααααααα’αααααΉαααΆαααααΆααααααΌα ααΆααααΎαα αα α»ααααααααΆαααΆαααααααα ααΆαααααααα PgBouncer α αΎαααααΎααΆααααααααΆααΎααααΈαααα»αααΆα‘αΎααα·αα
ααΆαααΌαααααααααΌααΊααΆααΆααααΌαααΆααααααΆαα»αααΆααΌα ααΌα
αααααα
ααααααααα shard ααααΈ ααΆαααααααααΆαααααα»αααΆαααααΎααΆαααααααααΆα
α·αααααααΈ αα·αααααΎαα
αα
α»ααααααααΆαααααΌαααααααααααααααα· αααααΆααααα αααααΆαα
ααΆααααααααααΆαααααΆαααααΌαα
ααααΆααααααααααααΈααΆαα½α Patroni
ααΆααααααααΎαααα½αααΆααααααααΆαααααΆαααΆαααΌα
ααΆααααααα
αααΆαααΈααααααααα·ααΈααΆααα’ααα
αΌαααααΎαααα»ααα β ααΆαα§ααΆα αααααΈααα PgBouncer αα
ααΈαααααααΆ β αα
ααΎα§ααΆα αααααΈαα½αα Consul-template ααααΌαααΆαααΎαααααΎαααΆα ααααααα½ααα·αα·αααααααΆαααΆααααααα»α Patroni ααΈαα½αα αα·αααΆαααΆαααΆαααΆαααααααααααΆαααααααα
ααΆαααααααα PgBouncer αααααααΎααααΎαα
ααΆααα’αααααΉαααΆααα
αα
α»ααααααα αααααα»αααΈαα½ααα
ααΆαααααΎαααααααααα
ααΎαααΆαααααΎαααΆααααααααΆαααααα αα»ααααα αΆααααααΎαααΆαα ααΎααα·ααΆααΆαααΆαααααααΌα αα½α αα·ααα·αα·αααααΎαααααα·ααααα·ααΆαααααΆαααααΌααααααααααααααααα·α αα½αααααΆαααΎαααααΆα ααααΆααααΈααααΈααα α αΎααα αααααα αα½αααααΆα "αααααΆαα" ααααΉαααΆαααα αααααα αα αααα»α AWS αααααΊααΆααααααΌα ααΆααΆααα·α instance ααΆαααααα»αααΌαα
ααααΈααααααααααααα·ααααα»ααααααα 10-20 αα·ααΆααΈ α αΎααααααΆαααααααααααα
αΆααααααΎαααααΆααααΈααΆααααααΆα αααααΆααααααΆ α
ααααα Patroni ααααΎαααΆαααΆαααααΉαααααΌαα ααΆααΆαααααΆααααααΌαα’αααααΉαααΆα αααααΌαααααααΆααα
Π‘onsul α αΎα Π‘onsul-template ααΆαααααααααΆααααααααΆαα αααα½αααΆαααααααα
ααΆαααααααα PgBouncer α αΎαααααΎααΆααααααααΆααΎααααΈαααα»αα‘αΎααα·αα
ααΎααααΎααΌα ααααα ααΎααααΈααααα αααααααααα»αααααα αα·ααααααΆαααααααΆααα αΆααα·α αααα»α?
α’αααΈαααααΎαααΆααααΆαααα’α₯αααα αα! ααα»ααααααΆααααα½αααααΈ: ααΎααΆααΉαααααΎαααΆααααΆαααΌα ααααα αα αααααααααα»αααααα? ααΎααααΎααΌα ααααα ααΎααααΈααΆααα ααααΌαα’αααΈααααααααΆααα αααα»αααα·ααααααααΆαααΆαααα αα αα·αααααα»ααααα·ααΆα?
ααα·ααΆααΆαααΆααααααααααΎαααααΎααΆαααααΎααααααααα»ααα½αααΎαααααΎααααα½αααΈαα½αα ααΆααΆαααααααααΌα ααααΆααΆαααααα»ααα ααΉαααΆαααα·ααα αααα»αααααααααααααααΆαααααααα α αΎαααΆααααααΎααα·ααααααααΆααααααααααΆαααα·ααΆααααα αΆαααααα ααααΉαααΆαααα·αα ααΎααααααα α α·αααααααΆαααα "αααααΆαα" αα PostgreSQL ααααΆαααααα»αα’αα‘α»ααααααααΎααααα α αΎαααΎαααΆααΆαα’αααΈααΎαα‘αΎαα ααα»αααααα»αααα ααΆααΆαααΆααααααΆααααΆαααααα»αααΆααααα½ααα·αα·αααααΆααααα·ααααααααααααααααα· ααΈααααααα ααΎααα·ααααΆαααα ααΎαααΆα PostgreSQL shards ααΆα αααΎα ααΌα ααααααΎαααΉαααα½αααΆαααΆαααΆαααααααααα’ααααααααΈαααααααα ααΆαααααααααα»ααααααα·αα
ααΆαααΆαααΆααααΈαααΎααα ααΆααα α·α ααααΆ ααα»ααααααΎαααΆα PostgreSQL 9.6 α ααΎααΎαα’αΆα ααααΎα±αααααααΎαα‘αΎαααααΆαααα 11.2 ααΆααα?
ααΎααααααα α α·αααααααΎααΆααΆ 2 ααα αΆαα ααααΌαααααΎα±αααααααΎαα‘αΎααα 11.2 αααααΆααααααΎαααααΎαααΆα Patroni α
ααΆαααααΎαα αα α»ααααααααΆα PostgreSQL
ααΎααααΈααααΎαα αα α»ααααααααΆααααα PostgreSQL αααΆαααΆαααα αα ααΌαααααΎαααααΎα -kααααααα»αααααααααααΆααααΉαααααΌαααΆααααααΎααα ααΎααΆα α αΎααα·αα αΆαααΆα αα αααααα·ααααααααααα’αααααα αα ααΎααΌαααααΆααα 300-400 GB ααΆαααααΎαα αα α»ααααααααΆαααααΌαα αααΆαααα 1 αα·ααΆααΈα
ααΎαααΆααααααααΆα αααΎα ααΌα ααααααΆαα’αΆαααααααααΌαααααΎαααααααααααααααα·α ααΎααααΈααααΎααΌα αααα ααΎαααΆααααααααααα ααα Ansible ααααααααααααααααΎαααΆαα’αΆαααααααΆααααΌααααααΆααααΎαα
/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 αα·αααΉαα’αααΈααΆααα’ααα’αααΈααααΆαααΆαααααΌαααα ααααα α αΎαααααΆααΆαα αΆααααααΎααααΆαααΈαααααΆααααΈαααΆα αααααααΆα ααααα‘ααααΈααααααΆααααααααΌα ααααΆα ααΎααααΈαααααααΆααααα αΆααα α’αααααααΌααα»ααααααααΆααα·αααααααα ααΎ slaveα
rm -rf /var/lib/postgresql/
αααααααΌαααααΎααααΎααΆααα!
αα ααααααααΆαα ααααααα’αΆαααααΌαααΆαααααΆαα Patroni αααααΎαααααΆαααααα»ααα»αααΌαααααΆα αα·αααααΆαααΆαα ααΆαα αααα α αΎααααααΆααααααΆαααΆααααααΆαααΆααα αα α»ααααααααααα ααΆα wal logs α
ααΆαααααΆααα½αααααααααΎααα½ααααααααΊααΆα ααααα PostgreSQL ααΆααα’ααααααΌαααΆαααΆαααααααααααΆααααΆαααααΆαααΎαα αα ααααααα αααααααΈαα½αααα·αααΉαα’αααΈα’αααΈααααΆαα αα·ααα αα αααααΊααΆααΏαααααααΆα ααα»αααααα ααααααα’αααα ααααααΎ Patroni αααααΆααααα αααααααΆααα’ααααααΌαααααΆαααααααααα½ααααα αααααααααΆαααΊααΎααααΈααααΆααααααΌααααααα ααααααα αααα»αααΆαααααααα ααΆαααααααα PostgreSQL α
ααΆαααααΎααααααααα»α
ααΎαααΆαα αΆααααααΎαααΆαααΆαααααααααααααααααΎαααα·αααααα’αααααααΎααααΆαααα ααΎααααΆαα αα ααααααααααα»αααΆαααααααααααααααααα αΆαααααααααααΎα ααΎαααΆαααααΎαααααααΌα ααααΆααααααα ααΎαααΆααα·αα§ααΆα ααααα½αααΆαα½αααΉαα’αααααΉαααΆα PostgreSQL α ααΆααααΆααααααααααααααααααα·ααΆαααααΎαααΆαααΌα αααααΎαααααΉααα»αα Patroni ααΆαααααΆααααααΌαα’αααααΉαααΆα αα»αααα»α-ααααΌααΆαααααΎαα αα α»ααααααααΆαααΆαααααααα ααΆαααααααα PgBouncer α αΎαααΆαααααΎααΆααααααααΆααΎααααΈαααα»αα‘αΎααα·αα αααααΆαααααΆα ααααααααΎααα αααα»α Grafana ααΆα αααΆααααΆααααΆααΆαααΆααααααΆααααααΈ 20-30 αα·ααΆααΈ αα·αα ααα½αααΌα αα½αααααα α»αααΈαααΆαααΈααααααααΆααααααΉαααΆααααααΆαααα ααΌαααααΆααα·ααααααα αααααΊααΆααααΆαααΆαααααααΆ αααααααααααα’αΆα ααα½αααααΆααααααΆααααΆααααΆαααααααααΎα α αΎααα·αααΆααα’αααααΎαααΆαααααααααΆαααααΆααααα
ααΆα Patroni αα ααα·ααααα
ααΆααααααααΎαααΆααααααΎααααααΆαααΌα ααΆααααααα
- ααΆαααααααΆα Consul-template αα αααΆαααΈααα PgBouncer α αΎαααΎαααααΎαααΆαα
- PostgreSQL ααααΎαα αα α»ααααααααΆααα αααα 11.2;
- ααααΆααααααΌαααααααααα»α;
- ααΎαααααΎαααΆααααα»α Patroni α
αααα»ααααααΆαα½αααααΆααα αααααααΆαααααααααΎαα’αα»ααααΆαα±ααααΎααααααΎαα ααα»α ααααΌαααααΎααααααααααα ααΎαα’αΆα αα PgBouncer ααΈαα½ααα ααααΈααΆαααΆα α αΎαααΆαααααααΆα αα·αααααΎαααΆαααααΌαα»αααα»ααα ααΎααΆα ααΌα ααααααΎαααΆαααααΎα
αααααΆααααΆαααΆαααααααΆααα αα ααΎαααΆαααααΎ Ansible α αΆααααΆααααΈααΎαααΆαααΆαααααααααα αααααΆααα’αααα½α α αΎααα ααΎααα·ααΆααΆαααΆααααα α αΎααααααααΆααααα·ααααα·ααααααααΈαααααααααΊααΈ 1,5 αα 2 ααΆααΈαααααΆαα shard ααΈαα½ααα ααΎαβα’αΆα βααΆααβα ααβααΌαβα’αααΈβαααααβαααΆαβααΆβαα½αβ shard ααΈαα½ααβαααβαα·αβααααααβααααΆααααβααααβααΎα ααα»ααααβααΎαβααΉαβααααΌαβαα·α PostgreSQL ααΈαα½ααβααααααβααΆα αααΎαβααΆααΈα αααα»αααααΈααα α’αααααααΎααααΆαααααααΆααα·αααααααα ααΎ shard ααααα·αα’αΆα ααααΎαααΆαααααααααΆααααα αααααα α αΎαααααα·αα’αΆα ααα½αααααΆααααααΆαααα½αααΎαα
ααααΌαα
ααααΈααααΆαααΆααααααΊααΆαααααΆααααααΆαααααααα»α αααααααΎα‘αΎααααααΆαα 3 ααααααα αααααΊααΆαααα’α½α
αααααΆααααΆαααΆααααααΆαααααααα»α αα
ααααααααΎααα·αααααΆααααααααααΎαααΆαααααα»α αα·αααααΎα±αααααααΎαα‘αΎαααΌαα§ααΆα αααααΌαααααΆααα·ααααααααααααΎαα αα
βαααβαα½αβαααααΆα αβαααβαα αΌαβαααβαααα’α½α
βαααααΆαα α αΎαβααΎαβααΆαβαααααα
βα
α·αααβαααα
αΆαβα αΎαβαααα
αβααααααβαααα αααα»αα’αα‘α»αααααααα
αΆα ααΎαααααΆααΆαααα½αααΎααααααα αααααΆαα PostgreSQL shard ααΈαα½αα ααΎαααΆαααΎαα‘αΎαααΌαααΆαα
αααααα»ααα½ααααα»αααααΈααααααΆααααααα»αααΆααααααΆαα·ααααααα
α»αααααα α αΎαααΆαααααααα§ααΆα αααααααΈαααααΆαα shard ααΈαα½αα ααααα½αααααααΆαααΆααΆαα
ααααααααΈαα
αααα»αα
ααααα Patroni α ααΎααααΈαα»αα±ααααααα·ααααα·ααΆααααααααΆααΎααααΈαα»ααα·ααααααα ααΆααα’αααααααΆααα½αααΆαααααααα αΆαα·αααααααα α»αα
ααΎαααΆαα
αΆααααααΎαααααΆααααααααααΎαα‘αΎααα·α α’αααΈααααααααΆαααααΎαααΆαααΌα
αααααΆαα½ααα α’αααααααΎααααΆαααα
ααααααααααΎααΆα ααα»αααααα
ααΎααααΆα αα ααΎαααΆαααααααααΆααααΎαααΆααΆαααΆααααα»αααααααα·αααααααΆαα
ααΎαααΆαααΈααααα»αααα»αα
α ααα»α’αααΈααΆαααΆααΎααα·αααΎαααΆαα
αααα»αααα·ααΆααΆαααΆααααα? αααα αΆααααααα αΆααααΆαα
αααΆααααΆ α
αΆαααΆα
αααααΌαα’αα»ααααααΆαα αααααΆαα
ααΆααααααααααΆαααααΆαααααΌα αα·ααααααα’α αααααΆαα
ααΆααααααααααΆααααΌα α
αΆααααΈααα·ααΆααΆαααΆααααααα αΌααααααΆαααα·αα ααΎαα·αααΌα
ααααααααΆααΆααααα½αααΆαααααα»αααΆααααααααΆααααα αΆαααααΎαααΆαααα½αα ααΎααΆαα’αααΈααΎαα‘αΎα? αα»αααα»αβααΆαβαααα αΆαβαααα½αβααααΌαβααΎβααΆαβααα·α α αΎαβαααααΆααβααβαα
βααΎβααα·ααΆααΆαβααβααΆαβααααΎβααααα ααΆβαααααα αα
βαααα»αβααα·ααΆααΆαβααΆααααα ααααβαα»αααα»αβααΊβαααααβααΆαβααΆαβααα·αα ααααΆαααααα
αααα»αααΆαα
ααααααΆααα½α ααΆαααα
ααααΆα CPU ααααΌαααΆααααααααΆααα
αααααααΎααΆαααΆαα½ααα»αααα»α-ααααΌα ααΌα
αααα ααΎαααααΆααααααααΎαα
αα
α»ααααααααΆααα»αααα»α ααΌα
ααααααΆααααααααΆααααα αΆα
α αΆααααααΎααααα»α Patroni α‘αΎααα·α
αααβααΆβαααΆαβααΆ ααΎαβααα½αβααΆαβαααα αΆβααααΈβαα½α αααβααΎαβαα·αβααΆαβααααααβα‘αΎαα αα αααα’αΆααααααα»αααα»α ααΎαααααΆααααααααααΆαααα»αααα»αα ααααΈα ααααααααααααΎααΆααααααααΆα αΆαα ααααΈαα»αααα»α β 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 αα·αα’αΆα ααΆαααααααααΆαα’αααΈα αααααααααααΆ α αΎαα αΆααααααΎαα‘αΎααα·αααΆαααα
ααΎααααΈααααααααααααααααΆα ααΎαααΆαααΆααααα’ααααα·αααα Patroni ααΆαααααααα αΆαα ααΎ github α αα½αααααΆαααααΎα±αααααααα’α―αααΆαααααααα ααΆααααααααααααααΎαα
consul:
consul.checks: []
bootstrap:
dcs:
retry_timeout: 8
ααΎαα’αΆα α αααααααα αΆαα ααΎααα·ααΆααΆαααΆααααα αα·αααΆααααααααααΎαααΆααααααα ααΈααα ααα»ααααααΆα’αα»ααααΆαα·αααααΎαααΆαααα
αααα αΆαα αααα·αααΆαααααααααΆαα ααΎααααααααΉαααΆααααααααααααααΆαααΌα ααΆααααααα
- ααααΎααααΆααααΆααα»αααα»αααΎα§ααΆα ααααααα»α Patroni ααΈαα½ααα
- αααααααΆααααα αΆαα αααα»αααΌαα
ααΎααααααΈαααααααααααα α»αααΆαααΎαα‘αΎαα αααα αΆααΊαααα ααααΆααΆαααααΎααααΆααααΆαα’αααααααααΆαααΎα ααααα·αααααΌαααΆαααα·αααααΆααααα―αααΆαααααααα ααΆαααααααααααααα αα αααααααααΆαααΈααααα»αααα»αα α»ααααααααααΌαααΆαααα ααααΈα ααααα α ααααααα»αααα»αααΆααααΌααααα½αααΎαααΈαα½ααα·ααΆααΈ αααααΆαααααα Patroni αα·αα’αΆα ααα½αααΆαααααΆαααΆαααα ααααα αα·αα αΆααααααΎαα‘αΎααα·αααΆαααααα»αααΌαα αααααααΆααααΌαα
ααΆααααΆαααα’ ααΎααα·αααΆααα½ααααααααΉαααα α»ααααααα
ααααααααααΆαααααΎααααΆαα Patroni
αααααΆααααΈααΆαααΎαααααΎαααΆαααααααααααα Patroni ααΎαααΆαααααααααΆαα
αααααααααααα
αααα»αα
αααααααΈαα½ααα α₯α‘αΌαααααα
αααα»αα
αααααααΈαα½ααααΆαααΆαααααααααααΆααααΌααα»ααα½αα α’αααααΉαααΆααα½α αα·αααΌαα
ααααααΈα αααααΆααααααΆαααα»ααααα·ααΆα αααα»αααααΈααααα½αααααΆαααααααα
αααααααΌαα
Patroni ααΆαααααΎααΆαααΎααΆαααα·αα’ααααααααααΆα XNUMX ααα αααα»αβα’αα‘α»αβαααβααα ααΆααβααΆαβαα½αβααΎαβαα½α
βα αΎαα ααααΈαααα ααααΉαααΆαααα
ααααααα½αααΆαααααΆαααα
αααα»α AWS ααΆααααΆααααααααααααααααααα·ααΆαααααΎαααΆα α αΎαα’αααααααΎααααΆααααααααααΎααΆαα Patroni ααΆααααααααΆααα·α
αα
α
αααααααααααα½αα
ααα ααααΈααααααααΌα αα½αααααΆαααααΎααααΆαα Patroniα
- ααΆαααΆααααα½αααααΆαααααΆααααααΌαααΆαααααααα ααΆααααααααα ααΆαααααααααΆαααααα»αααΆαααααΆααααααΌαααΆαααααααα ααΎα§ααΆα ααααα½α α αΎαααΆααΉαααααΌαααΆαααΆααα αΌααααα αααααααΆααααΌαα ααααα·αααΎααΆαα αΆααααααΎαα‘αΎααα·αααααΌαααΆαααΆαααΆαααΎααααΈα’αα»ααααααΆαααααααα ααΆααααααααααααΈααα Patroni ααΉαααααΆααα’αααα±ααααΉαα Patroni α’αΆα α αΆααααααΎαα αααααααΆααααΌαα‘αΎααα·ααααααααΎααΆααααααααΆαααα½α αααααΆααΆααααα½ααααααα
- ααΆααααΆααααααααααααααααααα·ααααΎαααΆα α αΎαααΆαααααααααααα½α α αΎαααΎααααΈαα½αααΎαα
- α’αΆααααα PostgreSQL αααααααΆαααααααααα·ααΈα ααααΌαα’αααααααΌαααααααΎαα αα α»ααααααααΆαααΆαα αααααα ααααααααΈ αααααΆααααααααΆααααααΌαα’αααααΉαααΆααα αααα»αα ααααα Patroni αα·αααααΎαα αα α»ααααααααΆαα’αααααΉαααΆαα αΆααα αααα»αααααΈαααααΆαααααΎαααααα αΆαααΆα αααααΆααααΆααααααααααααααααααα·ααΎαα‘αΎαα
ααααα: www.habr.com