26~28일차 - 리눅스 미니프로젝트 (가용성, 효율성, 보안성을 향상시킨 온프레미스 웹 서버 환경 구축)

Jk Lim·2023년 5월 19일
0

MLOps 부트캠프

목록 보기
25/34

26~28일차에는

리눅스 미니프로젝트(주제 : 가용성, 효율성, 보안성을 향상시킨 온프레미스 웹 서버 환경 구축)를 진행하였다.


1. 프로젝트 개요 (시나리오)

  • 온프레미스 환경에서 사용할 웹 서버 구축에는 기본적으로 DNS 서버, DB 서버, Web 서버가 포함된다. 해당 프로젝트에서는 서버의 안정성을 위해 Web서버 1개를 추가하고 그 앞단에 로드밸런싱 용도의 HAProxy를 추가로 구성한다. 또한 NFS 서버를 구축하여 웹 어플리케이션 콘텐츠 관리 편의성을 향상시킨다.
  • 각 가상환경의 네트워크는 NAT와 Host Only 인터페이스에 DHCP 없이 Manual로 IP를 할당하였다.
  • 기본 개발 환경 (Ubuntu)의 컴퓨팅 자원이 한정적인 관계로 NFS 서버는 별도로 구축하지 않고 DB서버에 포함 시켜 구현하였다.

    - 각 서버별 도메인 네임, IP 할당 표

    역할DNS 서버WEB1 서버WEB2 서버DB서버(NFS 서버)HAProxy 서버
    FQDN
    *.miniprj1.local
    nsweb1web2dbhaproxy
    IP (NAT)
    10.0.2.*/24
    g.w : 10.0.2.1
    1020213040
    IP(Host Only)
    192.168.56.*/24
    110120121130140

2. 각 서버 Setting

(1) DNS 서버

  • bind 패키지 설치. 정방향 및 역방향 Zone 파일 생성. named 서비스 활성화 및 방화벽 설정. Zone 파일 소유그룹 변경.
  • 서버의 보안성을 위해 DNS와 HAProxy 서버에 대해서만 도메인을 작성하였다. 또한 www 도메인을 사용하기 위해 haproxy로 연결하는 설정을 추가 하였다.

(2) DB 서버

  • MariaDB-server, MariaDB-client 설치 (10.4버전 이상)
  • 보안설정, 방화벽 설정, Web1,2 서버에서 접속 가능한 dbmanager 계정을 생성하였다.

(3) NFS 서버

  • 개발 PC (Ubuntu) 컴퓨팅 자원 한계로 DB 서버에 NFS 서버 기능을 구현하였다.
  • nfs-utils 패키지 설치. /exports/nfs/ 디렉토리에 웹 어플리케이션(해당 프로젝트에서는 WordPress)을 설치. /etc/exports 파일에 공유할 디렉토리, IP 및 정책을 기입.
  • 클라이언트에서 공유된 디렉토리 확인을 위해서 mountd, rpc-bind 패키지를 추가로 설치하고 관련된 패키지 활성화 및 방화벽을 설정하였다. WordPress를 DB서버를 연결하기 위해 WordPress 설정 파일(wp-config.php)을 수정하였다.

(4) Web 서버

  • 웹서버를 구동하기 위한 httpd 패키지, NFS 서버 접속을 위한 nfs-utils 패키지, WordPress 의존성 패키지인 php74 를 설치하고, 서비스 활성화 및 방화벽을 설정하였다.
  • httpd 서비스가 기본 페이지로 WordPress를 불러올 수 있도록 NFS에서 공유하는 디렉토리를 /var/www/html/ 디렉토리로 수동 마운트시키고, httpd.conf 설정 파일에 index.php를 추가로 등록하였다. 또한 서버 재시작 시, 자동으로 마운트 할 수 있도록 /etc/fstab에 정책을 등록하였다.

(5) HAProxy

  • 로드밸런서 기능을 위한 haproxy 패키지, HTTPS를 설정을 위한 mod_ssl 패키지를 설치하였다. haproxy 패키지에서 ssl을 사용하기 위해 개인키, 공개키를 하나의 파일(pem)로 생성하였다.
  • /etc/haproxy/haproxy.cfg파일에서 각각의 웹 서버로 로드밸런싱 해 줄 수 있도록 ip및 포트를 설정하였다. 또한 HTTPS로 접속하기 위한 443포트와 인증서 파일 및 경로를 설정하고 HTTP(80포트)로 접속 시 443으로 리다이렉션 해 주는 설정을 하였다.

3. 결과

(1) 로드밸런싱 테스트

  • HAProxy 로드밸런싱은 각각의 웹서버에 다른 index.html 파일을 저장하고 curl ‘FQDN’ 명령어로 HAProxy 서버를 호출하여 테스트 하였다. 해당 테스트를 수행하는 동안은 NFS의 공유 디렉토리를 umount하였다.

(2) WordPress 접속 및 HTTPS 리다이렉션 테스트

  • 도메인 주소 입력시, WordPress 접속 가능 여부와 HTTP로 웹 사이트 접속 시 HTTPS로 리다이렉션 가능 여부를 테스트 하였다.

(3) 시나리오 결론

  • 온프레미스 환경 웹 서비스의 고가용성 및 안정성 확보를 위한 로드밸런싱이 필요할 때, HAProxy는 쉽고 빠르게 적용할 수 있는 좋은 방안이다.
  • 또한 2개 이상의 웹 서버를 운영할 때, NFS 서버를 구축하면 좀 더 효율적으로 웹 서비스 콘텐츠를 관리할 수 있다.
  • 마지막으로, SSL 인증을 로드밸런서 앞단에 배치하면 인증서 및 암호화 관리를 HAProxy 서버에 중앙 집중시킴으로써 웹 서버의 성능과 유연성을 향상시킬 수 있다.

0개의 댓글