เดชเตเดฐเดถเตเดจเด เดเดจเตเดจเดฏเดฟเดเตเด เดธเดฎเดฏเดคเตเดคเต, เด เดชเดฐเดฟเดนเดพเดฐเด เดฎเดพเดคเตเดฐเด เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเด เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเดพเดจเตเด เดเดจเดฟเดเตเดเต เดฎเดคเดฟเดฏเดพเดฏ เด เดจเตเดญเดตเด เดเดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดชเดฟเดจเตเดจเต เดเดพเตป เดเตเดเดฟเตพ เดเตเดฏเตเดฏเดพเตป เดคเตเดเดเตเดเดฟ.
เดเตเดฏเดพเดเตเดเต เดเดจเตเดคเดพเดฃเตเดจเตเดจเต เดเดจเดฟเดเตเดเดฑเดฟเดฏเดฟเดฒเตเดฒ, เดชเดเตเดทเต เดเตเดฏเตเดเตเดเตเดฑเดฟเดฏเดฒเดฟเดฒเตเดจเตเดจเดชเตเดฒเต เดเดเตเดเด เดเดเตเดเดฎเดพเดฏเดฟ เดเดฒเตเดฒเดพเด เดเตเดฏเตเดคเดพเดฒเตเด เดฐเดเดฏเดฟเดคเดพเดตเดฟเดจเตเดฑเต เด เดคเต เด เดจเตเดคเดฐเตเดเตเดทเด เดเดฐเตเดเตเดเตเด, เดชเดฟเดจเตเดจเต เดเดจเตเดจเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดฟเดฒเตเดฒ เดเดจเตเดจ เดตเดธเตเดคเตเดค เดชเดคเดฟเดจเดพเดฒเดพเด เดคเดตเดฃ เดเดพเตป เด เดญเดฟเดฎเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดคเดพเดฃเต เดเดพเดฐเตเดฏเดฎเตเดจเตเดจเต เดเดจเดฟเดเตเดเดฑเดฟเดฏเดฟเดฒเตเดฒ, เดชเดเตเดทเต เดเดคเต เดตเตเดฃเตเดเตเด เดจเตเดฐเดฟเดเตเดเดชเตเดชเตเตพ, เดเดฒเตเดฒเดพเด เดถเดฐเดฟเดฏเดพเดเตเดฎเตเดชเตเตพ เดเดจเตเดฑเต เดธเตเดตเดจเตเดคเด เดเตเดฏเตเดเตเดเตเดฑเดฟเดฏเตฝ เดเดดเตเดคเดพเดฎเตเดจเตเดจเต เดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต. เดคเตเตผเดเตเดเดฏเดพเดฏเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดเดจเตเดจเต.
เดเดจเตเดฑเตผเดจเตเดฑเตเดฑเดฟเดฒเต เดเตเดกเตเดเตพ
เดตเดฟเดตเดฟเดง เดเตเดกเตเดเตพ, เดเตเดฏเตเดเตเดเตเดฑเดฟเดฏเดฒเตเดเตพ, เดเดเตเดเด เดเดเตเดเดฎเดพเดฏเตเดณเตเดณ เดคเตเดเดเตเดเดฟเดฏเดตเดฏเตเดเต เด เดญเดพเดตเด เดเดจเตเดฑเตผเดจเตเดฑเตเดฑเต เด เดจเตเดญเดตเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เดเดฐเต เดชเดฐเดพเดเดฏ PostgreSQL เดเตเดฒเดธเตเดฑเตเดฑเตผ เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏเดฟ เดธเดเดเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดเดฐเต เดชเดฐเดฟเดนเดพเดฐเด เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดจเตเดจเต เดเตเดฎเดคเดฒเดชเตเดชเตเดเตเดคเตเดคเดฟ, เด เดคเดฟเดจเตเดฑเต เดชเตเดฐเดงเดพเดจ เดเดตเดถเตเดฏเดเดคเดเตพ เดฎเดพเดธเตเดฑเตเดฑเตผ เดธเตเตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฒเตเดฒเดพ เดชเดเตผเดชเตเดชเตเดเดณเดฟเดฒเตเดเตเดเตเด เดชเดเตผเดชเตเดชเตเดเตพ เดธเตเดเตเดฐเตเด เดเตเดฏเตเดฏเดฒเตเด เดเดฐเต เดฎเดพเดธเตเดฑเตเดฑเตผ เดธเตเตผเดตเดฑเดฟเดจเตเดฑเต เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฐเต เดเดฐเตเดคเตฝ เดธเตเดตเดฏเดฎเตเดต เดจเตฝเดเดฒเตเด เดเดฏเดฟเดฐเตเดจเตเดจเต. เดชเดฐเดพเดเดฏเด.
เด เดเดเตเดเดคเตเดคเดฟเตฝ, เดเดชเดฏเตเดเดฟเดเตเด เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏเดเดณเตเดเต เดถเตเดเดฐเด เดจเดฟเตผเดฃเตเดฃเดฏเดฟเดเตเดเต:
- เดเดฐเต DBMS เดเดฏเดฟ PostgreSQL
เดชเดคเตเดฐเตเดฃเดฟ เดเดฐเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดเดเต เดชเดฐเดฟเดนเดพเดฐเดฎเดพเดฏเดฟ- เดคเตเดเดเตเดเดฟเดฏเดต เดชเดคเตเดฐเตเดฃเดฟเดเตเดเต เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดค เดธเดเดญเดฐเดฃเดฎเดพเดฏเดฟ
- เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพเดเตเดเดพเดฏเดฟ เดเดฐเตเดฑเตเดฑ เดเตปเดเตเดฐเดฟ เดชเตเดฏเดฟเดจเตเดฑเต เดธเดเดเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ HAproxy
เดเตปเดธเตเดฑเตเดฑเดฒเตเดทเตป
เดจเดฟเดเตเดเดณเตเดเต เดถเตเดฐเดฆเตเดงเดฏเตเดเตเดเต - Patroni, etcd, HAProxy เดเดชเดฏเตเดเดฟเดเตเดเต เดตเดณเดฐเต เดฒเดญเตเดฏเดฎเดพเดฏ PostgreSQL เดเตเดฒเดธเตเดฑเตเดฑเตผ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเด.
เดกเตเดฌเดฟเดฏเตป 10 เดเดเดธเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดค เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดเดณเดฟเดฒเดพเดฃเต เดเดฒเตเดฒเดพ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเด เดจเดเดคเตเดคเดฟเดฏเดคเต.
เดคเตเดเดเตเดเดฟเดฏเดต
patroni, postgresql เดเดจเตเดจเดฟเดต เดธเตเดฅเดฟเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจ เด
เดคเต เดฎเตเดทเตเดจเตเดเดณเดฟเตฝ etcd เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเตป เดเดพเตป เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ, เดเดพเดฐเดฃเด etcd-เดเตเดเต เดกเดฟเดธเตเดเต เดฒเตเดกเต เดตเดณเดฐเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต. เดเดจเตเดจเดพเตฝ เดตเดฟเดฆเตเดฏเดพเดญเตเดฏเดพเดธ เดเดตเดถเตเดฏเดเตเดเตพเดเตเดเดพเดฏเดฟ, เดเดเตเดเตพ เด
เดคเต เดเตเดฏเตเดฏเตเด.
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 เดตเดฟเดฒเดพเดธเดเตเดเดณเตเด เดธเดพเดงเตเดคเดฏเตเดณเตเดณเดคเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด. เดฒเดฟเดธเตเดฑเตเดฑเตผ เดชเดฟเดฏเตผ, เดเตเดฒเดฏเดจเตเดฑเต เดคเตเดเดเตเดเดฟเดฏเดตเตผ เดนเตเดธเตเดฑเตเดฑเดฟเดจเตเดฑเต เดเดชเดฟ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเตเดเตเดเต เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฃเด
ETCD_LISTEN_PEER_URLS="
ETCD_LISTEN_CLIENT_URLS="
[เดเตเดฒเดธเตเดฑเตเดฑเตผ]
ETCD_INITIAL_ADVERTISE_PEER_URLS="
ETCD_INITIAL_CLUSTER=ยปdatanode1=
ETCD_INITIAL_CLUSTER_STATE="เดชเตเดคเดฟเดฏเดคเต"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-1โณ
ETCD_ADVERTISE_CLIENT_URLS="
เดเดฎเดพเตปเดกเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเด
systemctl restart etcd
PostgreSQL 9.6 + เดฐเดเตเดทเดพเดงเดฟเดเดพเดฐเดฟ
เดเดตเดถเตเดฏเดฎเดพเดฏ เดธเตเดซเตเดฑเตเดฑเตโเดตเตเดฏเตผ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเตป เดฎเตเดจเตเดจเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดเตพ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดจเดฟเดเตเดเตพ เดเดฆเตเดฏเด เดเตเดฏเตเดฏเตเดฃเตเดเดคเต. เดฎเตเดทเตเดจเตเดเตพ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดค เดถเตเดทเด, เดจเดฟเดเตเดเตพ เดเดจเตเดฑเต เดเตเดฏเตเดเตเดเตเดฑเดฟเดฏเตฝ เดชเดฟเดจเตเดคเตเดเดฐเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เด เดฒเดณเดฟเดคเดฎเดพเดฏ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เด เดคเต (เดเดคเดพเดฃเตเดเต) เดจเดฟเดเตเดเตพเดเตเดเดพเดฏเดฟ เดเดฒเตเดฒเดพเด เดเตเดฏเตเดฏเตเด. เดฑเตเดเตเดเต เดเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต.
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต 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 เดเดณเตเดณ เดฏเดจเตเดคเตเดฐเดคเตเดคเต เดชเดฐเดพเดเดฏเดคเตเดคเดฟเดจเตเดฑเต เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเต เดเดเตเดเดพเดคเดฟเดฐเดฟเดเตเดเดพเตป, เดเดเตเดเตพ เด เดคเต เดเดฐเต เดกเตเดเตเดเตผ เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเตฝ เดฒเตเดเตเดเต เดเตเดฏเตเดฏเตเด; เดญเดพเดตเดฟเดฏเดฟเตฝ เดเดคเต K8 เดจเตเดฑเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เดฒเตเดเตเดเต เดเตเดฏเตเดฏเดพเดจเตเด เดเดเตเดเดณเตเดเต เดซเตเดฏเตโเดฒเตเดตเตผ เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเต เดเตเดเตเดคเตฝ เดตเดฟเดถเตเดตเดธเดจเตเดฏเดฎเดพเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด.
Dockerfile, haproxy.cfg เดเดจเตเดจเต เดฐเดฃเตเดเต เดซเดฏเดฒเตเดเตพ เดธเตเดเตเดทเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดเดฐเต เดกเดฏเดฑเดเตเดเดฑเดฟ เดธเตเดทเตเดเดฟเดเตเดเตเด. เด เดคเดฟเดฒเตเดเตเดเต เดชเตเดเตเด.
Dockerfile
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 เดชเดคเตเดฐเตเดฃเดฟเดฏเต เดฌเดจเตเดงเดชเตเดชเตเดเตเด, 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