All pages
1 of 1

Loading...

OpenProxy μ„€μ • 레퍼런슀

버전: 1.1.3


1. μ„€μ • 파일 ꡬ쑰

OpenProxyλŠ” TOML ν˜•μ‹μ˜ μ„€μ • νŒŒμΌμ„ μ‚¬μš©ν•©λ‹ˆλ‹€. κΈ°λ³Έ 파일 이름은 openproxy.toml이며, μ‹€ν–‰ μ‹œ 경둜λ₯Ό μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ„€μ • νŒŒμΌμ€ λ‹€μŒ μ„Ήμ…˜μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

μ„Ήμ…˜
μ„€λͺ…

νŒŒλΌλ―Έν„°
κΈ°λ³Έκ°’
μ„€λͺ…
νŒŒλΌλ―Έν„°
κΈ°λ³Έκ°’
μ„€λͺ…
νŒŒλΌλ―Έν„°
κΈ°λ³Έκ°’
μ„€λͺ…
νŒŒλΌλ―Έν„°
κΈ°λ³Έκ°’
μ„€λͺ…
νŒŒλΌλ―Έν„°
κΈ°λ³Έκ°’
μ„€λͺ…
νŒŒλΌλ―Έν„°
κΈ°λ³Έκ°’
μ„€λͺ…

etcd 연동을 μ„€μ •ν•©λ‹ˆλ‹€. etcdλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 경우 이 μ„Ήμ…˜μ„ μ„€μ • νŒŒμΌμ—μ„œ μ œκ±°ν•©λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°
ν•„μˆ˜
κΈ°λ³Έκ°’
μ„€λͺ…

⚠️ 주의: enabled λ³€κ²½ μ‹œ ν”„λ‘œμ„ΈμŠ€ μž¬μ‹œμž‘ ν•„μš”

enabled 값을 λ³€κ²½ν•˜λ©΄ μ„€μ • 파일 μžλ™ reloadκ°€ 변경을 κ°μ§€ν•˜λ”λΌλ„ etcd 연동이 ν™œμ„±ν™”λ˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ°˜λ“œμ‹œ OpenProxy ν”„λ‘œμ„ΈμŠ€λ₯Ό μž¬μ‹œμž‘ν•΄μ•Ό ν•©λ‹ˆλ‹€.


VRRP 기반 가상 IP(VIP)λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. μ—¬λŸ¬ OpenProxy μΈμŠ€ν„΄μŠ€μ— VIPλ₯Ό μ μš©ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. VIPκ°€ ν•„μš” μ—†λŠ” 경우 이 μ„Ήμ…˜μ„ μ„€μ • νŒŒμΌμ—μ„œ μ œκ±°ν•©λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°
ν•„μˆ˜
μ„€λͺ…

μ°Έκ³ : VRRP κΈ°λŠ₯은 CAP_NET_ADMIN, CAP_NET_RAW κΆŒν•œμ„ ν•„μš”λ‘œ ν•©λ‹ˆλ‹€. systemd μ„œλΉ„μŠ€ 파일의 AmbientCapabilities 섀정을 ν™•μΈν•˜μ‹­μ‹œμ˜€.

μ°Έκ³ : virtual_router 섀정은 etcd에 λ™κΈ°ν™”λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 각 λ…Έλ“œμ˜ μ„€μ • νŒŒμΌμ—μ„œ κ°œλ³„μ μœΌλ‘œ 관리해야 ν•©λ‹ˆλ‹€.


λͺ…μ‹œμ μœΌλ‘œ Pool둜 λ“±λ‘λ˜μ§€ μ•Šμ€ μ‚¬μš©μž 이름 - DB 이름 μŒμ„ κ°€μ§„ μ‚¬μš©μž μš”μ²­μ„ μ²˜λ¦¬ν•  κΈ€λ‘œλ²Œ Connection Pool을 μ •μ˜ν•©λ‹ˆλ‹€. μ‚¬μš©μž 이름과 λΉ„λ°€λ²ˆν˜Έλ₯Ό μ •μ˜ν•  수 μ—†μœΌλ―€λ‘œ PostgreSQL 에 μ •μ˜λœ μ‚¬μš©μž 정보λ₯Ό 가져와 ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ„ μΈμ¦ν•˜λŠ” auth_passthrough λ°©μ‹λ§Œμ„ μ§€μ›ν•©λ‹ˆλ‹€. μ •μ˜ν•œ auth_query λŠ” 이 Pool의 첫번째Shard에 μ •μ˜ν•œ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€.

