เบกเบฑเบเบเบฝเบเปเบเปเปเบเบตเบเบเบถเปเบเบเบฑเปเบเบเบฑเปเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฑเบเบซเบฒเปเบเปเบเบทเบ posed, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเบกเบตเบเบฐเบชเบปเบเบเบฒเบเบเบฝเบเบเปเบเบตเปเบเบฐเบเบฑเบเบเบฐเบเบฒเปเบฅเบฐเปเบเบตเบเบเบปเบงเบเบฒเบเปเบเปเปเบเบเบตเปเบขเปเบฒเบเบเบฝเบง. เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบญเบเบเปเปเปเบฅเบตเปเบก Google.
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเบฎเบนเปเบงเปเบฒเบชเบดเปเบเบเบตเปเบเบฑเบเปเบเป, เปเบเปเบชเปเบฒเบฅเบฑเบเปเบงเบฅเบฒ umpteenth เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเปเบเบตเบเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเปเบเบดเบเปเบกเปเบเบงเปเบฒเบเปเบฒเบซเบฒเบเบงเปเบฒเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบฎเบฑเบเบเบธเบเบเบฑเปเบเบเบญเบเปเบเบเบเบฑเปเบเบเบญเบเปเบ tutorial, เบเบฐเบเบฝเบกเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฝเบงเบเบฑเบเบเบฑเบเบเบนเปเบเบฝเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเปเบกเบตเบซเบเบฑเบเปเบฎเบฑเบเบงเบฝเบ. เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเปโเบกเบตโเบเบงเบฒเบกโเบเบดเบโเบงเปเบฒโเปเบเบฑเบโเปเบเบงโเปเบโ, เปเบเปโเปเบโเปเบงโเบฅเบฒโเบเบตเปโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบเปโเบเบปเบโเปเบซเบฑเบโเบเบตเปโเบญเบตเบโเปเบเบทเปเบญโเบซเบเบถเปเบโ, เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบเปโเบเบฑเบโเบชเบดเบโเปเบโเบงเปเบฒโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบฐโเบเบฝเบ tutorial เบเบญเบโเบเบปเบโเปเบญเบโเปเบโเปเบงโเบฅเบฒโเบเบตเปโเบเบฑเบโเบซเบกเบปเบโเบซเบกเบปเบโ. เบซเบเบถเปเบเบเบตเปเบเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเปเบเบญเบ.
เบเบนเปเบกเบทเบเปเบฝเบงเบเบฑเบเบญเบดเบเปเบเบตเปเบเบฑเบ
เบกเบฑเบเบเบฝเบเปเบเปเปเบเบตเบเบเบถเปเบเบเบฑเปเบเบเบฑเปเบเบญเบดเบเปเบเบตเปเบเบฑเบเบเปเปเปเบเปเบเบปเบเบเบธเบเบเบฒเบเบเบฒเบเบเบฒเบเบเบฒเบเปเบเบฐเบเปเบฒเบเปเบฒเบเป, tutorials, เบเบฑเปเบเบเบญเบเปเบเบเบเบฑเปเบเบเบญเบเปเบฅเบฐเบญเบทเปเบเป. เบกเบฑเบเปเบเบตเบเบเบถเปเบเบเบฑเปเบเบเบฑเปเบเบเปเบญเบเปเบเปเบเบทเบเบกเบญเบเบซเบกเบฒเบเปเบซเปเบเบฑเบเบเบฐเบเบฒเบเบฒเบเปเบเปเปเบเปเบเบทเปเบญเบเบงเบฒเบกเบชเบฐเบเบงเบเปเบเบเบฒเบเบเบฑเบเบเบฑเปเบเปเบฅเบฐเบเบฒเบเบเปเปเบชเปเบฒเบเบเบธเปเบก PostgreSQL เบเบตเปเบฅเบปเปเบกเปเบซเบฅเบง, เบเปเปเบเปเบฒเบเบปเบเบเบปเปเบเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเบฅเบญเบเบเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบกเปเบเบปเบเปเบเบซเบฒ replicas เบเบฑเบเบซเบกเบปเบเปเบฅเบฐเบเบฒเบเบชเบฐเบซเบเบญเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบญเบเบชเบฐเบซเบเบงเบเปเบเบเปเบฅเบฐเบเบตเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบปเปเบเบชเบฐเบเบฑเบ. เบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบผเบง.
เปเบเบเบฑเปเบเบเบญเบเบเบตเป, stack เบเบญเบเปเบเบฑเบเปเบเปเบฅเบขเบตเบเบตเปเปเบเปเปเบเปเบเบทเบเบเปเบฒเบเบปเบ:
- PostgreSQL เปเบเบฑเบ DBMS
Patroni เปเบเบฑเบเบเบฒเบเปเบเปเปเบเบเบธเปเบก- etcd เปเบเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบตเปเปเบเบเบขเบฒเบเบชเปเบฒเบฅเบฑเบ Patroni
- HAproxy เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบธเบเปเบเบปเปเบฒเบเบฝเบงเบชเปเบฒเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบตเปเปเบเปเบเบฒเบเบเปเปเบกเบนเบ
เบเบฒเบเบเบฑเปเบเบเปเบฒ
เบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเบชเบปเบเปเบเบเบญเบเบเปเบฒเบ - เบเบฒเบเบชเปเบฒเบเบเบธเปเบก PostgreSQL เบเบตเปเบกเบตเบขเบนเปเบชเบนเบเปเบเบเปเบเป Patroni, etcd, HAProxy.
เบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเปเบเปเบเบทเบเบเบฐเบเบดเบเบฑเบเบขเบนเปเปเบเปเบเบทเปเบญเบ virtual เบเบตเปเบกเบต Debian 10 OS เบเบดเบเบเบฑเปเบ.
เปเบฅเบฐเบญเบทเปเบ
เบเปเบญเบเบเปเปเปเบเบฐเบเปเบฒเปเบซเปเบเบดเบเบเบฑเปเบ etcd เปเบเปเบเบทเปเบญเบเบเบฝเบงเบเบฑเบเบเบตเป patroni เปเบฅเบฐ postgresql เบเบฐเบเบฑเปเบเบขเบนเป, เบเบฑเบเบเบฑเปเบเปเบเปเบเบฒเบเปเบซเบผเบเปเบเปเบเปเบกเปเบเบกเบตเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบ 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 เบเบฑเบเปเบปเบเบเบงเบเบเบฐเบเบทเบเบเปเบญเบ. LISTER PEER, Client เปเบฅเบฐเบญเบทเปเบเปเบเบงเบเบเบฐเบเบทเบเบเบฑเปเบเปเบเบฑเบเบเบตเปเบขเบนเป 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 + patroni
เบชเบดเปเบเบเปเบฒเบญเบดเบเบเบตเปเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบฎเบฑเบเปเบกเปเบเบเบฑเปเบเบชเบฒเบกเปเบเบทเปเบญเบ virtual เปเบเบทเปเบญเบเบดเบเบเบฑเปเบเบเบญเบเปเบงเบเบตเปเบเปเบฒเปเบเบฑเบเปเบชเปเบเบงเบเบกเบฑเบ. เบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเบดเบเบเบฑเปเบเปเบเบทเปเบญเบเบเบฑเบ, เบเปเบฒเบเปเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบกเบเปเบฒเปเบเบฐเบเปเบฒเบเบญเบเบเปเบญเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ script เบเปเบฒเบเปเบเบตเปเบเบตเปเบเบฐ (เปเบเบทเบญเบ) เปเบฎเบฑเบเบเบธเบเบขเปเบฒเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบ. เปเบฅเปเบเปเบเบฑเบเบฎเบฒเบ.
เบเบฐเบฅเบธเบเบฒเบชเบฑเบเปเบเบเบงเปเบฒเบชเบฐเบเบดเบเปเบเป 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 เปเบเบชเบฐเบเบฒเบเบเบตเปเบเบฑเบเบซเบกเบปเบเปเบเบซเบฒเบเบตเปเบขเบนเปเบเบตเปเบเปเบฒเบเปเบเป.
เปเบญเบปเบฒเปเบเปเบชเปเบเบฑเบเบเปเบฒเปเบซเบฑเบเปเบ yaml เบเบตเป. เบเปเบฝเบเบเบตเปเบขเบนเปเปเบเบฑเบเบเบญเบเบเบปเบเปเบญเบเปเบเปเบเปเบฅเบฐเปเบเบทเปเบญเบเบเบฑเบเปเบเบเบธเปเบก.
/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 เบงเบดเบเบฒเบเบต, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบเบเบตเปเบขเบนเปเปเบเปเบเบทเปเบญเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเบขเบนเปเปเบ cluster.
HAproxy
เบเบงเบเปเบฎเบปเบฒเปเบเป HAproxy เบเบตเปเบเบตเปเบฅเบตเบเปเบเบทเปเบญเบชเบฐเบซเบเบญเบเบเบธเบเบเบฝเบงเบเบญเบเบเบฒเบเปเบเบปเปเบฒ. เปเบเบตเบเปเบงเบตเปเบกเปเปเบเบเบเบฐเบกเบตเบขเบนเปเบชเบฐเปเปเบตเบขเบนเปเบเบตเปเบเบตเปเบขเบนเปเบเบญเบเปเบเบทเปเบญเบเบเบตเป HAproxy เบเบทเบเบเบณเปเบเป.
เปเบเบทเปเบญเบเปเปเปเบซเปเปเบเบทเปเบญเบเบเบตเปเบกเบต HAproxy เปเบเบฑเบเบเบธเบเบเบฝเบงเบเบญเบเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบผเบง, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบตเบเบเบปเบงเบกเบฑเบเบขเบนเปเปเบ Docker container; เปเบเบญเบฐเบเบฒเบเบปเบเบกเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเปเบเบตเบเบเบปเบงเปเบเบปเปเบฒเปเบเปเบ cluster เบเบญเบ K8 เปเบฅเบฐเปเบฎเบฑเบเปเบซเปเบเบธเปเบก failover เบเบญเบเบเบงเบเปเบฎเบปเบฒเบกเบตเบเบงเบฒเบกเบซเบเปเบฒเปเบเบทเปเบญเบเบทเบซเบผเบฒเบเบเบถเปเบ.
เบชเปเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบชเบญเบเปเบเบฅเป - 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 เบเบฐเบเบดเบเบเปเปเบเบฑเบ 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 เปเบ browser เปเบฅเบฐเบฅเบฐเบเบธ port 7000, เบเปเบฒเบเบเบฐเปเบซเบฑเบเบชเบฐเบเบดเบเบดเปเบ cluster เบเบญเบเบเปเบฒเบ.
เปเบเบตเบเปเบงเบตเบเบตเปเปเบเบฑเบเปเบกเปเปเบเบเบเบฐเบขเบนเปเปเบเบชเบฐเบเบฒเบเบฐ UP, เปเบฅเบฐเบเบฒเบเบเปเบฒเบฅเบญเบเบเบฐเบขเบนเปเปเบเบชเบฐเบเบฒเบเบฐ DOWN. เบเบตเปเปเบกเปเบเปเบฅเบทเปเบญเบเบเบปเบเบเบฐเบเบด, เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบเบเบงเบเปเบเบปเบฒเปเบฎเบฑเบเบงเบฝเบ, เปเบเปเบเบงเบเบกเบฑเบเบเบฒเบเบปเบเปเบเบเบเบตเปเบเปเบญเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเบชเบปเปเบเบเบทเบ 503 เบชเปเบฒเบฅเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเบเบฒเบ HAproxy. เบญเบฑเบเบเบตเปเปเบฎเบฑเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบฎเบนเปเบชเบฐเปเปเบตเบงเปเบฒเบญเบฑเบเปเบเปเบเบชเบฒเบกเปเบเบตเบเปเบงเบตเปเบกเปเบเปเบกเปเบเบปเบเบเบฐเบเบธเบเบฑเบ.
เบชเบฐเบซเบฅเบธเบ
เปเบเบปเปเบฒเบเบฒเบก! เปเบเปเบงเบฅเบฒเบเบฝเบ 30 เบเบฒเบเบต, เบเปเบฒเบเปเบเปเบเบณเปเบเปเบเบธเปเบกเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเบปเบเบเบฒเบเบเปเปเบเบงเบฒเบกเบเบดเบเบเบฒเบ เปเบฅเบฐ เบเบฐเบชเบดเบเบเบดเบเบฒเบเบชเบนเบเบเบตเปเบเบตเบเปเบญเบกเบเปเบงเบเบเบฒเบเบเบณเบฅเบญเบเปเบเบเบชเบฐเบเบฃเบตเบกเบกเบดเบ เปเบฅเบฐ เบญเบฑเบเบเบฐเปเบเบกเบฑเบ. เบเปเบฒเบเปเบฒเบเบเปเบฒเบฅเบฑเบเบงเบฒเบเปเบเบเบเบตเปเบเบฐเปเบเปเบเบฒเบเปเบเปเปเบเบเบตเป, เปเบซเปเบเบงเบเปเบเบดเปเบ
เบเบปเบกเปเบเบตเบ!
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com