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 | ns | web1 | web2 | db | haproxy |
IP (NAT) 10.0.2.*/24 g.w : 10.0.2.1 | 10 | 20 | 21 | 30 | 40 |
IP(Host Only) 192.168.56.*/24 | 110 | 120 | 121 | 130 | 140 |
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 서버에 중앙 집중시킴으로써 웹 서버의 성능과 유연성을 향상시킬 수 있다.