기타 Users, Shards 섀정은 이름이 μ •μ˜λœ Explicit Pool μ—μ„œμ˜ μ„€μ •κ³Ό λ™μΌν•©λ‹ˆλ‹€. μ‚¬μš©μž μ •μ˜λŠ” 첫번째 μ‚¬μš©μž μ •μ˜λ₯Ό μ°Έμ‘°ν•˜λ©° pool_size, statement_timeout μ •μ˜λ§Œμ„ μ°Έμ‘°ν•©λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°
κΈ°λ³Έκ°’
μ„€λͺ…

풀을 μ •μ˜ν•©λ‹ˆλ‹€. <name>은 ν΄λΌμ΄μ–ΈνŠΈκ°€ -d μ˜΅μ…˜μœΌλ‘œ μ§€μ •ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€ 이름이 λ©λ‹ˆλ‹€. 풀은 μ—¬λŸ¬ 개 μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°
κΈ°λ³Έκ°’
μ„€λͺ…
νŒŒλΌλ―Έν„°
κΈ°λ³Έκ°’
μ„€λͺ…
νŒŒλΌλ―Έν„°
κΈ°λ³Έκ°’
μ„€λͺ…
νŒŒλΌλ―Έν„°
κΈ°λ³Έκ°’
μ„€λͺ…

[general] μ„Ήμ…˜μ˜ 값을 ν’€λ³„λ‘œ μ˜€λ²„λΌμ΄λ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ„€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ [general]의 값을 λ”°λ¦…λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°
μ„€λͺ…

풀에 접속할 수 μžˆλŠ” μ‚¬μš©μžλ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. <n>은 0λΆ€ν„° μ‹œμž‘ν•©λ‹ˆλ‹€. μ‚¬μš©μžλŠ” μ—¬λŸ¬ λͺ… μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°
ν•„μˆ˜
κΈ°λ³Έκ°’
μ„€λͺ…

pool_size 계산 방법

(PostgreSQL max_connections - μŠˆνΌμœ μ € μ—°κ²° 수) / ν’€ 수

예: max_connections = 100, ν’€ 2개인 경우 β†’ pool_size = 45


OpenProxyκ°€ μ—°κ²°ν•  PostgreSQL μ„œλ²„ λͺ©λ‘μ„ μ •μ˜ν•©λ‹ˆλ‹€. <n>은 0λΆ€ν„° μ‹œμž‘ν•©λ‹ˆλ‹€. 샀딩을 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 일반 ν™˜κ²½μ—μ„œλŠ” shards.0 ν•˜λ‚˜λ§Œ μ •μ˜ν•©λ‹ˆλ‹€.

νŒŒλΌλ―Έν„°
ν•„μˆ˜
μ„€λͺ…

servers μ—­ν•  κ°’

κ°’
μ„€λͺ…

Patroni 연동 없이 직접 μ—­ν•  μ§€μ •

Patroni 연동 (μ—­ν•  μžλ™ 감지)


읽기/μ“°κΈ° 뢄리 없이 단일 primaryμ—λ§Œ μ—°κ²°ν•˜λŠ” κ°€μž₯ λ‹¨μˆœν•œ κ΅¬μ„±μž…λ‹ˆλ‹€.

Patroni HA ν΄λŸ¬μŠ€ν„°μ™€ μ—°λ™ν•˜μ—¬ 읽기/μ“°κΈ° 뢄리 및 μžλ™ Failoverλ₯Ό μ‚¬μš©ν•˜λŠ” κ΅¬μ„±μž…λ‹ˆλ‹€.

[pools.{pool_name}] ν˜•νƒœλ‘œ μ •μ˜λ˜μ§€ μ•Šμ€ μ‚¬μš©μž μš”μ²­μ„ μ²˜λ¦¬ν•  Global 레벨의 Default Pool을 μ •μ˜ν•˜λŠ” μ˜ˆμ‹œμž…λ‹ˆλ‹€. Default Pool의 경우 μž„μ˜ μ‚¬μš©μžμ— λŒ€ν•œ λΉ„λ°€λ²ˆν˜Έλ₯Ό μ„€μ •ν•  수 μ—†μ–΄ 인증을 PostgreSQL둜 μœ„μž„ν•˜λ―€λ‘œ auth_query κ΄€λ ¨ 섀정이 λ°˜λ“œμ‹œ ν•„μš”ν•©λ‹ˆλ‹€.

