728x90
실습 환경
LB | WEB 1 | WEB 2 | NFS | DB | |
IPv4 (enp0s8) | 192.168.56.50 | 192.168.56.10 | 192.168.56.20 | 192.168.56.11 | 192.168.56.6 |
IPv4 (enp0s3) | 10.0.2.50 | 10.0.2.30 | 10.0.2.31 | 10.0.2.40 | 10.0.2.10 |
HOSTNAME | haproxy.goorm.com | web01.goorm.com | web02.goorm.com | nfs.goorm.com | master.goorm.com |
DNS | 8.8.8.8 | ||||
GW | 192.168.56.1 10.0.2.1 |
||||
OS | CentOS 7 |
아키텍처
구성 순서
1. 기본 웹서버 구성 (2대)
index.html 파일에 각 시스템의 호스트네임을 입력해두고 해당 시스템 접속 확인
2. haproxy 를 이용한 로드밸런서 구성
백앤드 서버를 1번에서 만든 웹서버 2대로 각각 지정
로드밸런서 서버로 접속해서 확인
3. NFS 연동 추가
1) 웹서버들의 /var/www/html 디렉토리를 NFS 서버에서 제공하도록 설정
2) 이 때, 구분을 위해 공유 디렉토리를 2개 설정해서
각 시스템에 공유하기
ex) /content1 은 web01 에 공유
/content2 는 web02 에 공유
4. DB 연동
NFS 서버에서 제공하는 컨텐츠 파일을 php 파일로 작성해서
DB서버와 연동하기 ( php 파일은 기존 실습 참고 )
WEB 서버 구성
Apache
yum install -y httpd
systemctl enable --now httpd
firewall-cmd --add-service=http
firewall-cmd --add-service=http --permanent
echo "<h1>This Webserver hostname is $HOSTNAME</h1>" > /var/www/html/index.html
WEB1 주소로 접속: 192.168.56.10
WEB2 주소로 접속: 192.168.56.20
로드밸런서 구성
yum install -y haproxy
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
vi /etc/haproxy/haproxy.cfg
60 #---------------------------------------------------------------------
61 # main frontend which proxys to the backends
62 #---------------------------------------------------------------------
63
64 frontend lb
65 bind *:80
66 default_backend web
67 option forwardfor
68
69 backend web
70 balance roundrobin
71 server web01 10.0.2.30:80
72 server web02 10.0.2.31:80
systemctl enable --now haproxy
firewall-cmd --add-service=http
로드밸런서 주소로 접속: 192.168.56.50
NFS 서버 구성
NFS 서버
yum list nfs-utils
Installed Packages
nfs-utils.x86_64 1:1.3.0-0.68.el7.1 @updates
Available Packages
nfs-utils.x86_64 1:1.3.0-0.68.el7.2 updates
mkdir /content1 /content2
vi /etc/exports
/content1 10.0.2.30/32(rw,sync)
/content2 10.0.2.31/32(rw,sync)
exportfs -r
exportfs
/content1 10.0.2.30/32
/content2 10.0.2.31/32
echo "<h1>This is NFS Server with WEB1</h1>" > /content1/index.html
echo "<h1>This is NFS Server with WEB2</h1>" > /content2/index.html
systemctl enable --now nfs-server
firewall-cmd --add-service=nfs
firewall-cmd --add-service=nfs --permanent
vi /etc/sysconfig/nfs
14 RPCNFSDARGS="-V4.2"
WEB 클라이언트
ls -lZd /var/www/html/index.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/index.html
# WEB1
vi /etc/fstab
10.0.2.40:/content1 /var/www/html nfs rw,sync,sec=sys,v4.2,context="unconfined_u:object_r:httpd_sys_content_t:s0" 0 0
# WEB2
10.0.2.40:/content2 /var/www/html nfs rw,sync,sec=sys,v4.2,context="unconfined_u:object_r:httpd_sys_content_t:s0"
0 0
mount -a
WEB1 주소로 접속: 192.168.56.10
WEB2 주소로 접속: 192.168.56.20
로드밸런서 주소로 접속: 192.168.56.50
DB 서버 구성
패키지 설치 및 기본 보안 설정
yum install -y mariadb-server
systemctl enable --now mariadb
mysql_secure_installation
사용자 및 테이블 구성
# 사용자 권한 설정
MariaDB [(none)]> GRANT select,insert ON *.* TO remote@'%' identified by '123';
MariaDB [(none)]> flush privileges;
# 데이터베이스 설정
MariaDB [(none)]> CREATE database examdb;
MariaDB [(none)]> use examdb;
MariaDB [examdb]> CREATE table test_tab ( id int(2), name varchar(5) );
MariaDB [examdb]> INSERT INTO test_tab(id,name) VALUE(1,'KIM');
MariaDB [examdb]> SELECT * FROM test_tab;
+------+------+
| id | name |
+------+------+
| 1 | KIM |
+------+------+
PHP 구성
WEB 1
php 동작 확인, 부울 값 활성화
# php 패키지 설치 및 설정 파일 수정
yum install -y php php-pear php-mbstring php-fpm php-mysql
vi /etc/httpd/conf.d/php.conf
4 <FilesMatch \.php$>
5 SetHandler "proxy:fcgi://127.0.0.1:9000"
systemctl restart httpd php-fpm
# 부울 값 활성화
semanage boolean -l | grep httpd_can_network_connect_db
httpd_can_network_connect_db (off , off) Allow httpd to can network connect db
semanage boolean -m httpd_can_network_connect_db --on
semanage boolean -l | grep httpd_can_network_connect_db
httpd_can_network_connect_db (on , on) Allow httpd to can network connect db
NFS
/content1에서 작업
info.php 파일 생성
echo "<?php phpinfo(); ?>" > /content1/info.php
웹 브라우저에서 접속 확인
http://192.168.56.10/info.php
db.php 파일 생성
vi /content1/db.php
<?php
$conn = mysqli_connect('10.0.2.10','remote','123','examdb');
$sql = "SELECT * FROM test_tab";
$result = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($result)){
echo $row['id'].''.$row['name'].'<br>';
}
?>
웹 브라우저에서 접속 확인
http://192.168.56.10/info.php
728x90
'쿠버네티스 교육 > 프로젝트' 카테고리의 다른 글
220526_2_세미 프로젝트_웹 서비스 구축_로드밸런서 SSL 인증서 적용 (0) | 2022.05.26 |
---|---|
220526_1_세미 프로젝트_웹 서비스 구축_로드밸런서 상태 체크 (0) | 2022.05.26 |
220525_3_세미 프로젝트_웹 서비스 구축_로드밸런서 구성 (0) | 2022.05.25 |
220525_2_세미 프로젝트_웹 서비스 구축_NFS-WEB 연동 (0) | 2022.05.25 |
220525_1_세미 프로젝트_웹 서비스 구축_WEB-DB 연동 (0) | 2022.05.24 |