13. Web 서버
- 앞서 생성했던 Bastion Host를 통해 Private Subnet에 ssh로 접속해 Web 서버를 설치해주도록 하자.
- Web 서버를 설치한 뒤에는 EX-ELB를 통해 로드밸런스 테스트까지 해준다.
- 다음 작업은 Web1과 Web2 모두 동일하게 진행해주도록 하자.
13-1 Private Web 서버 접속
- Private의 접속하기 위해서는 ".pem" 키 파일을 이용한 ssh로 접속해 주도록 하자
13-2 sudo yum -y install httpd 명령어를 통해서 Web서버인 아파치를 설치해주자
13-3 설치가 되었으면 다음과 같은 명령어를 입력해주자.
sudo systemctl start httpd // httpd 실행
sudo systemctl enable httpd // 재부팅 되어도 실행 지속
sudo systemctl status httpd // httpd 상태 확인
13-4. 다음과 같은 디렉터리로 이동해준 뒤, 로그를 통해 패킷을 확인해보자
cd /etc/httpd/conf
cd /var/log/httpd
tail -f access_log
13-5. Web 서버 확인을 위해 Html파일로 테스트 페이지를 작성해주자.
- /var/www/html 디렉터리로 이동해준뒤 <파일명>.html 으로 테스트 페이지를 작성해준다.
(Web2서버에서는 테스트 페이지 작성할 때, 로드밸런스 확인할 수 있게 Web1과는 다른 내용으로 작성해주자. )
- 테스트 페이지 작성 후, systemctl restart httpd 명령어로 아파치를 재실행 해주자.
- 테스트 페이지를 작성해도 현재 Web서버는 Private 이라서 확인해 볼 수가 없다.
- 확인하기 위해서는 외부 로드밸런서를 이용해 보도록 하자.
13-6. 앞에서 생성했던 EX-ELB를 통해 Web서버가 제대로 동작하는지 확인해준다.
- EX-ELB의 DNS name을 통해 접속 가능하다. 주소창에 입력해보자.
13-7. EX-ELB 하나의 주소로 새로고침 할 때마다, 웹페이지가 다르게 보여지는걸 확인할 수 있다.
- 웹서버와 로드밸런서가 제대로 동작중인 것을 확인해주자.
14. 웹 애플리케이션 서버 (WAS) 설치
- 앞서 생성했던 Bastion Host를 통해 Private Subnet에 ssh로 접속해 WAS 를 설치해주도록 하자.
- WAS를 설치한 뒤에는 IN-ELB를 통해 로드밸런스 테스트까지 해준다.
- 다음 작업은 WAS1과 WAS2 모두 동일하게 진행해주도록 하자.
14-1. Private WAS 서버 접속
- Private의 접속하기 위해서는 ".pem" 키 파일을 이용한 ssh로 접속해 주도록 하자
14-2. WAS 서버인 Tomcat을 설치해주기 전에는 Java가 필요하다.
- Java가 설치 되어있는지 확인해주자.
14-3. 자바가 설치되어 있지 않아서 설치해주도록 한다.
- yum 명령어를 통해 설치해주도록 하자.
- sudo yum install -y java-1.8.0-openjdk.x86_64
14-4. Java가 설치가 되었다면 다음으로 WAS 서버에 Tomcat을 설치해주자
- Tomcat 홈페이지에서 사용하려는 Tomcat의 버전의 링크를 가져와 wget을 통해 설치해주자
tomcat.apache.org/download-10.cgi
Apache Tomcat® - Apache Tomcat 10 Software Downloads
Welcome to the Apache Tomcat® 10.x software download page. This page provides download links for obtaining the latest version of Tomcat 10.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specification versi
tomcat.apache.org
14-5. Tomcat이 설치되어 있는것을 확인해주고
- sudo tar xzf apache-tomcat-10.0.20.tar.gz 명령어를 통해 압축을 풀어주도록 하자.
14-6. 압축 해제된 Tomcat의 폴더로 이동한 후, sudo ./bin/startup.sh 명령어를 통해 톰캣을 실행 시켜주자.
14-7. 설치했던 tomcat의 디렉터리 안에 logs 디렉터리로 이동해주고,
- tail -f localhost_access_log.2021-02-21.txt 가장 최근의 로그파일이 생성되어있다.
- 로그를 확인해보자
14-8. WAS 서버 확인을 위해 JSP 파일로 테스트 페이지를 작성해주자.
- /Tomcat/webapps/ROOT 디렉터리로 이동해준뒤 <파일명>.jsp 으로 테스트 페이지를 작성해준다.
- (WAS2 서버에서는 테스트 페이지 작성할 때, 로드밸런스 확인할 수 있게 WAS1과는 다른 내용으로 작성해주자. )
14-9. ./shutdown.sh 명령어로 Tomcat을 종료했다가, 다시 시작해주자
14-10. WAS 서버가 타겟으로 등록된 IN-ELB의 상태가 healthy인지 확인해주자.
14-11.Web 서버와 WAS 서버를 연결해주는 작업이 별도로 필요하다. Apache 설치 시 같이 설치되는 mod_proxy 모듈을 이용해서 두 서버를 연결해주도록 하자.
- WAS 서버가 설치되었고 로드밸런서도 작동중이지만,
- 현재는 Web과 WAS가 연결되어 있지 않은 상태이기 때문에, EX-ELB를 타고 들어왔던 트래픽이 Web에서 WAS로 전달 불가능하다.
- cd /etc/httpd/conf/httpd.conf 파일을 열어서
- Include conf.modules.d/*.conf 구문 밑에 다음과 같이 추가해주자.
LoadModule proxy_connect_module modules/mod_proxy_connext.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
14-12. 그 후, 파일 맨 끝에 다음과 같은 구문을 작성해주자.
- Web에서 받은 트래픽을 IN-ELB:8080으로 넘겨주는 작업
14-13. 파일 내용이 적용 될 수 있도록 Apache를 재실행 해주자
14-14. Web과 WAS가 제대로 연결되었다면, EX-ELB의 DNS Name/<파일명>.jsp 를 통해 접속하면 다음과 같이 로드밸런서가 작동되는 WAS 서버 테스트 페이지를 확인할 수 있다.
- 새로고침 할 때마다 WAS1, WAS2 가 계속 바뀌는 것과 현재 시간 데이터를 받아올 수 있다.
15. WAS와 DB 연동
- WAS와 DB를 연결하려면 WEB과 연결할 때 처럼 별도의 연결모듈이 필요하다.
mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.23
- 위의 링크에서 mysql-connector-java/8.0.23.jar 파일을 다운받아 주었다.
15-1. /tomcat/lib 디렉터리에 mysql-connector-java.8.0.23.jar 파일을 넣어주도록 하자
15-2. DB 연동 확인을 위해 JSP 파일로 새로 테스트 페이지를 작성해주자.
- /Tomcat/webapps/ROOT 디렉터리로 이동해준뒤 <파일명>.jsp 으로 테스트 페이지를 작성해준다
- String Url="jdbc:mysql://DB의 Endpoint/DB명";
- String Id="DB사용자명";
- String Pass="패스워드";
15-3. 위의 모든 준비를 마쳤으면, EX-ELB의 DNS Name/<파일명>.jsp 를 통해 DB와 연동된 jsp 테스트 페이지를 확인해보자
15-4. RDS DB 인스턴스는 Multi AZ를 사용해서 Active - Stand by 형태로 이중화 구성을 해준다.
- 평소에는 ap-northeast-2a 영역을 Master DB로 사용하다가 장애 발생 시, 대기 상태였던 ap-northeast-2c 가 자동으로 Master로 승격되어 작업을 계속 수행하도록 한다.
- Multi AZ는 동기식으로 복제되기 때문에, 데이터를 유지한 채 지속적인 작업을 수행할 수 있다.
'Clould > Amazon Web Service' 카테고리의 다른 글
[AWS] 3-Teir Architecture 실습 #3 (0) | 2022.07.28 |
---|---|
[AWS] 3-Teir Architecture 실습 #2 (0) | 2022.07.27 |
[AWS] 3-Teir Architecture 실습 #1 (0) | 2022.07.27 |
[AWS] 3-Teir Architecture 그리기 (0) | 2022.07.27 |
[AWS] 3-Tier 란? (0) | 2022.07.27 |