λ˜ν•œ scram-sha-256 νƒ€μž… 인증을 μ‚¬μš©ν•˜λ©΄μ„œ auth_query λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” κ²½μš°λŠ” OpenProxyμ—μ„œ PostgreSQL둜 μ ‘μ†ν•˜κΈ° μœ„ν•œ νŒ¨μŠ€μ›Œλ“œλ₯Ό μ•Œ 수 μ—†μœΌλ―€λ‘œ PostgreSQL 둜의 연결이 λ°˜λ“œμ‹œ trust 레벨둜 μ„€μ •λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

μ •μ˜λœ Pool 밑에 λͺ¨λ“  μ‚¬μš©μž μš”μ²­μ„ μ²˜λ¦¬ν•  Wildcard * μ‚¬μš©μžλ₯Ό μƒμ„±ν•˜λŠ” μ˜ˆμ‹œμž…λ‹ˆλ‹€. λ§ˆμ°¬κ°€μ§€λ‘œ auth_query μ •μ˜κ°€ ν•„μš”ν•˜λ©° ν•΄λ‹Ή μΏΌλ¦¬λŠ” 첫번째 shards 의 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€.

λ˜ν•œ scram-sha-256 νƒ€μž… 인증을 μ‚¬μš©ν•˜λ©΄μ„œ auth_query λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” κ²½μš°λŠ” OpenProxyμ—μ„œ PostgreSQL둜 μ ‘μ†ν•˜κΈ° μœ„ν•œ νŒ¨μŠ€μ›Œλ“œλ₯Ό μ•Œ 수 μ—†μœΌλ―€λ‘œ PostgreSQL 둜의 연결이 λ°˜λ“œμ‹œ trust 레벨둜 μ„€μ •λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

[general]

μ „μ—­ μ„€μ • (λ„€νŠΈμ›Œν¬, νƒ€μž„μ•„μ›ƒ, κ΄€λ¦¬μž 계정 λ“±)

[general.etcd]

etcd 연동 μ„€μ • (선택)

[general.virtual_router]

VRRP / VIP μ„€μ • (선택)

[general.default_pool]

κΈ€λ‘œλ²Œ Pool (선택)

[pools.<name>]

ν’€ μ„€μ •. <name>은 ν΄λΌμ΄μ–ΈνŠΈκ°€ 접속할 λ°μ΄ν„°λ² μ΄μŠ€ 이름

[pools.<name>.users.<n>]

풀별 μ‚¬μš©μž μ„€μ • (<n>은 0λΆ€ν„° μ‹œμž‘ν•˜λŠ” 인덱슀)

[pools.<name>.shards.<n>]

풀별 μ„œλ²„ μ—°κ²° μ„€μ • (<n>은 0λΆ€ν„° μ‹œμž‘ν•˜λŠ” 인덱슀)

host

"0.0.0.0"

μˆ˜μ‹  IP μ£Όμ†Œ. 0.0.0.0은 λͺ¨λ“  μΈν„°νŽ˜μ΄μŠ€μ—μ„œ μˆ˜μ‹ 

port

5432

μˆ˜μ‹  포트. PgBouncer와 λ™μΌν•˜κ²Œ 6432λ₯Ό κ΄€λ‘€μ μœΌλ‘œ μ‚¬μš©

admin_username

"admin"

κ΄€λ¦¬μž μ½˜μ†” 접속 계정

admin_password

"admin"

κ΄€λ¦¬μž μ½˜μ†” 접속 νŒ¨μŠ€μ›Œλ“œ. 운영 ν™˜κ²½μ—μ„œλŠ” λ°˜λ“œμ‹œ λ³€κ²½

connect_timeout

1000 (ms)

μ„œλ²„ μ—°κ²° 수립 λŒ€κΈ° μ‹œκ°„. 초과 μ‹œ ν•΄λ‹Ή μ„œλ²„λ₯Ό μΌμ‹œ 차단

