관리 메뉴

개발노트

Ubuntu OS에 HAproxy 설치 및 기초 설정 가이드 본문

인프라

Ubuntu OS에 HAproxy 설치 및 기초 설정 가이드

YoonGwon 2022. 2. 21. 12:13

[Ubuntu OS 일때]

apt-get 패키지 업데이트

우분투에서는 패키지 설치를 위해서 보편적으로 apt(Advance Packging Tools) 명령어를 사용합니다. apt는 기존의 apt-get, apt-cache 등의 통합으로 나온 패키지 매니징 툴입니다. 그런데 패키지 업데이트를 위한 update 와 upgrade의 차이점이 존재합니다. 한국 사람이 이해하기에는 비슷한 명령어 이기 때문에 처음 Ubuntu를 사용하게 되면 잘못 사용하는 경우가 발생합니다. 우선 간단히 다음과 같은 차이가 있습니다.

 

  • update - 설치 가능한 패키지 리스트를 최신화
  • upgrade - 실제 업데이트

 

다음 구문은 시스템을 업데이트 하는 것이 아니라 실제 설치 가능한 패키지 리스트를 최신화 하는 것 입니다. 실제로 프로그램이 최신 버전으로 설치되거나 바뀌지는 않습니다. 말그대로 리스트만 최신화 합니다.

$ sudo apt update

 

또한 현재 리스트를 불러오는 명령어는 다음과 같습니다.

$ sudo apt list

 

만약 현재 설치된 리스트 중에서 업그레이드가 필요한 목록을 알아오려면 다음 명령어로 알 수 있습니다.

$ sudo apt list --upgradable

 

이제 설치가 필요한 리스트를 확인했다면 upgrade 명령어를 통해 실제 업데이트를 할 수 있습니다.

$ sudo apt upgrade

 

 다음 순서대로 시스템의 최신화 및 업데이트를 진행합니다. 

  1. update 명령을 통해 패키치 최신화
  2. 현재 업그레이드가 필요한 리스트 출력
  3. upgrade 명령으로 최신 버전으로 업그레이드

[Cent OS 일때]

yum 패키지 업데이트

CentOS 버전 및 Kernel 버전 확인

 

만약 root 계정이 아닌 상태 (명령 프롬프트가 $ 로 표시되면 root가 아님)라면 아래와 같이 sudo yum update 명령을 실행합니다. 만약 root 상태라면 yum update 만 실행.

명령어 : sudo yum update


[공통]

1. haproxy 설치

$ yum install -y haproxy

$ haproxy -v
HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau <willy@haproxy.org>

2. haproxy 설정

A) haproxy.cfg 편집(default)
-위치 : /etc/haproxy/haproxy.cfg

#---------------------------------------------------------------------
# 1. frontend(IN), backend(OUT)의 셋팅으로 in,out 정의방법.
#---------------------------------------------------------------------
....
//frontend는 input port
frontend fe-4000
    mode tcp
    bind *:4000
    default_backend fe //해당 backend의 server정보로 보냄
 
frontend ws-4001
    mode tcp
    bind *:4001
    default_backend websocket
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
// 보낼 IP 등록
backend fe
    mode tcp
    balance     roundrobin
    server  fe1 127.0.0.1:1337 check
    server  fe2 127.0.0.2:1337 check
 
backend websocket
    mode tcp
    balance     roundrobin
    server websocket1 127.0.0.3:1335 check
    server websocket2 127.0.0.4:1335 check
    
    
#---------------------------------------------------------------------
# 2. 하나의 셋팅으로 in,out 정의방법.
#---------------------------------------------------------------------
// 보낼 IP 정보를 bind에 정의하고 라우팅할 곳의 정보를 serve에 정의
listen mariadb
    mode tcp
    option tcplog
    bind *:3306
    server  symphony-mariadb 192.168.0.13:13306 check

B) 로그설정

-로그는 Haproxy 자체가 로그파일을 생성하지 않고 Syslog 쪽으로 로그를 전송합니다.

vi /etc/haproxy/haproxy.cfg

-다음과 같이 Config 파일 설정

global
 
log    /dev/log local0 info //log level 설정
 
log    /dev/log local0 notice
 
maxconn    4096 # 최대 커넥트
 
user          haproxy
 
user          haproxy
 
daemon

-rsyslog를 사용하겠다는 것을 ON 해주어야 합니다. (Enabled = 1 로 설정 되어있어야 합니다.)

vi /etc/default/haporxy
ENABLED=1

-rsyslog에서 어떤 정보를 어느 파일에 저장할지를 설정 해주어야 합니다.

vi /etc/rsyslog.conf
local0.*                                                /var/log/haproxy_0.log
local1.*                                                /var/log/haproxy_1.log

-rsyslog 및 HAProxy 를 재시작.

service rsyslog restart
 
service haproxy restart

 

 

728x90