[ 구성 ] 

HAProxy 서버 ( Public VIP ) * 1EA

( CentOS 7 EPEL yum install HAProxy 1.5.18 )

하단에 공인망 스위치와 사설스위치 각각 1대씩.

사설단에 연결된 192.168.0.15 / 16  이  WEB1 , WEB2 

 

[ Configure 기본 ] 

# cat /etc/haproxy/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                        # Syslog. UDP 514 Open 필요.

    chroot      /var/lib/haproxy                #서비스 Jail 경로. 수퍼유저로 프로세스 실행시, 모든 동작은 이 안에서만 수행됌. 보안 상승.
    pidfile     /var/run/haproxy.pid            # 실행 피드명
    maxconn     4000                            # 프로세스 당 최대 연결 수치
    user        haproxy                         # Manage ID
    group       haproxy                         # Manage Group
    daemon                                      # BackGround Mode Process

    # 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                                #front , back , listen 에 관련된 전역 섹션
    mode                    http                   # http 프로토콜을 사용하는 로드밸런싱 모드
    log                     global                      # 로그는 global 의 설정에 따른다.
    option                  httplog                     # 기본 Log 는 SIP,DIP와 Name 만 표기하므로, 이 옵션을 사용하여 디테일을 높임.
    option                  dontlognull                 # 로그 비대화 방지를 위해, Probe(정찰,스캔)같은 잡다한 기록을 HAProxy Log 화하지 않는 옵션.
    option http-server-close                            # 클라이언트와 리얼서버 연결 종료시, 디폴트로 유휴대기하지 않고, 서버에서 Handshake 를 종료하여, 더 빠른 새로운 세션을 준비할 수 있도록 함. 디폴트 옵션에 선언되어 있어도, 인스턴스 별로 no옵션으로 제외처리 가능함.
    option forwardfor       except 127.0.0.0/8          # 서버에 대한 응답을 HAProxy 가 받기 때문에(VIP), 리얼서버 IP를 HTTP헤더에 표기하기 위한 옵션.
    option                  redispatch                  # mode HTTP에서 Cookie에 지정된 Real 서버가 다운되면, 외부 클라이언트가 쿠키를 플러시하기 전에는 서비스에 문제를 일으킬 수 있으므로, 이 옵션을 줘서, 프록시의 지속성을 무시하고 쿠키, 세션 재분배를 실행하게 된다. retries 값이 0보다 커야 한다.
    retries                 3
    timeout http-request    10s                         # Request 시의 헤더에만 적용. DoS 방어를 위해, HTTP 요청 타임아웃시간 설정. ( 클라이언트의 연결 타임아웃과는 무관한, 서버(HAProxy) 의 옵션이다 )
    timeout queue           1m                          # 서버의 maxconn 에 도달시, 무한정 보류상태로 두지 않고 HTTP 503 응답을 보내면서 연결을 버리기까지의 시간.
    timeout connect         10s                         # TCP 패킷손실을 막기 위한 Real 서버로의 연결 최대 지연시간 설정. ( Backend 에 적용되나, 전역 설정 가능 )
    timeout client          1m                          # 외부 클라이언트의 요청이나 데이터와의 연결 최대 시간. request 와 같이 사용하여, 서버 안정성을 구현.
    timeout server          1m                          # 서버가 데이터를 승인하거나, 전송해야 할 때의 연결 최대 시간.
    timeout http-keep-alive 10s                         # 클라이언트의 요청에 따른 응답 전송 후, 다음 요청까지의 대기 시간. http-request 가 선행함.
    timeout check           10s                         # timeout server 와 동일하거나 작은 값을 가져야 한다.
    maxconn                 3000                        # 프로세스당 최대 연결 개수

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main *:80                     # 클라이언트의 연결을 받는 부분 처리. WAF 기능에 가깝다.
    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                   # acl 에서 정의한 style 들을 backend static으로 보낸다.
    default_backend             web                             # 위의 조건 이외는 backend web 으로 보낸다.

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static                                  # 프론트엔드에서 acl 연결하는 실제 리얼서버 설정.
    balance     roundrobin
    server      static 192.168.0.15:80 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend web                     # 실제 접속시 로드밸런싱하는 서버
    balance     roundrobin                      # 순차적으로 로드밸런싱
    server  web1 192.168.0.15:80 check
    server  web2 192.168.0.16:80 check