idle_timeout

600000 (ms)

유휴 μ„œλ²„ μ—°κ²° μœ μ§€ μ‹œκ°„. 초과 μ‹œ μ—°κ²° μ’…λ£Œ

worker_threads

4

Tokio 비동기 μ›Œμ»€ μŠ€λ ˆλ“œ 수. PostgreSQLκ³Ό 같은 λ…Έλ“œμ—μ„œ μ‹€ν–‰ν•˜λŠ” 경우 CPU μ½”μ–΄ 수의 절반 ꢌμž₯

server_round_robin

true

μ„œλ²„ 선택 μ‹œ λΌμš΄λ“œλ‘œλΉˆ μ‚¬μš© μ—¬λΆ€

tls_certificate

μ—†μŒ

TLS μΈμ¦μ„œ 파일 경둜. μ„€μ • μ‹œ ν΄λΌμ΄μ–ΈνŠΈμ™€μ˜ TLS μ—°κ²° ν™œμ„±ν™”

tls_private_key

μ—†μŒ

TLS 개인 ν‚€ 파일 경둜

server_tls

false

PostgreSQL μ„œλ²„μ™€μ˜ TLS μ—°κ²° μ‚¬μš© μ—¬λΆ€

verify_server_certificate

false

μ„œλ²„ TLS μΈμ¦μ„œ 검증 μ—¬λΆ€

enabled

예

true

etcd 연동 ν™œμ„±ν™” μ—¬λΆ€

endpoints

[general.etcd]
enabled = true
endpoints = [
    "192.168.1.1:2379",
    "192.168.1.2:2379",
    "192.168.1.3:2379",
]
patroni_namespace = "/service"
patroni_scope = "postgres-cluster"

# etcd 인증이 μ„€μ •λœ 경우
# username = "etcduser"
# password = "etcdpassword"

interface

예

λ„€νŠΈμ›Œν¬ μΈν„°νŽ˜μ΄μŠ€ 이름. 예: "eth0"

router_id

예

VRRP λΌμš°ν„° ID (1~255). 동일 λ„€νŠΈμ›Œν¬ λ‚΄ λ‹€λ₯Έ VRRP κ·Έλ£Ήκ³Ό μ€‘λ³΅λ˜μ§€ μ•Šμ•„μ•Ό 함

[general.virtual_router]
interface = "eth0"
router_id = 50
priority = 100
advert_int = 1
vip_addresses = ["192.168.1.100/24"]

auth_query

β€”

μ‚¬μš©μž 이름과 νŒ¨μŠ€μ›Œλ“œ ν•΄μ‹œλ₯Ό κ°€μ Έμ˜¬ 쿼리.

예: SELECT usename, password FROM pg_shadow WHERE usename = '$1'

auth_query_user

β€”

auth_query λ₯Ό μ‹€ν–‰ν•  μ‚¬μš©μž 이름

pool_mode

"transaction"

풀링 λͺ¨λ“œ. "transaction" λ˜λŠ” "session"

auth_type

"md5"

ν΄λΌμ΄μ–ΈνŠΈ 인증 방식. "md5" λ˜λŠ” "scram-sha-256"

query_parser_enabled

false

SQL νŒŒμ‹±μ„ ν†΅ν•œ μžλ™ μ—­ν•  κ²°μ • ν™œμ„±ν™”

query_parser_read_write_splitting

false

읽기/μ“°κΈ° 뢄리 ν™œμ„±ν™”. query_parser_enabled = true ν•„μš”

load_balancing_mode

"random"

λ‘œλ“œ λ°ΈλŸ°μ‹± 방식. "random" λ˜λŠ” "least_outstanding_connections"

prepared_statements_cache_size

0

ν’€ λ‹¨μœ„μ˜ Prepared Statementsλ₯Ό μ €μž₯ν•  Cache 크기. 0인 경우 ν΄λΌμ΄μ–ΈνŠΈ λ³„λ‘œ Prepared Statementsλ₯Ό 관리함.

connect_timeout

μ„œλ²„ μ—°κ²° 수립 λŒ€κΈ° μ‹œκ°„ (ms)

idle_timeout

