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 λ λ²¨λ‘ μ€μ λμ΄μΌ ν©λλ€.