본문 바로가기

Cloud/Oracle Cloud Infrastructure

19. OCI를 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 - 로드밸런서 (아파치웹서버)

2019/01/16 - [Cloud/Oracle Cloud Infrastructure] - 18. OCI를 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 - 로드밸런서

4단계. 로드밸런서 구성

아파치 웹서버 구성

웹서버#1,2 현재 컴퓨트 인스턴스와 Bastion 서버 연결, 웹서버 동기화를 위한 네트웍 구성만되어 있는 상태이다. 이번 단계에서는 웹서버#1,2 서비스 제공을 위해서 아파치(Apache) 웹서버를 설치할 것이다.

이제 웹서버#1,2 인스턴스에 아파치 웹서버를 설치하고, 네트웍 통신에 사용될 포트를 개방하는 작업을 수행한다. VCN 시큐리티 리스트에서도 80 포트를 열어야 하는데, 아파치 웹서버 설치 , 다음 단계에서 로드밸런서 사용 포트와 함께 설정한다.

웹서버에 Bastion 서버를 통해 SSH 접속을 해서 아파치 웹서버를 설치하고 OS에서 80포트에 대해 방화벽을 오픈/리로드를 하고, 웹서버를 기동한다.

아래는 웹서버#1에서 작업한 내용이다. 웹서버#2 대해서도 동일한 작업을 수행한다. 아파치 서버 기동 “systemctl” 명령으로 수행했다. “apachectl” 명령으로 수행해도 동일하다.

youjung@YOUJUNG-KR MINGW64 ~

$ ssh -t -o ProxyCommand='ssh -i C:\\Users\\youjung\\.ssh\\id_rsa opc@129.213.62.228 -W %h:%p %r' -i C:\\Users\\youjung\\.ssh\\id_rsa opc@10.0.3.2

Last login: Mon Jan  7 05:21:11 2019 from bastion.subnetbs.dbappvcn.oraclevcn.com

[opc@web1 ~]$ hostname

web1

[opc@web1 ~]$ sudo yum install httpd -y

Loaded plugins: langpacks, ulninfo

ksplice-uptrack                                                                                                                                       |  951 B  00:00:00

ol7_UEKR5                                                                                                                                             | 1.2 kB  00:00:00

:

:

:

Complete!

[opc@web1 ~]$ sudo firewall-cmd --permanent --add-port=80/tcp

success

[opc@web1 ~]$ sudo firewall-cmd --reload

success

[opc@web1 ~]$ sudo systemctl start httpd

[opc@web1 ~]$ sudo systemctl status httpd.service

httpd.service - The Apache HTTP Server

   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)

   Active: active (running) since Mon 2019-01-07 04:12:22 GMT; 2h 10min ago

     Docs: man:httpd(8)

           man:apachectl(8)

 Main PID: 4484 (httpd)

   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"

   CGroup: /system.slice/httpd.service

           ├─4484 /usr/sbin/httpd -DFOREGROUND

           ├─4489 /usr/sbin/httpd -DFOREGROUND

           ├─4490 /usr/sbin/httpd -DFOREGROUND

           ├─4491 /usr/sbin/httpd -DFOREGROUND

           ├─4492 /usr/sbin/httpd -DFOREGROUND

           └─4493 /usr/sbin/httpd -DFOREGROUND

 

Jan 07 04:12:22 web1 systemd[1]: Starting The Apache HTTP Server...

Jan 07 04:12:22 web1 systemd[1]: Started The Apache HTTP Server.

 

웹서버를 재기동할 때도 아파치 웹서버 데몬이 자동으로 시작되도록 설정한다.

[opc@web1 ~]$ sudo systemctl enable httpd

Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

 

웹서버를 설치한 다음, 로드밸런서로 부하 분산을 테스트할 테스트 페이지를 웹서버#1 웹서버#2 각각 다음과 같이 만든다.

<WEB#1>

[opc@web1 ~]$ sudo su

[root@web1 opc]# echo 'This is the 1st Web Server' >> /var/www/html/index.html

[root@web1 opc]# exit

 

<WEB#2>

[opc@web2 ~]$ sudo su

[root@web2 opc]# echo 'This is the 2nd Web Server' >> /var/www/html/index.html

[root@web2 opc]# exit

 

시큐리티 리스트 설정

로드밸런서를 생성하고 구성하기 전에 시큐리티 리스트를 설정한다.

로드밸런서를 구성할 수정이 필요한 시큐리티 리스트 다음과 같다. 참고로 로드밸런서가 사용하는 라우트 테이블 “routeTabLB”에는 인터넷 게이트웨이로 트래픽이 라우팅되도록 VCN 구성할 앞서 설정한 있다.

       로드밸런서 시큐리티 리스트에 로드밸런서가 인터넷과 연결을 하기 위한 80 포트에 대해 Stateful Ingress 개방

       로드밸런서 시큐리티 리스트에 로드밸런서 트래픽이 웹서버 두대로 나가기 위해 80 포트에 대해 Stateful Egress 개방

       웹서버 시큐리티 리스트에 웹서버가 로드밸런서에서 오는 트래픽을 받기 위해 80 포트에 대해 Stateful Ingress 개방

그런데 세가지 시큐리티 리스트 수정 필요 항목에 대해 첫번째에 대해서만 이번 단계에서는 설정하면 된다. 나머지 두가지 요건에 대해서는 다시 설명이 나오겠지만 로드밸런서 설정 과정에서 자동으로 시큐리티 리스트가 업데이트된다.

로드밸런서의 인터넷 통신을 위해 로드밸런서가 소속된 서브넷(“subnetLBA”, “subnetLBS”) 시큐리티 리스트(“secListLB“)에서 아래와 같이 80 포트를 Statefule Ingress 규칙으로 열어준다. 

Ingress/

Egress

Source CIDR

IP

프로토콜

Source

포트 범위

Destination

포트 범위

Ingress

0.0.0.0/16

TCP

ALL

80

 


로드밸런서가 사용하는 시큐리티 리스트에 80 포트 접근을 허용을 추가하면 아래와 같은 시큐리티 리스트 규칙 목록을 있다.


작성자: 정영균


OCI를 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 시리즈

1. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Intro

2. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN

3. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN

4. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (인터넷게이트웨이)

5. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (라우트테이블)

6. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (시큐리티리스트)

7. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (서브넷)

8. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버

9. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (시큐리티 리스트)

10. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (인스턴스)

11. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (웹서버 연결)

12. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (NAT 설정)

13. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버

14. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (rsync)

15. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (NFS 설정)

16. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (NFS 설정파일시스템)

17. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (NFS 설정파일시스템마운트)

18. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서

19. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (아파치웹서버)

20. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (로드밸런서생성)

21. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (백엔드서버)

22. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (리스너)

23. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스

24. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (DB 시스템)

25. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (데이터베이스구성)

26. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (DB 시스템연결)

27. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (DB 시스템연결)

28. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (백업)

29. OCI 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 – 데이터베이스 (DR 구성)