반응형

wokers..properties에 worker.xxx.fail_on_status=503 설정 추가

각 node에 설정하거나, templete에 설정

workers.properties
#worker.list=jk-status
#worker.jk-status.type=status
#worker.jk-status.read_only=true
 
#worker.list=jk-manager
#worker.jk-manager.type=status
 
worker.list=balancer
worker.balancer.type=lb
worker.balancer.balance_workers=node1,node2
worker.balancer.error_escalation_time=0
worker.balancer.max_reply_timeouts=10
worker.balancer.sticky_session=true
#worker.balancer.method=Session
 
worker.node1.reference=worker.template
worker.node1.host=192.168.0.112
worker.node1.port=9109
worker.node1.route=test_server11
worker.node1.activation=A
worker.node1.fail_on_status=503
 
worker.node2.reference=worker.template
worker.node2.host=192.168.0.112
worker.node2.port=9209
worker.node2.route=test_server12
worker.node2.activation=A
worker.node2.fail_on_status=503
 
worker.template.type=ajp13
worker.template.socket_connect_timeout=5000
worker.template.socket_keepalive=true
worker.template.ping_mode=A
worker.template.ping_timeout=10000
worker.template.connection_pool_minsize=0
worker.template.connection_pool_timeout=600
worker.template.reply_timeout=300000
worker.template.recovery_options=3
#worker.template.fail_on_status=503

 

Wildfly, Jboss 연동 시 세션 중복처리가 가능한 상태로 설정해야 한다.

 

standalone-ha.xml

(변경 전)

standalone-ha.xml
<subsystem xmlns="urn:jboss:domain:infinispan:7.0">
   <cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan">
        <transport lock-timeout="60000"/>
        <distributed-cache name="dist">
            <locking isolation="REPEATABLE_READ"/>
            <transaction mode="BATCH"/>
            <file-store/>
        </distributed-cache>
    </cache-container>

 

(변경 후 - locking isolation, transaction mode 태그 삭제)

standalone-ha.xml
<subsystem xmlns="urn:jboss:domain:infinispan:7.0">
    <cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan">
        <transport lock-timeout="60000"/>
        <distributed-cache name="dist">
            <file-store/>
        </distributed-cache>
    </cache-container>

 

'IT기술노트 > WEB' 카테고리의 다른 글

Windows Apache 설치  (4) 2024.10.31
Linux Apache 컴파일 설치(CentOS7)  (2) 2024.10.31
Apache/Jbcs 서버 헤더 변경 방법  (3) 2024.10.31
Nginx 설치 테스트(ubuntu20.04)  (2) 2024.10.29
Nginx SSL 인증서 설정 방법  (2) 2024.10.29

Apache 설정

1)httpd.conf 파일 수정
 -mod_security2.so 모듈이 존재해야 한다
 -SecServerSignature의 설정 값 _ 으로 server 헤더가 표시된다

conf/httpd.conf
LoadModule security2_module modules/mod_security2.so
<IfModule security2_module>
  SecRuleEngine on
  ServerTokens Full
  ServerSignature Off
  SecServerSignature "_"
</IfModule>

 

Jbcs 설정

1)conf.modules.d/10-mod_security.conf 파일에 security2_module 설정 확인

conf.modules.d/10-mod_security.conf
LoadModule security2_module modules/mod_security2.so