유휴 μ„œλ²„ μ—°κ²° μœ μ§€ μ‹œκ°„ (ms)

server_lifetime

μ„œλ²„ μ—°κ²° μ΅œλŒ€ μœ μ§€ μ‹œκ°„ (ms)

[pools.mydb]
pool_mode = "transaction"
auth_type = "scram-sha-256"
query_parser_enabled = true
query_parser_read_write_splitting = true

username

예

β€”

ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‚¬μš©ν•˜λŠ” 계정 이름. μ§€μ •λ˜μ§€ μ•Šμ€ μ‚¬μš©μž 이름에 λŒ€ν•œ 연결을 ν—ˆμš©ν•˜κ³ μž ν•˜λŠ” 경우 μ™€μΌλ“œμΉ΄λ“œ λ¬Έμžμ—΄ * 을 μ§€μ •ν•œ μ‚¬μš©μž μ •μ˜λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

password

[pools.mydb.users.0]
username = "appuser"
password = "apppassword"
server_username = "appuser"
server_password = "apppassword"
pool_size = 20
statement_timeout = 0

[pools.mydb.users.1]
username = "*"
pool_size = 10
statement_timeout = 0

servers

예

PostgreSQL μ„œλ²„ λͺ©λ‘. 각 ν•­λͺ©μ€ ["호슀트", 포트, "μ—­ν• "] ν˜•μ‹

database

예

접속할 PostgreSQL λ°μ΄ν„°λ² μ΄μŠ€ 이름

"primary"

μ“°κΈ° μ„œλ²„λ‘œ κ³ μ •

"replica"

읽기 μ„œλ²„λ‘œ κ³ μ •

"Auto"

Patroni 연동 μ‹œ μ‚¬μš©. Patroniκ°€ 역할을 μžλ™μœΌλ‘œ κ²°μ •

[pools.mydb.shards.0]
servers = [
    ["192.168.1.10", 5432, "primary"],
    ["192.168.1.11", 5432, "replica"],
    ["192.168.1.12", 5432, "replica"],
]
database = "mydb"
[pools.mydb.shards.0]
servers = [
    ["192.168.1.10", 5432, "Auto"],
    ["192.168.1.11", 5432, "Auto"],
    ["192.168.1.12", 5432, "Auto"],
]
database = "mydb"
use_patroni = true
[general]
host = "0.0.0.0"
port = 6432
admin_username = "openproxy_admin"
admin_password = "adminpassword"

[pools.mydb]
pool_mode = "transaction"
auth_type = "scram-sha-256"

[pools.mydb.users.0]
username = "appuser"
password = "apppassword"
server_username = "appuser"
server_password = "apppassword"
pool_size = 20

[pools.mydb.shards.0]
servers = [
    ["192.168.1.10", 5432, "primary"],
]
database = "mydb"
[general]
host = "0.0.0.0"
port = 6432
admin_username = "openproxy_admin"
admin_password = "adminpassword"
worker_threads = 4

[general.etcd]
enabled = true
endpoints = [
    "192.168.1.1:2379",
    "192.168.1.2:2379",
    "192.168.1.3:2379",
]
patroni_namespace = "/service"
patroni_scope = "postgres-cluster"

# VRRPλ₯Ό μ‚¬μš©ν•˜λŠ” 경우 ν™œμ„±ν™”
# [general.virtual_router]
# interface = "eth0"
# router_id = 50
# priority = 100
# advert_int = 1
# vip_addresses = ["192.168.1.100/24"]

[pools.mydb]
pool_mode = "transaction"
auth_type = "scram-sha-256"
query_parser_enabled = true
query_parser_read_write_splitting = true

[pools.mydb.users.0]
username = "appuser"
password = "apppassword"
server_username = "appuser"
server_password = "apppassword"
pool_size = 20

[pools.mydb.shards.0]
servers = [
    ["192.168.1.10", 5432, "Auto"],
    ["192.168.1.11", 5432, "Auto"],
    ["192.168.1.12", 5432, "Auto"],
]
database = "mydb"
use_patroni = true
[general.default_pool]
pool_mode = "transaction"

## 기타 Pool General μ„€μ •
auth_type = "scram-sha-256"
auth_query = "SELECT usename, passwd FROM pg_shadow WHERE usename = '$1'"
auth_query_user = "opensql"
auth_query_password = "opensql"