#내부 사설서버들 반드시 방화벽 해제하던지, 포트 허용해둘 것.


#listen                         # 프론트/백엔드의 연결의 포트/옵션등을 정의함. TCP 제어나 Proxy 에 주로 사용.


listen stats # "stats"라는 이름으로 listen 지정
    bind *:9000 # 접속 포트 지정
    stats enable
    stats realm Haproxy Statistics  # 브라우저 타이틀
    stats uri /haproxy_stats  # stat 를 제공할 URI
    #stats auth Username:Password # 인증이 필요하면 추가한다

 

HAProxy Configure 메뉴얼 보시면 아시겠지만, 정말 Flow 이해에 좋습니다. 

너무나도 다양한 옵션이 있으나, 우선 이 정도로도 "동작" 은 합니다.

참고 해주시면 되겠습니다.

 

블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

https://dev.mysql.com/doc/mysql-repo-excerpt/5.6/en/linux-installation-yum-repo.html


이 링크 하나면 yum 완벽합니다.

아래의 repo 파일 만든 후 yum clean all , yum repolist 확인 필수!



저는 CentOS 7.6 Lastest 버전이므로 6--> 7로 변경 했습니다


root@DB2:/etc/yum.repos.d# vi mysql.repo


[mysql57-community]

name=MySQL 5.7 Community Server

baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/

enabled=1

gpgcheck=0

#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql



#yum clean all

#yum repolist

#yum install mysql-community* ( mysql-community-server 만 설치해도 되긴함 ) 

혹시 gpgkey 에러가 나서 server가 설치 안 된다면 yum install --nogpgcheck 옵션을 넣어주면 됩니다.



Dependencies Resolved


==========================================================================================================================

 Package                                 Arch               Version                   Repository                     Size

==========================================================================================================================

Installing:

 mysql-community-libs                    x86_64             5.7.26-1.el7              mysql57-community             2.2 M

     replacing  mariadb-libs.x86_64 1:5.5.60-1.el7_5

 mysql-community-libs-compat             x86_64             5.7.26-1.el7              mysql57-community             2.0 M

     replacing  mariadb-libs.x86_64 1:5.5.60-1.el7_5

 mysql-community-server                  x86_64             5.7.26-1.el7              mysql57-community             166 M

Installing for dependencies:

 mysql-community-client                  x86_64             5.7.26-1.el7              mysql57-community              24 M

 mysql-community-common                  x86_64             5.7.26-1.el7              mysql57-community             274 k


Transaction Summary

==========================================================================================================================

Install  3 Packages (+2 Dependent packages)


Total download size: 194 M



추가팁 ) 위의 레포지토리로 가령 MySQL 5.7.26 을 설치했을 때
PHP를 Source 로 Config 하기 위한 설정 부연합니다.
which 나 PATH 등으로 경로 찾아서 prefix 추가하시면 되는데.. yum 설치시 경로 그냥 포함시켜서 공유하겠습니다.

( PHP 7.3.4 Stable Source Tar 로 설치 시. 7버전대면 크게 다를 건 없을 겁니다. ) 


 ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqli=/bin/mysql_config --with-pdo-mysql=/bin/mysql --with-zlib-dir=/usr/local --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-libxml-dir=/usr/lib --with-xmlrpc --with-freetype-dir=/usr/lib --with-gmp --with-gd --with-gdbm --with-bz2 --with-pic --with-openssl --with-gettext --enable-wddx --enable-sockets --enable-ftp --enable-bcmath --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-calendar --enable-sysvshm --enable-sysvsem --enable-soap --enable-exif --enable-sigchild  --enable-xml --disable-debug --with-iconv --with-curl --with-mcrypt --enable-fpm


--with 모듈이 문제가 있을 경우 /lib , /lib64 등의 idconfig 나 PATH 확인해주세요.



'Linux ( Cent OS ) > MySQL' 카테고리의 다른 글

[실무 예시] MySQL Table 비우기  (0) 2019.05.13
0. Log Parameters 간단 요약( Mysql 5.1 ) - 작성중  (0) 2019.05.02
7. Binary Log 삭제  (0) 2019.05.02
블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,