공부?/국비 지원 일기장

프로젝트 - 이중화 WEB서버 WAS 연동

무무요 2024. 10. 6. 05:41

======

 

로드밸런싱을 위해 Rocky Linux로 웹서버 두개를 만들어 리버스 프록시 설정을 해주고 WAS와 연동할 예정이다.

두개의 웹서버 모두 nginx가 설치 되어 있다는 기준으로 작성

 

1. 리버스 프록시, 로드 밸런싱 설정 - 두개의 웹서버 모두 동일하게 설정

nginx를 was 서버로 트래픽을 전달하는 리버스 프록시로 설정

 

설정파일 수정

vi /etc/nginx/nginx.conf

http {
    upstream was_backend {   # 로드 밸런싱을 위한 upstream 설정
        server 10.255.255.21:8080;  # WAS 서버 IP와 포트 설정
    }

    server {
        listen 80;
        server_name 10.70.160.3;  # 웹 서버의 IP 또는 도메인

        location / {
            proxy_pass http://was_backend;  # WAS 서버로 요청 전달
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

 

다른 웹서버는 그 웹서버의 IP에 맞춰 넣어주었다. 

 

나는 http { 안에 upstream 설정을 넣어주었고

프록시 설정은 원래 있던 server 바로 위에 하나 더 만들어 주었다.

 

설정 적용을 위해 nginx 재시작

systemctl restart nginx

 

오답노트) 502 Bad Gateway 오류가 떴었기에 로그 파일 확인

vi /var/log/nginx/error.log

*1 connect() to 10.255.255.21:8080 failed (13: Permission denied) while connecting to upstream, client: 10.70.70.70, server: 10.70.160.2, request: "GET /favicon.ico HTTP/1.1", upstream: "http://10.255.255.21:8080/favicon.ico", host: "10.70.160.2", referrer: "http://10.70.160.2/"
# 오류 로그

 

검색해보니 SELinux의 권한 문제인것 같기 때문에 nginx가 외부 서버와 통신할 수 있도록 SELinux 설정을 변경

sudo setsebool -P httpd_can_network_connect 1
systemctl restart nginx  # 설정 적용을 위해 재 시작

 

처음에 첫번째 웹서버는 정상 작동 했었는데 두번째 웹서버에선 502 Bad Gateway 오류가 뜨길래 SELinux의 설정을 변경했었는데 계속 502 에러가 뜨길래 스냅샷으로 돌려서 다시 해보니 되었다.

502 Gateway 에러외엔 다른 오류는 뜨지 않았었다.

 

=======

 

3 Tier 핵심 구성을 끝내니 나머지 작업은 원활하게 되는것 같다. 하지만 L4 세팅과 UTM WAF 설정이 두렵다 ..