[general.default.pool.users.0]
## 이 값은 μ‹€μ œλ‘œ μ°Έμ‘°λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ˜ username을 μ°Έμ‘°ν•˜μ—¬ DB 연결을 μƒμ„±ν•©λ‹ˆλ‹€.
username = "*"
pool_size = 20
statement_timeout = 0

[general.default_pool.shards.0]
servers = [
    [ "pg-1", 5432, "auto" ],
    [ "pg-2", 5432, "auto" ]
]
## auth_queryλ₯Ό μ‹€ν–‰ν•  λ•Œλ§Œ 참쑰되며 ν΄λΌμ΄μ–ΈνŠΈ μ—°κ²° μ‹œμ—λŠ” μ‹€μ œλ‘œ μ°Έμ‘°λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
## ν΄λΌμ΄μ–ΈνŠΈμ˜ DB name을 μ°Έμ‘°ν•˜μ—¬ DB 연결을 μƒμ„±ν•©λ‹ˆλ‹€.
database = "postgres"
use_patroni = true
[pools.mydb]
## κΈ°μ‘΄ Pool μ •μ˜
auth_type = "scram-sha-256"
auth_query = "SELECT usename, passwd FROM pg_shadow WHERE usename = '$1'"
auth_query_user = "opensql"
auth_query_password = "opensql"

[pools.mydb.users.0]
username = "*"
pool_size = 35
statement_timeout = 0

2. [general] μ„Ήμ…˜

λ„€νŠΈμ›Œν¬

κ΄€λ¦¬μž 계정

컀λ„₯μ…˜ 및 νƒ€μž„μ•„μ›ƒ

μ„±λŠ₯

TLS (ν΄λΌμ΄μ–ΈνŠΈ μ—°κ²°)

TLS (μ„œλ²„ μ—°κ²°)

3. [general.etcd] μ„Ήμ…˜

4. [general.virtual_router] μ„Ήμ…˜

5. [general.default_pool] μ„Ήμ…˜

인증

6. [pools.<name>] μ„Ήμ…˜

풀링 λͺ¨λ“œ

인증

읽기/μ“°κΈ° 뢄리

λ‘œλ“œ λ°ΈλŸ°μ‹±

νƒ€μž„μ•„μ›ƒ (풀별 μ˜€λ²„λΌμ΄λ“œ)

7. [pools.<name>.users.<n>] μ„Ήμ…˜

8. [pools.<name>.shards.<n>] μ„Ήμ…˜ β€” μ„œλ²„ μ—°κ²° μ„€μ •

9. μ„€μ • μ˜ˆμ‹œ

파일 단독 λͺ¨λ“œ (standalone)

etcd 연동 λͺ¨λ“œ (HA)

Global Pool μ˜ˆμ‹œ

Wildcard User μ˜ˆμ‹œ

server_lifetime

3600000 (ms)

μ„œλ²„ μ—°κ²° μ΅œλŒ€ μœ μ§€ μ‹œκ°„. 초과 μ‹œ 유휴 μ—°κ²° μ’…λ£Œ

idle_client_in_transaction_timeout

0 (ms)

νŠΈλžœμž­μ…˜ λ‚΄ 유휴 ν΄λΌμ΄μ–ΈνŠΈ λŒ€κΈ° μ‹œκ°„. 0은 λ¬΄μ œν•œ

ban_time

60 (s)

였λ₯˜ λ°œμƒ μ„œλ²„λ₯Ό μΌμ‹œ μ°¨λ‹¨ν•˜λŠ” μ‹œκ°„

shutdown_timeout

60000 (ms)

μ’…λ£Œ μ‹œ μ§„ν–‰ 쀑인 νŠΈλžœμž­μ…˜ μ™„λ£Œ λŒ€κΈ° μ‹œκ°„

healthcheck_timeout

1000 (ms)

μ„œλ²„ ν—¬μŠ€μ²΄ν¬ νƒ€μž„μ•„μ›ƒ

healthcheck_delay

30000 (ms)

ν—¬μŠ€μ²΄ν¬ μ£ΌκΈ°

예

β€”

etcd μ—”λ“œν¬μΈνŠΈ λͺ©λ‘. 예: ["192.168.1.1:2379", "192.168.1.2:2379"]

