본문 바로가기
개발 업무(코딩)-개발자였을때 썼던..

haproxy 적용 정리

by 주용사 2023. 1. 9.
728x90

http 기본포트 80

https 기본포트 443

mysql 기본포트 3306

개발서버에서

개발서버 - 중간proxy서버 - 시세운영망proxy - 시세운영망db

이렇게 구성을 하고 싶었다.

시세운영망db에 붙어서 개발서버에서 데이터를 저장시키는 방식을 진행하기위해

현재 운영망에서 쓰는 방식인 haproxy를 개발서버에 도입했다.

그간의 과정을 적어보겠다.

개발서버에서 dbconnect 소켓을 열때

중간proxy서버의 ip와 지정한포트를 주고

접속정보는 운영망db의 id와 pwd를 준다.

이렇게 설정을 하면

중간proxy서버의 haproxy가 개발서버에서 던진 접속정보를 가지고 시세운영망proxy서버로 던진다.

시세운영망proxy에서도 db쪽으로 붙게끔 던져준다.

-> 시세운영망의 db의 IP와 PORT는 알 필요가없게 된다.

log관련해서

 

$ sudo vi /etc/rsyslog.conf
# 아래 부분을 찾아 수정한다

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
$ sudo vi /etc/rsyslog.d/haproxy.conf
# 신규 conf파일을 생성하고 아래와 같이 설정한다 (프로토콜 별로 구분하여 저장한다)

local1.*    /var/log/haproxy_http.log
local2.*    /var/log/haproxy_tcp.log
# rsyslog를 (재)시작한다
$ sudo service rsyslog restart
# rsyslog를 정상 서비스 상태를 확인한다
$ sudo service rsyslog status

------------------------------------------------------------------------------------------------------------------------

stats

vi haproxy.cfg

listen stats
        bind *:9000
        stats enable
        stats uri /haproxy_stats
        #stats auth tqtid:tqtpwd

http://172.16.71.200:9000/haproxy_stats 로 접속

-----------------------------------------------------------------------------------------------------------------

cat haproxy.cfg

#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    #option                  httplog
    option                  dontlognull
    option http-server-close
    #option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
#frontend  main *:80
#    acl url_static       path_beg       -i /static /images /javascript /stylesheets
#    acl url_static       path_end       -i .jpg .gif .png .css .js

#    use_backend static          if url_static
#    default_backend             app

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
#backend static
#    balance     roundrobin
#    server      static 127.0.0.1:4331 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
#backend app
#    balance     roundrobin
#    server  app1 127.0.0.1:5001 check
#    server  app2 127.0.0.1:5002 check
#    server  app3 127.0.0.1:5003 check
#    server  app4 127.0.0.1:5004 check

listen stats
        bind *:9000
        stats enable
        stats uri /haproxy_stats
        #stats auth tqtid:tqtpwd

listen sise-db
        bind    *:33306
        mode    tcp
        option  tcplog
        #option dontlog-normal
        #option         dontlognull
        balance roundrobin
        #log 127.0.0.1 local2
        server  ktproxy1 운영아이피:열어놓은포트 check

default와 global 라인빼곤 전부다 주석처리하고

밑에 listen stats와 sise-db라인 추가했다.

개발서버에서

중간proxy서버의아이피:33306으로 던지면

운영아이피와 열어넣어놓은포트로 가게된다.

------------------------------------------------------------------------------------

참고사이트

https://dev-youngjun.tistory.com/97

728x90