상세 컨텐츠

본문 제목

Openshift 준비하기 : L/B 세팅하기

자격증/OpenShift

by 주스로그 2025. 4. 24. 14:31

본문

728x90
반응형

※주의!

다른 카테고리와 다르게 정말 혼자 실습 연습해보면서 기록하기 때문에

굉장히 편한 어투와 말투 !

지식을 공유한다는 느낌보다는 일기장 같은 느낌일 것!

지식을 원하신다면,, 다른 포스팅으로..


이전까지 bastion 서버에서 설정을 하고있었는데

설정을 하다보니 자꾸 맘에 걸리는게 있어 해당 부분을 확인했다

DNS 서버에 모든 서버가 먼저 연결되어있는가?

디테일하게 서버별 참고할 문서가 없을까? 정도였는데

Openshift4.7 Baremetal 설치 - Restricted Network - 호롤리한 하루

 

Openshift4.7 Baremetal 설치 - Restricted Network

Overview 작년에 Openshift 4.3에대한 baremetal UPI방식, 그리고 폐쇄망에서의 설치에 대해서 기술한 적이 있습니다. Openshift4.3 Installation on Baremetal Openshift4.3 Baremetal 설치 - Restricted Network 시간이 지나면서

gruuuuu.github.io

대리님 통해서 이거 참고했었다는 이야기로(정말 자세하게 나와있다!)

한번 작성해보자 아자자

 

그래서 여기 나온 순서대로 L/B부터 만들고자 한다ㅎㅎ

fedora core가 아닌 RHOSH를 구성할거라 아마 참고하는 정도로 사용할 수 있지 않을까 싶다


1) LoadBalancer 로 사용할 서버를 준비한다

 

2) haproxy 설치

dnf install -y gcc make openssl openssl-devel pcre-devel systemd-devel wget

haproxy에 필요한 패키지를 깔아 준 후

wget http://www.haproxy.org/download/2.4/src/haproxy-2.4.2.tar.gz
tar xvf haproxy-2.4.2.tar.gz

 

3) 설치 옵션 설정

make TARGET=linux-glibc USE_OPENSSL=1 USE_PCRE=1 USE_ZLIB=1 USE_SYSTEMD=1

그럼 포스팅에선  이런식으로 나온다고 하셨는데...

##################

여기서 또다시 의문의 오류들 발생! 이번엔 따로 다루지 않고 같이 여기 작성해둘 예정!

# 1

Makefile이 없어서 생기는 메세지로,

내가 잘 보고 들어갔어야하는데 해당 명령을 수행하는 디렉터리 지정이 잘못되어있었다

haproxy-2.4.2 디렉터리 안으로 들어가 수행했어야했음!

 

#2

zlib.h 헤더 파일이 없어서 빌드에 실패한 상태이다.

의존성 문제라고 볼 수 있음!

이렇게 해당 패키지를 설치해주면 문제 해결이다!

 

#3

해당 부분은 OpenSSL 관련 경고와 함께 실제 빌드 에러가 발생한 상태이다.

단순히 DH_free() 함수가 OpenSSL 3.0부터 deprecated(더 이상 권장되지 않음) 되었다는 것이고,
문제는 이 것 때문에 오류가 나는 점!

결론적으로 쉽게 말하자면 버전차이로 인한 호환성 문제였다.

해당 부분을 haproxy 디렉터리로 클로닝하고

해당 버전에서 다시 설치 옵션을 지정해주면

등등 이렇게 성고옹 한다!

 

4) 설치확인

haproxy -v

 

5) template를 다운받아 서비스 등록

 wget https://raw.githubusercontent.com/haproxy/haproxy/master/admin/systemd/haproxy.service.in -O /etc/systemd/system/haproxy.service

 

6) haproxy의 sbin 경로 재설정

vi /etc/systemd/system/haproxy.service

해당 디폴트 값을

이렇게 바꿔준다(경로 변경)

 

7) haproxy 관련 디렉터리 생성

sudo mkdir -p /etc/haproxy 
sudo mkdir -p /var/log/haproxy 
sudo mkdir -p /etc/haproxy/certs 
sudo mkdir -p /etc/haproxy/errors/

8) config 파일 생성

vi /etc/haproxy/haproxy.cfg
----------------------------

