httpd를 활용한 L4 로드밸런싱 구현

김건호·2023년 4월 21일
0

개요

기존 환경에서는 ingress-nginx-system-controller를 LoadBalancer 타입으로 지정하고, metalLB를 사용하여 IP를 부여하고 사용하였습니다.

환경에서 metalLB가 아닌 물리 L4스위치를 제공받을 경우, metalLB를 제외하고 ingress-nginx-system-controller를 NodePort로 지정하고, L4 VIP:80 -> 노드IP:30080, L4 VIP:443-> 노드IP:30443로 설정해야 합니다.
하드웨어 L4스위치가 없기 때문에 논리적으로 L4 로드밸런싱을 구현하여 테스트하기 위한 설정입니다.

작업내역

패키지 설치

로드밸런싱을 할 노드에 apache 서버와 https 인증을 위한 ssl 패키지를 설치합니다.

dnf install httpd mod_ssl
vi /etc/httpd/conf/httpd.conf
<Directory />
    AllowOverride All
    Require all granted
    Order deny,allow
</Directory>
vi /etc/httpd/conf.modules.d/00-proxy.conf
# This file configures all the proxy modules:
LoadModule proxy_module modules/mod_proxy.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

ProxyRequests Off
ProxyPreserveHost Off
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
vi /etc/httpd/conf.modules.d/01-proxy.conf
ProxyPass /balancer-manager !

<Location "/balancer-manager">
    SetHandler balancer-manager
#    Require 127.0.0.1
</Location>

#Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy "balancer://mycluster">
    BalancerMember "https://IP:30443" route=1
    BalancerMember "https://IP:30443" route=2
    BalancerMember "https://IP:30443" route=3
    ProxySet lbmethod=byrequests
#    ProxySet stickysession=ROUTEID
</Proxy>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
ProxyPreserveHost On
profile
Ken, 🔽🔽 거노밥 유튜브(house icon) 🔽🔽

0개의 댓글