patroni_scope

예

β€”

Patroni ν΄λŸ¬μŠ€ν„° scope. Patroni의 PATRONI_SCOPE ν™˜κ²½λ³€μˆ˜μ™€ μΌμΉ˜ν•΄μ•Ό 함

patroni_namespace

μ•„λ‹ˆμ˜€

"/service"

Patroni DCS namespace. Patroni의 PATRONI_NAMESPACE ν™˜κ²½λ³€μˆ˜μ™€ μΌμΉ˜ν•΄μ•Ό 함

username

μ•„λ‹ˆμ˜€

μ—†μŒ

etcd 인증 μ‚¬μš©μž 이름

password

μ•„λ‹ˆμ˜€

μ—†μŒ

etcd 인증 νŒ¨μŠ€μ›Œλ“œ

priority

예

VRRP μš°μ„ μˆœμœ„ (1~255). 값이 λ†’μ„μˆ˜λ‘ VIPλ₯Ό μš°μ„  μ†Œμœ 

advert_int

예

VRRP κ΄‘κ³  νŒ¨ν‚· 전솑 μ£ΌκΈ° (초)

vip_addresses

예

가상 IP λͺ©λ‘. CIDR ν‘œκΈ°λ²• μ‚¬μš©. 예: ["192.168.1.100/24"]

pre_promote_script

μ•„λ‹ˆμ˜€

MASTER 승격 직전 μ‹€ν–‰ν•  슀크립트 경둜

pre_demote_script

μ•„λ‹ˆμ˜€

MASTER κ°•λ“± 직전 μ‹€ν–‰ν•  슀크립트 경둜

unicast_peers

μ•„λ‹ˆμ˜€

μœ λ‹ˆμΊμŠ€νŠΈ VRRPλ₯Ό μ‚¬μš©ν•˜λŠ” 경우 μƒλŒ€ λ…Έλ“œ IP λͺ©λ‘

auth_query_password

β€”

auth_query λ₯Ό μ‹€ν–‰ν•  μ‚¬μš©μž λΉ„λ°€λ²ˆν˜Έ

primary_reads_enabled

false

읽기 쿼리 λŒ€μƒμ— primary 포함 μ—¬λΆ€

default_role

"any"

μ—­ν•  κ²°μ • λΆˆκ°€ μ‹œ κΈ°λ³Έ λΌμš°νŒ… λŒ€μƒ. "primary", "replica", "any"

예

β€”

ν΄λΌμ΄μ–ΈνŠΈ 인증 νŒ¨μŠ€μ›Œλ“œ

pool_size

예

β€”

이 μ‚¬μš©μžλ₯Ό μœ„ν•΄ μœ μ§€ν•  μ„œλ²„ μ—°κ²° μ΅œλŒ€ 수

server_username

μ•„λ‹ˆμ˜€

usernameκ³Ό 동일

PostgreSQL μ„œλ²„μ— μ ‘μ†ν•˜λŠ” 계정 이름. ν΄λΌμ΄μ–ΈνŠΈ 계정과 λ‹€λ₯Ό 수 있음

server_password

μ•„λ‹ˆμ˜€

β€”

PostgreSQL μ„œλ²„ 접속 νŒ¨μŠ€μ›Œλ“œ

min_pool_size

μ•„λ‹ˆμ˜€

0

μœ μ§€ν•  μ„œλ²„ μ—°κ²° μ΅œμ†Œ 수

statement_timeout

μ•„λ‹ˆμ˜€

0 (ms)

쿼리 μ‹€ν–‰ μ œν•œ μ‹œκ°„. 0은 λ¬΄μ œν•œ

pool_mode

μ•„λ‹ˆμ˜€

ν’€μ˜ pool_mode

μ‚¬μš©μžλ³„ 풀링 λͺ¨λ“œ μ˜€λ²„λΌμ΄λ“œ

use_patroni

μ•„λ‹ˆμ˜€

Patroni 연동 ν™œμ„±ν™” μ—¬λΆ€. true둜 μ„€μ •ν•˜λ©΄ 역할을 Patroniκ°€ 관리

patroni_port

μ•„λ‹ˆμ˜€

Patroni REST API 포트. κΈ°λ³Έκ°’: 8008