global
    daemon
    # transmit UDP to rsyslog
    log 127.0.0.1 local0

defaults
    log               global
    timeout connect   5s
    timeout client    50s
    timeout server    50s

frontend kubernetes_api_F
    bind 0.0.0.0:6443
    default_backend kubernetes_api_B
    option tcplog

backend kubernetes_api_B
    balance roundrobin
    server bastion www.bastion.example.com:6443 check
    server master1 www.master1.example.com:6443 check
    server master2 www.master2.example.com:6443 check
    server master3 www.master3.example.com:6443 check

frontend machine_config_F
    bind 0.0.0.0:22623
    default_backend machine_config_B
    option tcplog

backend machine_config_B
    balance roundrobin
    server bastion www.bastion.example.com:22623 check
    server master1 www.master1.example.com:22623 check
    server master2 www.master2.example.com:22623 check
    server master3 www.master3.example.com:22623 check

frontend router_https_F
    bind 0.0.0.0:443
    default_backend router_https_B

backend router_https_B
    balance roundrobin
    server worker1 www.worker1.example.com:443 check
    server worker2 www.worker2.example.com:443 check

frontend router_http_F
    mode http
    bind 0.0.0.0:80
    default_backend router_http_B

backend router_http_B
    mode http
    balance roundrobin
    server worker1 www.worker1.example.com:80 check
    server worker2 www.worker2.example.com:80 check

frontend ocp_registry_F
    bind 0.0.0.0:5000
    default_backend ocp_registry_B
    option tcplog

backend ocp_registry_B
    server bastion 192.168.192.101:5000 check

 

이래도 괜찮다! 각 노드가 아직 켜져있지 않기 때문에 뜨는 warning이라고 한댜

enable 설정해주고

haproxy.cfg가 정상 작동하고 다른 설정 충돌이 없는지 재확인해준다

응답이 따로 없으면 정상!

 

9-1) haproxy log 설정

rsyslog에 haproxy용 로그 설정(UDP전송)

vim /etc/rsyslog.d/haproxy.conf

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
$template Haproxy, "%msg%\n"

#local0.*   /var/log/haproxy/haproxy.log

local0.=info    /var/log/haproxy/haproxy-info.log;Haproxy

local0.notice   /var/log/haproxy/haproxy-allbutinfo.log

# rsyslog는 시간 및 데몬 이름 등의  정보가 prepend 되기 때문에 essage를 haproxy-info.log에만 적용할 수 있도록 변수를 지정해준다.

# 모든 haproxy 로그를 남기려면 주석을 풀어주면 되지만 너무 많은 access log가 기록되기 때문에 주석처리해둠

# local0.=info를 통해 haproxy에서 에러로 처리된 로그만 기록하게 함

# haproxy 를 재시작 할 경우 시스템 메세지를 기록하 ㄹ수 있도록 local0.notice를 적용

 

9-2) 로그 회전주기 설정(데이터 관리)

$ vim /etc/logrotate.d/haproxy

/var/log/haproxy/*log {
    daily
    rotate 90
    create 0644 nobody nobody
   dateext
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/systemctl restart rsyslog.service > /dev/null 2>/dev/null || true
    endscript
}

 

# logrotate는 회전 주기 관리 서비스임

  • rotate 90 (90-daily ->90일에 한번씩 회전)
  • create 0644 nobody nobody -> 로그파일 정리 후 새로운 로그파일 생성
  • dateext -> logrotate실행 뒤 로그파일에 날짜 부여
  • missingok : 로그파일이 없을경우 에러메시지를 출력, 실행
  • notifempty : 로그파일의 내용이 없을경우 rotate 하지 않음
  • compress : 로그파일 압축
  • sharedscripts : 여러개의 로그파일을 스크립트로 공유해 실행
  • postrotate : 실행 후 스크립트 파일 실행(rsyslog재시작)

9-3) rsyslog 재시작

haproxy에서 설정한 포트가 정상적으로 listen 중인지 확인해준다

 

+++

방화벽 테스트는 접어두고 다 비활성화하는걸로 했다

+++

이렇게 기본적인 L/B 설정 ,,, 끝!!

기나긴.. 여정이었다!

728x90
반응형

관련글 더보기