2)httpd.conf 파일 수정
 -Include conf.modules.d/*.conf 태그 아래에 설정해야 한다.

conf/httpd.conf
Include conf.modules.d/*.conf
...
<IfModule security2_module>
   SecRuleEngine on
   ServerTokens Full
   ServerSignature Off
   SecServerSignature "_"
</IfModule>

 -ServerTokens Prod 설정 시 SecServerSignature 설정에 공백("abc test")이 포함되면 정상적으로 동작하지 않는다 (ServerTokens Prod의 기본 결과값으로 출력됨)

윈도우 폴더에서 파일을 찾으려면 오랜 시간이 걸리는 경우가 많고, 생각했던 것보다 검색이 잘 안되는 경우가 많습니다.

Everything 프로그램을 사용하면 빠르고 쉽게 파일 검색이 가능합니다.

 

Everything이 다른 검색엔진과 다른 점

  • 작은 설치파일
  • 깔끔하고 단순한 UI
  • 빠른 파일 색인
  • 빠른 검색
  • 빠른 시작
  • 최저 자원 사용
  • 작은 디스크 DB 크기
  • 실시간 갱신

 

다운로드 주소

https://www.voidtools.com/ko-kr/

 

voidtools

 

www.voidtools.com

 

 

Everything이 뭔가요?

Everything은 파일 이름으로 파일과 폴더를 실시간으로 찾아주는 윈도 검색 엔진입니다.

윈도 검색과 달리 Everything은 처음에 컴퓨터에 있는 모든 파일과 폴더를 보여줍니다(그래서 이름이 그렇습니다).

검색 필터를 입력해 무슨 파일과 폴더를 보여줄지 거릅니다.

 

파일을 색인하는 데 얼마나 걸리나요?

Everything은 파일과 폴더 이름만 색인하며 일반적으로 데이터베이스를 구축하는 데 수초가 걸립니다.

윈도 10 설치 직후(약 12만개 파일)에서 색인하는데 약 1초가 걸립니다.

파일 100만 개의 경우 약 1분 가량이 걸립니다.

 

Everything이 파일 내용도 검색하나요?

예. Everything은 content: 검색 함수로 파일 내용도 검색할 수 있습니다.

파일 내용은 색인하지 않기 때문에, 내용 검색은 느립니다.

 

Everything이 컴퓨터 자원을 많이 잡아먹나요?

아니오, Everything은 시스템 자원을 거의 쓰지 않습니다.

윈도 10 설치 직후(약 12만개 파일) 상태에서 14MB 메모리와 9MB 미만의 디스크를 사용합니다.

파일 100만 개의 경우 약 75MB 메모리와 45MB 디스크를 사용합니다.

 

Everything이 파일 시스템 변경을 감시하나요?

예, Everything은 파일 시스템 변경을 감시합니다.

파일에 변화가 생기면 재깍 검색 창에 반영될 겁니다.

 

Everything은 무료인가요?

예, Everything은 프리웨어입니다.

기부를 생각해 보세요.

 

Everything에 맬웨어나 스파이웨어, 애드웨어가 들어있나요?

아니오, 그 어떤 것도 포함하지 않습니다.

 

Everything이 꺼져 있으면 파일 시스템 변경 사항을 놓치나요?

아니오, Everything은 (다른 시스템에서 재시작 할 때조차) 파일 시스템 변경사항을 잃지 않고 껐다 켤 수 있습니다.

Everything은 시작할 때 데이터베이스를 갱신합니다.

 

Everything 요구 시스템 사양이 뭔가요?

Everything은 윈도 XP, Vista, 7, 8, 10에서 돌아갑니다.

NTFS 색인은 Everything을 서비스로 돌리거나 관리자 권한으로 실행해야 가능합니다.

 

볼륨을 어떻게 NTFS로 변환하죠?

NTFS로 변환하기 전에 중요한 모든 자료를 백업하세요.

한번 NTFS로 변환하면 FAT이나 FAT32로는 되돌아갈 수 없습니다.

몇몇 가전제품은 USB 디스크의 NTFS 볼륨을 못 읽을 수 있으니 주의하세요.

 

볼륨을 NTFS로 변환:

  • 시작 메뉴에서, 실행클릭 (혹은 Win+R).
  • 다음을 입력하고 엔터키 누르기:
  • cmd
  • 명령 프롬프트에서 아래를 입력하고 엔터 누르기:D:는 변환할 드라이브입니다.
  • convert D: /fs:ntfs

 

Everything이 네트워크 드라이브도 색인할 수 있나요?

예, 자세한 건 폴더 색인을 보세요.

 

어떻게 Everything을 설치하나요?

Everything 설치 기본 가이드를 봐 주세요.

 

Everything을 어떻게 사용하나요?

Everything 사용 기본 가이드를 봐 주세요.

 

왜 Everything 1.4 버전이 1.3 버전보다 메모리를 더 많이 쓰나요?

Everything 1.4 버전은 파일 크기, 날짜 등의 정보를 빠른 정렬을 위해 기본으로 색인합니다.

적은 메모리 사용을 위한 최적화에 이걸 비활성화하는 법이 나와있습니다.

 

Everything을 켤 때 뜨는 UAC 팝업을 어떻게 없애나요?

Everything은 NTFS 색인을 위한 저수준 읽기 작업을 위해 관리자 권한이 필요합니다.

 

UAC 팝업은 Everything 서비스를 설치하고 Everything을 일반 사용자 계정으로 실행하거나 NTFS 색인을 꺼서 우회할 수 있습니다.

 

Everything 서비스를 설치하고 일반 사용자 계정으로 실행하려면

  • Everything에서 도구 - 설정 - 일반 탭까지 들어갑니다.
  • Everything 서비스 설치를 체크합니다.
  • 관리자 권한으로 실행을 해제합니다.
  • 확인을 누릅니다.
  • Everything을 종료합니다. (트레이 아이콘을 우클릭해 끝내기를 클릭합니다)
  • Everything을 다시 켭니다.

 

검색

 

파일이나 폴더를 어떻게 검색하나요?

파일이나 폴더 이름의 일부분만 입력하면, 결과가 재깍 뜰 겁니다.

 

논리 연산을 어떻게 하나요?

그리고가 기본 논리 연산자입니다.

 

예를 들어 abc와 123이 동시에 포함된 것을 검색하려면

abc 123

 

둘 중에 하나만 포함해도 검색하려면 단어 사이에 |를 넣으면 됩니다.

 

가령 .jpg나.bmp 파일을 검색하려면

.jpg | .bmp

 

어떤 것을 제외하고 싶다면 검색어 앞에 !를 붙이면 됩니다.

 

예를 들어 abc가 없는 걸 검색하고 싶다면

!abc

 

기본적인 검색 구문을 보려면

Everything에서 도움말 - 검색 문법을 참고하세요.

 

와일드카드를 어떻게 쓰나요?

*은 아무 문자 0개 이상에 대응합니다.

예를 들어 e*g는 e로 시작하고 g로 끝나는 파일이나 폴더를 검색해줍니다.

?는 문자 1개에 대응합니다.

예를 들어 *.??는 2글자 확장자를 가진 파일을 검색해줍니다.

 

공백은 어떻게 검색하나요?

공백을 검색어에 포함하려면 검색어를 큰따옴표로 감싸면 됩니다.

"새 폴더"는 "새 폴더"는 찾지만 "폴더 새"는 찾지 않습니다.

 

파일 종류를 어떻게 검색하나요?

확장자를 검색어로 입력해 파일 종류를 검색할 수 있습니다.

mp3 파일을 찾으려면 *.mp3를 치면 됩니다.

2종류 이상을 검색하려면 |를 끼우면 됩니다.

*.bmp|*.jpg를 검색하면 bmp나 jpg 파일을 검색할 겁니다.



특정 위치에 있는 파일이나 폴더는 어떻게 검색하나요?

그러려면 \를 검색어에 포함하면 됩니다.

downloads 폴더에 있는 mp3파일을 찾고 싶을 땐 downloads\ .mp3로 검색할 수 있습니다.

검색 - 전체 경로 검색 옵션을 켜서 검색해도 좋습니다.

그 경우엔 downloads .avi를 검색하면 downloads와 .avi가 둘 다 경로에 들어간 파일을 찾아줄 겁니다.

 

고급 검색

검색 도움말을 참고하세요.




문제 해결

 

검색해도 원하는 게 나오지 않아요.

아래 옵션들을 전부 꺼 주세요.

  • Everything - 검색 메뉴에서
  • 대소문자 구분
  • 전체 단어 일치
  • 전체 경로 검색
  • 발음 구별 기호 구분
  • 정규식으로 검색

 

필터가 걸려있진 않은지 확인하세요.

Everything - 검색 - 전부에 체크해주세요.

 

설정 저장이 안 돼요.

앱 데이터 폴더에 설정을 저장하도록 되어 있는지 확인해보세요.

 

%APPDATA%\Everything에 설정과 자료를 저장하려면

Everything - 도구 - 설정 - 일반 - APPDATA폴더에 Everything 설정 저장을 체크하고 확인을 누르면 됩니다.

 

같은 게 여러개 나와요.

Everything은 NTFS 볼륨을 자동으로 색인합니다.

때문에 NTFS 볼륨을 폴더 색인으로 추가하면 결과가 중복될 겁니다.

 

NTFS 볼륨을 폴더 색인에서 빼려면

  • Everything - 도구 - 설정 - 폴더 탭에서
  • NTFS 볼륨을 선택하고 폴더 제거를 클릭 후 확인을 클릭하면 됩니다.

 

어떤 NTFS 볼륨이 검색되는지 확인하려면

  • Everything - 도구 - 설정 - NTFS 탭에 들어가서
  • 데이터베이스에 포함이 체크돼있으면 색인된 겁니다.

 

결과가 비어있거나 드라이브밖에 안 보여요.

Everything 서비스를 실행했거나 관리자 권한으로 실행했는지 확인해보세요.

 

Everything 서비스를 설치하려면

Everything - 도구 - 설정 - 일반 - Everything 서비스 설치를 체크하고 확인을 클릭합니다.

 

혹은 Everything을 관리자 권한으로 실행하려면

Everything - 도구 - 설정 - 일반 - 관리자 권한으로 실행을 체크하고 확인을 클릭합니다.

 

하나 이상의 NTFS 볼륨이 있는지 확인하세요.

NTFS 볼륨으로 변환하는 법은 위에 나왔습니다.

 

수동으로 모든 NTFS 볼륨 색인을 켜려면

  • Everything - 도구 - 설정 - NTFS 탭에서 볼륨마다 아래 항목을 체크해줍니다.
  • 데이터베이스에 포함
  • USN 저널 사용
  • 실시간 감시

 

강제로 데이터베이스를 재구축하려면

Everything - 도구 - 설정 - 색인 탭 - 지금 갱신 - 확인을 클릭하면 됩니다.

 

https://www.voidtools.com/ko-kr/faq/

1.yum 설치

# yum -y install haproxy

(낮은 버젼으로 설치됨 haproxy-1.5.18-9.el7_9.1.x86_64)

 

서비스 시작
# systemctl start haproxy

 

기본 프로세스

[root@test /SW/haproxy/haproxy-2.7.1]# ps -ef | grep haproxy
root     29915     1  0 10:16 ?        00:00:00 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
haproxy  29919 29915  0 10:16 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
haproxy  29922 29919  0 10:16 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds

 

서비스 종료
# systemctl stop haproxy

 

재부팅 시 자동으로 서비스 시작
# systemctl enable haproxy

 

기본 환경파일(/etc/haproxy/haproxy.cfg)

/etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#
#---------------------------------------------------------------------
 
#---------------------------------------------------------------------
# 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 *:5000
    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

 

2.컴파일 설치

1)패키지 설치
 -기본: sudo yum -y install gcc pcre-devel tar make
 -추가 옵션 적용: sudo yum -y gcc openssl openssl-devel pcre-static pcre-devel systemd-devel

2)다운로드 및 묶음 해제
다운로드 페이지: http://www.haproxy.org/#down
# wget 
http://www.haproxy.org/download/2.7/src/haproxy-2.7.1.tar.gz# tar -zxvf haproxy-2.7.1.tar.gz

management.txt 파일에서 설치 옵션(USE_XXX) 및 기동 방법 대한 정보를 확인 할 수 있다.

 

기본 설치
# make TARGET=linux-glibc

옵션 추가
# make TARGET=linux-glibc USE_OPENSSL=1 USE_PCRE=1 USE_ZLIB=1 USE_SYSTEMD=1

# 싱글 스레드
make TARGET=linux-glibc \
USE_LUA=1 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 \
USE_SYSTEMD=1 USE_PROMEX=1

# 병렬 스레드
make -j 4 TARGET=linux-glibc \
USE_LUA=1 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 \
USE_SYSTEMD=1 USE_PROMEX=1

 

# make install

 

설치 화면
[root@test /SW/haproxy/haproxy-2.7.1]# make TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_PROMEX=1
  CC      src/ev_poll.o
  CC      src/ev_epoll.o
  CC      src/cpuset.o
  CC      src/ssl_sock.o
  CC      src/ssl_ckch.o
  CC      src/ssl_sample.o
  CC      src/ssl_crtlist.o
  CC      src/cfgparse-ssl.o
  CC      src/ssl_utils.o
  CC      src/jwt.o
  CC      addons/promex/service-prometheus.o
  CC      src/namespace.o
  CC      src/mux_h2.o
  CC      src/mux_fcgi.o
  CC      src/mux_h1.o
  CC      src/tcpcheck.o
  CC      src/stream.o
  CC      src/stats.o
  CC      src/http_ana.o
  CC      src/server.o
  CC      src/stick_table.o
  CC      src/sample.o
  CC      src/flt_spoe.o
  CC      src/tools.o
  CC      src/log.o
  CC      src/cfgparse.o
  CC      src/peers.o
  CC      src/backend.o
  CC      src/resolvers.o
  CC      src/cli.o
  CC      src/connection.o
  CC      src/proxy.o
  CC      src/http_htx.o
  CC      src/cfgparse-listen.o
  CC      src/pattern.o
  CC      src/check.o
  CC      src/haproxy.o
  CC      src/cache.o
  CC      src/stconn.o
  CC      src/http_act.o
  CC      src/http_fetch.o
  CC      src/http_client.o
  CC      src/listener.o
  CC      src/dns.o
  CC      src/vars.o
  CC      src/debug.o
  CC      src/tcp_rules.o
  CC      src/sink.o
  CC      src/h1_htx.o
  CC      src/task.o
  CC      src/mjson.o
  CC      src/h2.o
  CC      src/filters.o
  CC      src/server_state.o
  CC      src/payload.o
  CC      src/fcgi-app.o
  CC      src/map.o
  CC      src/htx.o
  CC      src/h1.o
  CC      src/pool.o
  CC      src/cfgparse-global.o
  CC      src/trace.o
  CC      src/tcp_sample.o
  CC      src/flt_http_comp.o
  CC      src/mux_pt.o
  CC      src/flt_trace.o
  CC      src/mqtt.o
  CC      src/acl.o
  CC      src/sock.o
  CC      src/mworker.o
  CC      src/tcp_act.o
  CC      src/ring.o
  CC      src/session.o
  CC      src/proto_tcp.o
  CC      src/fd.o
  CC      src/channel.o
  CC      src/activity.o
  CC      src/queue.o
  CC      src/lb_fas.o
  CC      src/http_rules.o
  CC      src/extcheck.o
  CC      src/flt_bwlim.o
  CC      src/thread.o
  CC      src/http.o
  CC      src/lb_chash.o
  CC      src/applet.o
  CC      src/compression.o
  CC      src/raw_sock.o
  CC      src/ncbuf.o
  CC      src/frontend.o
  CC      src/errors.o
  CC      src/uri_normalizer.o
  CC      src/http_conv.o
  CC      src/lb_fwrr.o
  CC      src/sha1.o
  CC      src/proto_sockpair.o
  CC      src/mailers.o
  CC      src/lb_fwlc.o
  CC      src/ebmbtree.o
  CC      src/cfgcond.o
  CC      src/action.o
  CC      src/xprt_handshake.o
  CC      src/protocol.o
  CC      src/proto_uxst.o
  CC      src/proto_udp.o
  CC      src/lb_map.o
  CC      src/fix.o
  CC      src/ev_select.o
  CC      src/arg.o
  CC      src/sock_inet.o
  CC      src/mworker-prog.o
  CC      src/hpack-dec.o
  CC      src/cfgparse-tcp.o
  CC      src/sock_unix.o
  CC      src/shctx.o
  CC      src/proto_uxdg.o
  CC      src/fcgi.o
  CC      src/eb64tree.o
  CC      src/clock.o
  CC      src/chunk.o
  CC      src/cfgdiag.o
  CC      src/signal.o
  CC      src/regex.o
  CC      src/lru.o
  CC      src/eb32tree.o
  CC      src/eb32sctree.o
  CC      src/cfgparse-unix.o
  CC      src/hpack-tbl.o
  CC      src/ebsttree.o
  CC      src/ebimtree.o
  CC      src/base64.o
  CC      src/auth.o
  CC      src/uri_auth.o
  CC      src/time.o
  CC      src/ebistree.o
  CC      src/dynbuf.o
  CC      src/wdt.o
  CC      src/pipe.o
  CC      src/init.o
  CC      src/http_acl.o
  CC      src/hpack-huff.o
  CC      src/hpack-enc.o
  CC      src/dict.o
  CC      src/freq_ctr.o
  CC      src/ebtree.o
  CC      src/hash.o
  CC      src/dgram.o
  CC      src/version.o
  LD      haproxy
  CC      dev/flags/flags.o
  LD      dev/flags/flags
 
 
[root@test /SW/haproxy/haproxy-2.7.1]# make install

 

※  make 오류 발생시: sudo yum -y install openssl-devel or "openssl*"

[root@test /SW/haproxy/haproxy-2.7.1]# make TARGET=linux-glibc USE_OPENSSL=1 USE_PCRE=1 USE_ZLIB=1 USE_SYSTEMD=1
CC src/ssl_sock.o
In file included from src/ssl_sock.c:62:0:
include/haproxy/openssl-compat.h:10:24: fatal error: openssl/bn.h: 그런 파일이나 디렉터리가 없습니다
#include <openssl/bn.h>
^
compilation terminated.
make: *** [src/ssl_sock.o] 오류 1

 

3)haproxy 복사 or 링크 설정
 -> /usr/local/sbin/haproxy를 /usr/sbin으로 복제하거나 소프트 링크를 설정한다

# cp -p /usr/local/sbin/haproxy /usr/sbin/
# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy


서비스 시작

# haproxy -f 환경파일명.cfg
haproxy  -D -f 환경파일명.cfg  (데몬으로 실행: 콘솔 끊어져도 프로세스 유지됨)
# haproxy -f /etc/haproxy.cfg \ -D -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)  (권장)

 

-init 파일에서 HAProxy를 시작하는 안전한 방법은 데몬 모드를 강제 실행하고, 기존 pid값은를 pid 파일에 저장하고,
이 pid 파일을 사용하여 이전 프로세스를 종료하기 전에 종료하도록 알리는 것입니다.

# haproxy -f /etc/haproxy.cfg \ -D -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

 

-구성이 몇 개의 특정 파일로 분할된 경우(예: tcp vs http) 

# haproxy -f /etc/haproxy/global.cfg -f /etc/haproxy/stats.cfg \ 
          -f /etc/haproxy/default-tcp.cfg -f /etc/haproxy/tcp.cfg \ 
          -f /etc/haproxy/default-http.cfg -f /etc/haproxy/http.cfg \ 
          -D -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

 

-고객별 파일과 같이 알 수 없는 수의 파일이 예상되는 경우 고정 크기 시퀀스 번호로 시작하는 이름을 지정하고 "--"를 사용하여 일부 기본값을 로드한 후 로드하는 것이 좋습니다.

#  haproxy -f /etc/haproxy/global.cfg -f /etc/haproxy/stats.cfg \
                  -f /etc/haproxy/default-tcp.cfg -f /etc/haproxy/tcp.cfg \
                  -f /etc/haproxy/default-http.cfg -f /etc/haproxy/http.cfg \
                  -D -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid) \
                  -f /etc/haproxy/default-customers.cfg -- /etc/haproxy/customers/*

 

서비스 등록 방법

1)haproxy.init 파일 복사
# cp -p /SW/haproxy/haproxy-2.7.1/examples/haproxy.init /etc/init.d/haproxy
# chmod 755 /etc/init.d/haproxy

2)haproxy 환경파일 생성
경로: /etc/haproxy/haproxy.cfg

3)데몬 리로드
# systemctl daemon-reload

K8S 환경에서 prometheus 모니터링이 가능하도록 하려면 아래와 같이 리버스 프록시를 설정해야 한다.
http 포트 8080의 /metrics 호출 시 management 9990의 /metrics 로 전달

Source url Target url
http://$HOSTNAME:8080/metrics http://$HOSTNAME:9990/metrics

 

standalone-ha.xml

...
        <subsystem xmlns="urn:jboss:domain:undertow:12.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other" statistics-enabled="true">
            <buffer-cache name="default"/>
            <server name="default-server">
                <ajp-listener name="ajp" socket-binding="ajp" worker="ajp-worker"/>
                <http-listener name="default" socket-binding="http" no-request-timeout="10000" disallowed-methods="PUT DELETE TRACE OPTIONS" redirect-socket="https" enable-http2="true"/>
                <https-listener name="https" socket-binding="https" ssl-context="applicationSSC" enable-http2="true"/>
                <host name="default-host" alias="localhost">
                    <location name="/" handler="welcome-content"/>
                    <!-- metric url 설정 -->
                    <location name="/metrics" handler="management_proxy"/>
                    <access-log pattern="%{i,X-Forwarded-For} %t %m %s %T %b %D %u %r" directory="${jboss.server.log.dir}" prefix="access_log" suffix=".log"/>
                    <filter-ref name="server-header"/>
                    <filter-ref name="x-powered-by-header"/>
                    <filter-ref name="stuck"/>
                    <http-invoker http-authentication-factory="application-http-authentication"/>
                </host>
            </server>
            <servlet-container name="default">
                <jsp-config x-powered-by="false"/>
                <websockets/>
            </servlet-container>
            <handlers>
                <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
                <!-- reverse proxy hander 설정 -->
                <reverse-proxy name="management_proxy">
                    <host name="metrics" outbound-socket-binding="management" scheme="http" path="/metrics"/>
                </reverse-proxy>
            </handlers>
            <filters>
                <response-header name="server-header" header-name="Server" header-value="_"/>
                <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="_"/>
                <expression-filter name="stuck" expression="blocking; stuck-thread-detector(600)"/>
            </filters>
            <application-security-domains>
                <application-security-domain name="other" security-domain="ApplicationDomain"/>
            </application-security-domains>
        </subsystem>


...
    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
        <socket-binding name="http" port="${jboss.http.port:8080}"/>
        <socket-binding name="https" port="${jboss.https.port:8443}"/>
        <socket-binding name="jgroups-mping" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
        <socket-binding name="jgroups-tcp" port="7600"/>
        <socket-binding name="jgroups-tcp-fd" interface="private" port="57600"/>
        <socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
        <socket-binding name="jgroups-udp-fd" interface="private" port="54200"/>
        <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
        <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
        <socket-binding name="modcluster" multicast-address="${jboss.modcluster.multicast.address:224.0.1.105}" multicast-port="23364"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="${jboss.mail.server.host:localhost}" port="${jboss.mail.server.port:25}"/>
        </outbound-socket-binding>
        <!-- management socket 설정 -->
        <outbound-socket-binding name="management">
            <remote-destination host="${jboss.bind.address.management}" port="9990"/>
        </outbound-socket-binding>
    </socket-binding-group>​

 

[패키지 설치]

1)nginx 및 모듈 패키지 tar.gz 파일 서버 업로드 후 압축 해제

 

2)압축 해제된 nginx 경로에서 아래 명령어 실행(패키지 설치 경로는 실제 환경에 맞게 수정)
※ gcc가 설치되지 않았을 경우 패키지 설치 필요: ex) sudo apt-get install build-essential

$  ./configure --with-zlib=/SW/nginx/package/zlib-1.2.11 --with-pcre=/SW/nginx/package/pcre-8.45 \
--with-openssl=/SW/nginx/package/openssl-1.1.1o --with-http_ssl_module \
--add-module=/SW/nginx/package/echo-nginx-module-0.62 --add-module=/SW/nginx/package/nginx-sticky-module-ng-master \
--prefix=/SW/nginx/nginx-1.21.6
 $ make && make install 

 

최신 버젼인 nginx-1.21.6이 정상적으로 설치/기동되는 것을 확인하였습니다.

 

[apt 설치]

apt 설치 방법은 nginx 사이트에서 확인 가능하며, 명령어는 아래와 같습니다.

http://nginx.org/en/linux_packages.html#Ubuntu

 

Install the prerequisites:
Import an official nginx signing key so apt could verify the packages authenticity. Fetch the key:
Verify that the downloaded file contains the proper key:
The output should contain the full fingerprint 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 as follows:
If the fingerprint is different, remove the file.
To set up the apt repository for stable nginx packages, run the following command:
If you would like to use mainline nginx packages, run the following command instead:


Set up repository pinning to prefer our packages over distribution-provided ones:


To install nginx, run the following commands:

 

apt 명령어로 nginx 설치 시 최신 버젼인 1.21.6이 설치되며, 정상적으로 기동되는 것을 확인

1)nginx 및 모듈 패키지 tar.gz 파일 서버 업로드 후 압축 해제

 

2)압축 해제된 nginx 경로에서 아래 명령어 실행(패키지 설치 경로는 실제 환경에 맞게 수정)
※ gcc가 설치되지 않았을 경우 패키지 설치 필요: ex) sudo apt-get install build-essential

$  ./configure --with-zlib=/SW/nginx/package/zlib-1.2.11 --with-pcre=/SW/nginx/package/pcre-8.45 \
--with-openssl=/SW/nginx/package/openssl-1.1.1o --with-http_ssl_module \
--add-module=/SW/nginx/package/echo-nginx-module-0.62 --add-module=/SW/nginx/package/nginx-sticky-module-ng-master \
--prefix=/SW/nginx/nginx-1.21.6
 $ make && make install 

 

최신 버젼인 nginx-1.21.6이 정상적으로 설치/기동되는 것을 확인하였습니다.

 

[apt 설치]

apt 설치 방법은 nginx 사이트에서 확인 가능하며, 명령어는 아래와 같습니다.

http://nginx.org/en/linux_packages.html#Ubuntu

 

Install the prerequisites:
Import an official nginx signing key so apt could verify the packages authenticity. Fetch the key:
Verify that the downloaded file contains the proper key:
The output should contain the full fingerprint 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 as follows:
If the fingerprint is different, remove the file.
To set up the apt repository for stable nginx packages, run the following command:
If you would like to use mainline nginx packages, run the following command instead:


Set up repository pinning to prefer our packages over distribution-provided ones:


To install nginx, run the following commands:

 

apt 명령어로 nginx 설치 시 최신 버젼인 1.21.6이 설치되며, 정상적으로 기동되는 것을 확인

+ Recent posts