เจเจน เจธเจฟเจฐเจซ เจเจธ เจคเจฐเฉเจนเจพเจ เจนเฉเจเจ เจเจฟ เจเจฟเจธ เจธเจฎเฉเจ เจธเจฎเฉฑเจธเจฟเจ เจเฉเฉเจนเฉ เจเฉเจคเฉ เจเจ เจธเฉ, เจฎเฉเจฐเฉ เจเฉเจฒ เจเจเฉฑเจฒเฉ เจเจธ เจนเฉฑเจฒ เจจเฉเฉฐ เจตเจฟเจเจธเจค เจเจฐเจจ เจ เจคเฉ เจฒเจพเจเจ เจเจฐเจจ เจฒเจ เจเจพเจซเจผเฉ เจคเจเจฐเจฌเจพ เจจเจนเฉเจ เจธเฉเฅค เจ เจคเฉ เจซเจฟเจฐ เจฎเฉเจ เจเฉเจเจฒเจฟเฉฐเจ เจธเจผเฉเจฐเฉ เจเฉเจคเฉเฅค
เจฎเฉเจจเฉเฉฐ เจจเจนเฉเจ เจชเจคเจพ เจเจฟ เจเฉเจ เจเฉ เจนเฉ, เจชเจฐ เจฎเฉเจจเฉเฉฐ เจเจธ เจคเฉฑเจฅ เจฆเจพ เจธเจพเจฎเฉเจนเจฃเจพ เจเจฐเจจเจพ เจชเฉ เจฐเจฟเจนเจพ เจนเฉ เจเจฟ เจญเจพเจตเฉเจ เจฎเฉเจ เจเจฟเจเจเฉเจฐเจฟเจ เจฒ เจตเจพเจเจ เจเจฆเจฎ-เจฆเจฐ-เจเจฆเจฎ เจธเจญ เจเฉเจ เจเจฐเจฆเจพ เจนเจพเจ, เจฒเฉเจเจ เจตเจพเจเจ เจตเจพเจคเจพเจตเจฐเจฃ เจคเจฟเจเจฐ เจเจฐเจฆเจพ เจนเจพเจ, เจซเจฟเจฐ เจเฉเจ เจตเฉ เจเฉฐเจฎ เจจเจนเฉเจ เจเจฐเจฆเจพเฅค เจฎเฉเจจเฉเฉฐ เจจเจนเฉเจ เจชเจคเจพ เจเจฟ เจฎเจพเจฎเจฒเจพ เจเฉ เจนเฉ, เจชเจฐ เจเจฆเฉเจ เจฎเฉเจ เจเจธ เจฆเจพ เจฆเฉเจฌเจพเจฐเจพ เจธเจพเจนเจฎเจฃเจพ เจเฉเจคเจพ, เจฎเฉเจ เจซเฉเจธเจฒเจพ เจเฉเจคเจพ เจเจฟ เจเจฆเฉเจ เจธเจญ เจเฉเจ เจ เฉเจ เจนเฉ เจเจพเจตเฉเจเจพ เจคเจพเจ เจฎเฉเจ เจเจชเจฃเจพ เจเจฟเจเจเฉเจฐเจฟเจ เจฒ เจฒเจฟเจเจพเจเจเจพเฅค เจเฉฑเจ เจเฉ เจฏเจเฉเจจเฉ เจคเฉเจฐ 'เจคเฉ เจเฉฐเจฎ เจเจฐเฉเจเจพ.
เจเฉฐเจเจฐเจจเฉเฉฑเจ 'เจคเฉ เจเจพเจเจก
เจ เจเจฟเจนเจพ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเจฟ เจเฉฐเจเจฐเจจเฉเจ เจตเฉฑเจ-เจตเฉฑเจ เจเจพเจเจกเจพเจ, เจเจฟเจเจเฉเจฐเจฟเจ เจฒเจธ, เจเจฆเจฎ-เจฆเจฐ-เจเจฆเจฎ เจ เจคเฉ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเฉ เจเจฎเฉ เจคเฉเจ เจชเฉเฉเจค เจจเจนเฉเจ เจนเฉ. เจ เจเจฟเจนเจพ เจนเฉ เจนเฉเจเจ เจนเฉ เจเจฟ เจฎเฉเจจเฉเฉฐ เจเฉฑเจ เจซเฉเจฒเจเจตเจฐ PostgreSQL เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจธเฉเจตเจฟเจงเจพเจเจจเจ เจขเฉฐเจ เจจเจพเจฒ เจธเฉฐเจเจ เจฟเจค เจเจฐเจจ เจ เจคเฉ เจฌเจฃเจพเจเจฃ เจฒเจ เจเฉฑเจ เจนเฉฑเจฒ เจตเจฟเจเจธเจฟเจค เจเจฐเจจ เจฆเจพ เจเฉฐเจฎ เจธเฉเจเจชเจฟเจ เจเจฟเจ เจธเฉ, เจเจฟเจธ เจฒเจ เจฎเฉเฉฑเจ เจฒเฉเฉเจพเจ เจฎเจพเจธเจเจฐ เจธเจฐเจตเจฐ เจคเฉเจ เจธเจพเจฐเฉเจเจ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉเจเจ เจฒเจ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจจเฉเฉฐ เจธเจเฉเจฐเฉเจฎ เจเจฐเจจเจพ เจ เจคเฉ เจเฉฑเจ เจฎเจพเจธเจเจฐ เจธเจฐเจตเจฐ เจฆเฉ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจเฉฑเจ เจฐเจฟเจเจผเจฐเจต เจฆเฉ เจเจเฉเจฎเฉเจเจฟเจ เจตเจฟเจตเจธเจฅเจพ เจเจฐเจจเจพ เจธเฉเฅค เจ เจธเจซเจฒเจคเจพ
เจเจธ เจชเฉเจพเจ 'เจคเฉ, เจตเจฐเจคเฉเจเจ เจเจเจเจ เจคเจเจจเจพเจฒเฉเจเฉเจเจ เจฆเจพ เจธเจเฉเจ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเจพ เจเจฟเจ เจธเฉ:
- PostgreSQL เจเฉฑเจ DBMS เจตเจเฉเจ
เจธเจฐเจชเฉเจฐเจธเจค เจเฉฑเจ เจเจฒเฉฑเจธเจเจฐเจฟเฉฐเจ เจนเฉฑเจฒ เจตเจเฉเจ- Patroni เจฒเจ เจตเฉฐเจกเฉ เจธเจเฉเจฐเฉเจเจผ เจฆเฉ เจคเฉเจฐ เจคเฉ etcd
- เจกเฉเจเจพเจฌเฉเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจตเจพเจฒเฉเจเจ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจฒเจ เจเฉฑเจ เจธเจฟเฉฐเจเจฒ เจเจเจเจฐเฉ เจชเฉเจเจเฉฐเจ เจจเฉเฉฐ เจธเฉฐเจเจ เจฟเจค เจเจฐเจจ เจฒเจ HAproxy
เจธเฉเจเจฟเฉฐเจ
เจคเฉเจนเจพเจกเฉ เจงเจฟเจเจจ เจฒเจ - Patroni, etcd, HAProxy เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉฑเจ เจฌเจนเฉเจค เจนเฉ เจเจชเจฒเจฌเจง PostgreSQL เจเจฒเฉฑเจธเจเจฐ เจฌเจฃเจพเจเจฃเจพเฅค
เจธเจพเจฐเฉ เจเจชเจฐเฉเจธเจผเจจ เจกเฉเจฌเฉเจ เจจ 10 OS เจจเจพเจฒ เจตเจฐเจเฉเจ เจฒ เจฎเจธเจผเฉเจจเจพเจ 'เจคเฉ เจเฉเจคเฉ เจเจ เจธเจจเฅค
เจเจฆเจฟ
เจฎเฉเจ เจเจนเฉ เจฎเจธเจผเฉเจจเจพเจ 'เจคเฉ etcd เจจเฉเฉฐ เจเฉฐเจธเจเจพเจฒ เจเจฐเจจ เจฆเฉ เจธเจฟเจซเจผเจพเจฐเจธเจผ เจจเจนเฉเจ เจเจฐเจฆเจพ เจนเจพเจ เจเจฟเฉฑเจฅเฉ เจชเฉเจเจฐเฉเจจเฉ เจ
เจคเฉ เจชเฉเจธเจเจเจฐเฉเจธเจเฉเจเจฒ เจธเจฅเจฟเจค เจนเฉเจฃเจเฉ, เจเจฟเจเจเจเจฟ เจกเจฟเจธเจ เจฒเฉเจก เจเจฆเจฟ เจฒเจ เจฌเจนเฉเจค เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉเฅค เจชเจฐ เจตเจฟเจฆเจฟเจ
เจ เจเจฆเฉเจธเจผเจพเจ เจฒเจ, เจ
เจธเฉเจ เจ
เจเจฟเจนเจพ เจนเฉ เจเจฐเจพเจเจเฉเฅค
เจเจฆเจฟ เจเฉฐเจธเจเจพเจฒ เจเจฐเฉเจเฅค
#!/bin/bash
apt-get update
apt-get install etcd
/etc/default/etcd เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจธเจฎเฉฑเจเจฐเฉ เจธเจผเจพเจฎเจฒ เจเจฐเฉ
[เจฎเฉเจเจฌเจฐ]
ETCD_NAME=datanode1 # เจคเฉเจนเจพเจกเฉ เจฎเจธเจผเฉเจจ เจฆเจพ เจนเฉเจธเจ-เจจเจพเจ
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
เจธเจพเจฐเฉ IP เจชเจคเฉ เจตเฉเจง เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเจจเฅค เจฒเจฟเจธเจเจฐ เจชเฉเจ เจฐ, เจเจฒเจพเจเฉฐเจ เจเจฆเจฟ เจจเฉเฉฐ เจฎเฉเจเจผเจฌเจพเจจ เจฆเฉ IP เจเจกเจฐเฉเฉฑเจธ 'เจคเฉ เจธเฉเฉฑเจ เจเฉเจคเจพ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ
ETCD_LISTEN_PEER_URLS="
ETCD_LISTEN_CLIENT_URLS="
[เจเจฒเฉฑเจธเจเจฐ]
ETCD_INITIAL_ADVERTISE_PEER_URLS="
ETCD_INITIAL_CLUSTER=ยปเจกเฉเจเจพเจจเฉเจก1=
ETCD_INITIAL_CLUSTER_STATE="เจจเจตเจพเจ"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-1โณ
ETCD_ADVERTISE_CLIENT_URLS="
เจเจฎเจพเจเจก เจเจฒเจพเจ
systemctl restart etcd
PostgreSQL 9.6 + patroni
เจธเจญ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจฒเฉเฉเฉเจเจฆเฉ เจธเฉเจซเจเจตเฉเจ เจฐ เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเจจ เจฒเจ เจคเจฟเฉฐเจจ เจตเจฐเจเฉเจ เจฒ เจฎเจธเจผเฉเจจเจพเจ เจจเฉเฉฐ เจธเจฅเจพเจชเจค เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจฎเจธเจผเฉเจจเจพเจ เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจเฉเจเจฐ เจคเฉเจธเฉเจ เจฎเฉเจฐเฉ เจเจฟเจเจเฉเจฐเจฟเจ เจฒ เจฆเฉ เจชเจพเจฒเจฃเจพ เจเจฐเจฆเฉ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจเจธ เจธเจงเจพเจฐเจจ เจธเจเฉเจฐเจฟเจชเจ เจจเฉเฉฐ เจเจฒเจพ เจธเจเจฆเฉ เจนเฉ เจเฉ (เจฒเจเจญเจ) เจคเฉเจนเจพเจกเฉ เจฒเจ เจธเจญ เจเฉเจ เจเจฐเฉเจเฉเฅค เจฐเฉเจ เจฆเฉ เจคเฉเจฐ 'เจคเฉ เจเฉฑเจฒเจฆเจพ เจนเฉเฅค
เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจจเฉเจ เจเจฐเฉ เจเจฟ เจธเจเฉเจฐเจฟเจชเจ PostgreSQL เจธเฉฐเจธเจเจฐเจฃ 9.6 เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉ, เจเจน เจธเจพเจกเฉ เจเฉฐเจชเจจเฉ เจฆเฉเจเจ เจ เฉฐเจฆเจฐเฉเจจเฉ เจฒเฉเฉเจพเจ เจฆเฉ เจเจพเจฐเจจ เจนเฉเฅค เจนเฉฑเจฒ เจจเฉเฉฐ PostgreSQL เจฆเฉ เจฆเฉเจเฉ เจธเฉฐเจธเจเจฐเจฃเจพเจ 'เจคเฉ เจเฉเจธเจ เจจเจนเฉเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค
#!/bin/bash
apt-get install gnupg -y
echo "deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main" >> /etc/apt/sources.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
apt-get update
apt-get install postgresql-9.6 python3-pip python3-dev libpq-dev -y
systemctl stop postgresql
pip3 install --upgrade pip
pip install psycopg2
pip install patroni[etcd]
echo "
[Unit]
Description=Runners to orchestrate a high-availability PostgreSQL
After=syslog.target network.target
[Service]
Type=simple
User=postgres
Group=postgres
ExecStart=/usr/local/bin/patroni /etc/patroni.yml
KillMode=process
TimeoutSec=30
Restart=no
[Install]
WantedBy=multi-user.targ
" > /etc/systemd/system/patroni.service
mkdir -p /data/patroni
chown postgres:postgres /data/patroni
chmod 700 /data/patroniะฟะพ
touch /etc/patroni.yml
เจ
เฉฑเจเฉ, /etc/patroni.yml เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจเฉ เจคเฉเจธเฉเจ เจนเฉเจฃเฉ เจฌเจฃเจพเจ เจนเฉ, เจคเฉเจนเจพเจจเฉเฉฐ เจนเฉเจ เจฒเจฟเจเฉเจเจ เจธเจฎเฉฑเจเจฐเฉเจเจ เจฐเฉฑเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ, เจฌเฉเจธเจผเฉฑเจ เจธเจพเจฐเฉเจเจ เจฅเจพเจตเจพเจ เจฆเฉ IP เจชเจคเจฟเจเจ เจจเฉเฉฐ เจเจนเจจเจพเจ เจชเจคเจฟเจเจ เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฃเจพ เจเฉ เจคเฉเจธเฉเจ เจตเจฐเจคเจฆเฉ เจนเฉเฅค
เจเจธ เจฏเจฎเจฒ เจตเจฟเฉฑเจ เจเจฟเฉฑเจชเจฃเฉเจเจ เจตเฉฑเจฒ เจงเจฟเจเจจ เจฆเจฟเจเฅค เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจนเจฐเฉเจ เจฎเจธเจผเฉเจจ 'เจคเฉ เจชเจคเฉ เจจเฉเฉฐ เจเจชเจฃเฉ เจฒเจ เจฌเจฆเจฒเฉเฅค
/etc/patroni.yml
scope: pgsql # ะดะพะปะถะฝะพ ะฑััั ะพะดะธะฝะฐะบะพะฒัะผ ะฝะฐ ะฒัะตั
ะฝะพะดะฐั
namespace: /cluster/ # ะดะพะปะถะฝะพ ะฑััั ะพะดะธะฝะฐะบะพะฒัะผ ะฝะฐ ะฒัะตั
ะฝะพะดะฐั
name: postgres1 # ะดะพะปะถะฝะพ ะฑััั ัะฐะทะฝัะผ ะฝะฐ ะฒัะตั
ะฝะพะดะฐั
restapi:
listen: 192.168.0.143:8008 # ะฐะดัะตั ัะพะน ะฝะพะดั, ะฒ ะบะพัะพัะพะน ะฝะฐั
ะพะดะธััั ััะพั ัะฐะนะป
connect_address: 192.168.0.143:8008 # ะฐะดัะตั ัะพะน ะฝะพะดั, ะฒ ะบะพัะพัะพะน ะฝะฐั
ะพะดะธััั ััะพั ัะฐะนะป
etcd:
hosts: 192.168.0.143:2379,192.168.0.144:2379,192.168.0.145:2379 # ะฟะตัะตัะธัะปะธัะต ะทะดะตัั ะฒัะต ะฒะฐัะธ ะฝะพะดั, ะฒ ัะปััะฐะต ะตัะปะธ ะฒั ัััะฐะฝะฐะฒะปะธะฒะฐะตัะต etcd ะฝะฐ ะฝะธั
ะถะต
# this section (bootstrap) will be written into Etcd:/<namespace>/<scope>/config after initializing new cluster
# and all other cluster members will use it as a `global configuration`
bootstrap:
dcs:
ttl: 100
loop_wait: 10
retry_timeout: 10
maximum_lag_on_failover: 1048576
postgresql:
use_pg_rewind: true
use_slots: true
parameters:
wal_level: replica
hot_standby: "on"
wal_keep_segments: 5120
max_wal_senders: 5
max_replication_slots: 5
checkpoint_timeout: 30
initdb:
- encoding: UTF8
- data-checksums
- locale: en_US.UTF8
# init pg_hba.conf ะดะพะปะถะตะฝ ัะพะดะตัะถะฐัั ะฐะดัะตัะฐ ะะกะะฅ ะผะฐัะธะฝ, ะธัะฟะพะปัะทัะตะผัั
ะฒ ะบะปะฐััะตัะต
pg_hba:
- host replication postgres ::1/128 md5
- host replication postgres 127.0.0.1/8 md5
- host replication postgres 192.168.0.143/24 md5
- host replication postgres 192.168.0.144/24 md5
- host replication postgres 192.168.0.145/24 md5
- host all all 0.0.0.0/0 md5
users:
admin:
password: admin
options:
- createrole
- createdb
postgresql:
listen: 192.168.0.143:5432 # ะฐะดัะตั ัะพะน ะฝะพะดั, ะฒ ะบะพัะพัะพะน ะฝะฐั
ะพะดะธััั ััะพั ัะฐะนะป
connect_address: 192.168.0.143:5432 # ะฐะดัะตั ัะพะน ะฝะพะดั, ะฒ ะบะพัะพัะพะน ะฝะฐั
ะพะดะธััั ััะพั ัะฐะนะป
data_dir: /data/patroni # ััั ะดะธัะตะบัะพัะธั ัะพะทะดะฐัั ัะบัะธะฟั, ะพะฟะธัะฐะฝะฝัะน ะฒััะต ะธ ัััะฐะฝะพะฒะธั ะฝัะถะฝัะต ะฟัะฐะฒะฐ
bin_dir: /usr/lib/postgresql/9.6/bin # ัะบะฐะถะธัะต ะฟััั ะดะพ ะฒะฐัะตะน ะดะธัะตะบัะพัะธะธ ั postgresql
pgpass: /tmp/pgpass
authentication:
replication:
username: postgres
password: postgres
superuser:
username: postgres
password: postgres
create_replica_methods:
basebackup:
checkpoint: 'fast'
parameters:
unix_socket_directories: '.'
tags:
nofailover: false
noloadbalance: false
clonefrom: false
nosync: false
เจธเจเฉเจฐเจฟเจชเจ เจจเฉเฉฐ เจเจฒเฉฑเจธเจเจฐ เจฆเฉเจเจ เจธเจพเจฐเฉเจเจ เจคเจฟเฉฐเจจ เจฎเจธเจผเฉเจจเจพเจ 'เจคเฉ เจเจฒเจพเจเจ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ, เจ เจคเฉ เจเจชเจฐเฉเจเจค เจธเฉฐเจฐเจเจจเจพ เจจเฉเฉฐ เจธเจพเจฐเฉเจเจ เจฎเจธเจผเฉเจจเจพเจ 'เจคเฉ /etc/patroni.yml เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจตเฉ เจฐเฉฑเจเจฟเจ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค
เจเฉฑเจ เจตเจพเจฐ เจเจฆเฉเจ เจคเฉเจธเฉเจ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจธเจพเจฐเฉเจเจ เจฎเจธเจผเฉเจจเจพเจ 'เจคเฉ เจเจนเจจเจพเจ เจเจพเจฐเจตเจพเจเจเจ เจจเฉเฉฐ เจชเฉเจฐเจพ เจเจฐ เจฒเฉเจเจฆเฉ เจนเฉ, เจคเจพเจ เจเจนเจจเจพเจ เจตเจฟเฉฑเจเฉเจ เจเจฟเจธเฉ 'เจคเฉ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจเจฎเจพเจเจก เจเจฒเจพเจ
systemctl start patroni
systemctl start postgresql
เจฒเจเจญเจ 30 เจธเจเจฟเฉฐเจ เจเจกเฉเจ เจเจฐเฉ, เจซเจฟเจฐ เจเจธ เจเจฎเจพเจเจก เจจเฉเฉฐ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจฌเจพเจเฉ เจฎเจธเจผเฉเจจเจพเจ 'เจคเฉ เจเจฒเจพเจเฅค
HAproxy
เจ เจธเฉเจ เจเฉฑเจ เจธเจฟเฉฐเจเจฒ เจชเฉเจเจเฉฐเจ เจเจเจเจฐเฉ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจ เจฒเจ เจธเจผเจพเจจเจฆเจพเจฐ HAproxy เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเจพเจเฅค เจฎเจพเจธเจเจฐ เจธเจฐเจตเจฐ เจนเจฎเฉเจธเจผเจพ เจเจธ เจฎเจธเจผเฉเจจ เจฆเฉ เจชเจคเฉ 'เจคเฉ เจเจชเจฒเจฌเจง เจนเฉเจตเฉเจเจพ เจเจฟเจธ 'เจคเฉ HAproxy เจคเจพเจเจจเจพเจค เจนเฉเฅค
HAproxy เจตเจพเจฒเฉ เจฎเจธเจผเฉเจจ เจจเฉเฉฐ เจ เจธเจซเจฒเจคเจพ เจฆเจพ เจเฉฑเจ เจฌเจฟเฉฐเจฆเฉ เจจเจพ เจฌเจฃเจพเจเจฃ เจฒเจ, เจ เจธเฉเจ เจเจธเจจเฉเฉฐ เจเฉฑเจ เจกเฉเจเจฐ เจเฉฐเจเฉเจจเจฐ เจตเจฟเฉฑเจ เจฒเจพเจเจ เจเจฐเจพเจเจเฉ; เจญเจตเจฟเฉฑเจ เจตเจฟเฉฑเจ เจเจธเจจเฉเฉฐ K8 เจฆเฉ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจฒเจพเจเจ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ เจ เจคเฉ เจธเจพเจกเฉ เจซเฉเจฒเจเจตเจฐ เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจนเฉเจฐ เจตเฉ เจญเจฐเฉเจธเฉเจฎเฉฐเจฆ เจฌเจฃเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจเฉฑเจ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจฌเจฃเจพเจ เจเจฟเฉฑเจฅเฉ เจคเฉเจธเฉเจ เจฆเฉ เจซเจพเจเจฒเจพเจ เจจเฉเฉฐ เจธเจเฉเจฐ เจเจฐ เจธเจเจฆเฉ เจนเฉ - Dockerfile เจ เจคเฉ haproxy.cfgเฅค เจเจธ 'เจคเฉ เจเจพเจเฅค
เจกเฉเจเจฐเจซเจพเจเจฒ
FROM ubuntu:latest
RUN apt-get update
&& apt-get install -y haproxy rsyslog
&& rm -rf /var/lib/apt/lists/*
RUN mkdir /run/haproxy
COPY haproxy.cfg /etc/haproxy/haproxy.cfg
CMD haproxy -f /etc/haproxy/haproxy.cfg && tail -F /var/log/haproxy.log
เจธเจพเจตเจงเจพเจจ เจฐเจนเฉ, haproxy.cfg เจซเจพเจเจฒ เจฆเฉเจเจ เจเจเจฐเฉ เจคเจฟเฉฐเจจ เจฒเจพเจเจจเจพเจ เจตเจฟเฉฑเจ เจคเฉเจนเจพเจกเฉเจเจ เจฎเจธเจผเฉเจจเจพเจ เจฆเฉ เจชเจคเจฟเจเจ เจฆเฉ เจธเฉเจเฉ เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเฉเฅค HAproxy Patroni เจจเจพเจฒ เจธเฉฐเจชเจฐเจ เจเจฐเฉเจเจพ, HTTP เจธเจฟเจฐเจฒเฉเจเจพเจ เจตเจฟเฉฑเจ เจฎเจพเจธเจเจฐ เจธเจฐเจตเจฐ เจนเจฎเฉเจธเจผเจพ 200 เจตเจพเจชเจธ เจเจฐเฉเจเจพ, เจ เจคเฉ เจชเฉเจฐเจคเฉเจฐเฉเจช เจนเจฎเฉเจธเจผเจพ 503 เจตเจพเจชเจธ เจเจฐเฉเจเจพเฅค
haproxy.cfg
global
maxconn 100
defaults
log global
mode tcp
retries 2
timeout client 30m
timeout connect 4s
timeout server 30m
timeout check 5s
listen stats
mode http
bind *:7000
stats enable
stats uri /
listen postgres
bind *:5000
option httpchk
http-check expect status 200
default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions
server postgresql1 192.168.0.143:5432 maxconn 100 check port 8008
server postgresql2 192.168.0.144:5432 maxconn 100 check port 8008
server postgresql3 192.168.0.145:5432 maxconn 100 check port 8008
เจเจธ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจตเจฟเฉฑเจ เจนเฉเจฃ เจฆเฉ เจจเจพเจคเฉ เจเจฟเจธ เจตเจฟเฉฑเจ เจธเจพเจกเฉเจเจ เจฆเฉเจตเฉเจ เจซเจพเจเจฒเจพเจ "เจเฉเจ เฉเจเจ" เจนเจจ, เจเจ เจเฉฐเจเฉเจจเจฐ เจจเฉเฉฐ เจชเฉเจ เจเจฐเจจ เจฆเฉ เจจเจพเจฒ-เจจเจพเจฒ เจฒเฉเฉเฉเจเจฆเฉ เจชเฉเจฐเจเจพเจ เจจเฉเฉฐ เจ เฉฑเจเฉ เจญเฉเจเจฃ เจฒเจ เจเฉเจฐเจฎเจตเจพเจฐ เจเจฎเจพเจเจกเจพเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเฉเจ:
docker build -t my-haproxy .
docker run -d -p5000:5000 -p7000:7000 my-haproxy
เจนเฉเจฃ, เจฌเฉเจฐเจพเจเจเจผเจฐ เจตเจฟเฉฑเจ HAproxy เจจเจพเจฒ เจเจชเจฃเฉ เจฎเจธเจผเฉเจจ เจฆเจพ เจชเจคเจพ เจเฉเจฒเฉเจนเจฃ เจ เจคเฉ เจชเฉเจฐเจ 7000 เจจเฉเฉฐ เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจเจฐเจจ เจจเจพเจฒ, เจคเฉเจธเฉเจ เจเจชเจฃเฉ เจเจฒเฉฑเจธเจเจฐ 'เจคเฉ เจ เฉฐเจเฉเฉ เจฆเฉเจเฉเจเฉเฅค
เจธเจฐเจตเจฐ เจเฉ เจฎเจพเจธเจเจฐ เจนเฉ เจเจน เจฏเฉเจชเฉ เจฐเจพเจ เจตเจฟเฉฑเจ เจนเฉเจตเฉเจเจพ, เจ เจคเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉเจเจ เจกเจพเจเจจ เจธเจเฉเจ เจตเจฟเฉฑเจ เจนเฉเจฃเจเฉเจเจเฅค เจเจน เจเจฎ เจนเฉ, เจ เจธเจฒ เจตเจฟเฉฑเจ เจเจน เจเฉฐเจฎ เจเจฐเจฆเฉ เจนเจจ, เจชเจฐ เจเจน เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเฉ เจนเจจ เจเจฟเจเจเจเจฟ เจเจน HAproxy เจคเฉเจ เจฌเฉเจจเจคเฉเจเจ เจฒเจ 503 เจตเจพเจชเจธ เจเจฐเจฆเฉ เจนเจจเฅค เจเจน เจธเจพเจจเฉเฉฐ เจนเจฎเฉเจธเจผเจพ เจเจน เจเจพเจฃเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจเจฟ เจคเจฟเฉฐเจจ เจธเจฐเจตเจฐเจพเจ เจตเจฟเฉฑเจเฉเจ เจเจฟเจนเฉเจพ เจฎเฉเจเฉเจฆเจพ เจฎเจพเจธเจเจฐ เจนเฉเฅค
เจธเจฟเฉฑเจเจพ
เจคเฉเจธเฉ เจฌเจนเฉเจค เจธเฉเจนเจฃเฉ เจนเฉ! เจธเจฟเจฐเจซเจผ 30 เจฎเจฟเฉฐเจเจพเจ เจตเจฟเฉฑเจ เจคเฉเจธเฉเจ เจธเจเฉเจฐเฉเจฎเจฟเฉฐเจ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจ
เจคเฉ เจเจเฉเจฎเฉเจเจฟเจ เจซเจพเจฒเจฌเฉเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจธเจผเจพเจจเจฆเจพเจฐ เจจเฉเจเจธ-เจธเจนเจฟเจฃเจธเจผเฉเจฒ เจ
เจคเฉ เจเฉฑเจ-เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจพเจฒเฉ เจกเฉเจเจพเจฌเฉเจธ เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเฉเจคเจพ เจนเฉเฅค เจเฉ เจคเฉเจธเฉเจ เจเจธ เจนเฉฑเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจฏเฉเจเจจเจพ เจฌเจฃเจพ เจฐเจนเฉ เจนเฉ, เจคเจพเจ เจเฉเฉฑเจ เจเจเจ เจเจฐเฉ
เจตเจงเจพเจเจเจ!
เจธเจฐเฉเจค: www.habr.com