<수업 전 간단 정리>
* NAT Gateway : AWS의 서비스 이름으로 원래 이름은 NAT
* 라우터(Router) : 경로를 설정해주는 장치 Router에 NAT가 포함됨
* L7스위치 : 글을 읽을 줄 안다 (크롬 사용자인지 IE사용자인지 firefox사용자인지 판단해서 스위치 관리)
=> 콘텐츠를 라우팅하는 장치일뿐, 부하를 분산하는 로드밸런서 역할은 아니다. (L4기능의 로드밸런서 기능도 있다.)
* ESXi는 프라이빗 클라우드가 이니라고 할 수도 있지만, OpenStack은 충분히 프라이빗 클라우드라고 할 수 있다.
* 테넌트 : ESXi실습할 때, 옆에서 나의 ESXi IP를 사용하는 사람이 테넌트(임차인)이 된다.
1. SWITCH
* EXTERNAL은 vSwitch0 포트그룹의 이름
* INTERNAL은 vSwitch1 포트그룹의 이름
* 나머지 vm도 네트워크 어댑터 INTERNAL로 연결되어 있는지 확인
* 물리적 랜카드를 업링크라고 한다.
* 물리적 어댑터를 업링크(Uplink)라고 하고, 여기에 있는 포트그룹을 업링크 포트그룹이라고 한다.
* 안쪽의 포트 그룹 두 개
* Management Network 포트그룹은 관리를 위한 IP를 설정하고 있는 포트그룹(원래부터 존재)(web관리 IP가 설정되어 있다.)
* NAT가 설정되지 않으면 내부 네트워크의 vm들은 보안상의 이유로 격리되어 있는 네트워크이라서 통신이 되지 않는다.
* 내가 정할 수 있는 EXTERNAL 포트그룹에서 NAT_GW가 두 개의 랜카드를 가지고 있는데 하나는 EXTERNAL 하나는 INTERNAL에 연결되어 있다.
* EXTERNAL 포트그룹에는 master1(NAT), INTERNAL포트그룹에도 master1(NAT) 양쪽의 포트그룹에 연결되어 있다.
2. 포트포워딩 후 web01, web02, db서버로 키를 이용해 접속하기
2.1 포트포워딩
# firewall-cmd --permanent --zone=external --add-forward-port=port=221:proto=tcp:toport=22:toaddr=10.0.13.2
# firewall-cmd --permanent --zone=external --add-forward-port=port=222:proto=tcp:toport=22:toaddr=10.0.13.4
# firewall-cmd --permanent --zone=external --add-forward-port=port=223:proto=tcp:toport=22:toaddr=10.0.13.3
2.2 키를 통한 접속
# ssh-copy-id -p 221 -i id_rsa.pub root@192.168.0.40
# ssh-copy-id -p 222 -i id_rsa.pub skk@192.168.0.40
# ssh-copy-id -p 223 -i id_rsa.pub root@192.168.0.40
2.3 timeout Error가 나오면??
# 내외부 인터페이스가 분리되어 있는지 다시 한 번 확인
# nmcli c mod ens192 connection.zone external
# nmcli c mod ens224 connection.zone internal
# firewall-cmd --get-active-zone (내외부 인터페이스 분리 확인)
3. web03(윈도우2012)와 db(마리아DB) 포트포워딩
* 윈도우 포트 3389번과 마리아DB포트 3306번 포트포워딩 해주기
* 앞에 포트가 들어가는 포트고, 뒤에 포트가 들어가고자 하는 곳의 포트
3.1 3389번 포트로 포트포워딩 안 될 때
* Inbound Rules 클릭 후 우측의 New Rules에서 New Rule... 들어가서 설정하기
* 프로토콜 이름 지어주기 3389번 포트는 RDP로 80번 포트는 http로 지어주기(이름은 임의로 정의 가능)
* 동일한 방식으로 http 포트 80번도 열어주기
3. DNS서버 설정 (resolv.conf파일의 초기화 현상 포함)
* IN NS ns.skk.shop과 ns IN A 10.0.13.1은 한 세트라고 보면 된다.
* IN NS ns.skk.shop에서 ns를 dns라고 하면 ns IN A 10.0.13.1에서도 ns를 dns라고 한다.(임의로 정의 가능하지만 일반적으로 ns로 지정함)
* MX는 메일서버를 의미한다(Mail Exchanger)
* DNS1과 DNS3을 추가해준다.
* 내가 만든 DNS가 우선순위가 될 수 있도록 PEERDNS를 no라고 넣어 준다.
* /etc/sysconfig/network-scripts/ifcfg-ens192에서 넣어준 DNS주소가 reslov.conf파일에 들어간다.
* 이렇게 주소를 넣어주어야 DNS설정이 완료되는 것
* 만약 그래도 ping이 안 되면 계속해서 dns를 리스타트 해주면 된다.
* 그래도 또 안 되면, web02(우분투)에서 sudo apt install resolvconf로 resolvconf를 설치한다.
* 설치 후 vi /etc/resolvconf/resolv.conf.d/head로 들어가서 nameserver 10.13.0.1로 dns의 IP를 넣어준다.
* systemctl restart resolvconf.service 넣고 엔터
* 패스워드 입력하면 됨
* mysql_secure_installaion할 때, 전부 Y해도 되는데, 실습에서는 root사용자로 원격에서 접속가능하게 하는 항목에 n라고 함
* 방화벽에 mysql서비스 항목 추가 후 포트 번호 확인
* 3306 포트가 추가되어 있는 것 확인 가능
4. db서버 설정
* 리눅스 베이스에서는 workgroup 이름을 변경할 필요 없다.
* 마지막에 [share]항목 추가
* firewall-cmd --reload까지 해주기
* \\192.168.0.40(NAT의 외부랜 IP)를 시작줄 검색창에 입력 후 접속
* 여기서 wordpress 압축파일을 넣으면 web03(WIN2012)에서도 확인 가능
* web03(WIN2012)에서 호스트 윈도우에서 공유한 wordpress 압축파일 확인 가능
5. NFS서버 설치 (db서버에 설치)
* yum install -y nfs-utils : nfs서버도 설치하고 클라이언트도 설치할 수 있는 명령어니까 잘 알아두기
* share폴더를 만든 동시에 share폴더로 입장
* 비어있는 exports 파일에 특정 사용자가 접근할 수 있게 정의
* /share *(rw,sync)로 누구나 접근할 수 있게 할 수도 있다.
이후에 아래와 같이 nfs서버를 시작해주고 exportfs를 통해 제대로 들어갔는지 확인하고 방화벽에 서비스 항목 세 가지 추가
# systemctl enable --now nfs-server
# exportfs -v (현재의 export리스트 확인=접근할 수 있는 IP주소의 리스트)
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpc-bind
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload
5.1 nfs 클라이언트 설치(nat, web01, web02, web03)
* 클라이언트까지 yum install -y nfs-utils 명령어로 nfs 클라이언트 설치
* 마운트가 가능한 상태인 것 확인
* share폴더 만든 후 share폴더로 마운트 한다.
* mount -t nfs db.skk.shop:/share share 여기에서 앞의 /share는 nfs서버의 share폴더 뒤의 share는 현재 nat에서 새로 만든 share폴더를 의미
* df -h의 맨 마지막 줄에서 마운트된 것 확인 가능
* fstab 백업파일 만든 후 echo 명령어를 사용
* "db.skk.shop:/share /root/share nfs defaults 0 0"을 /etc/fstab에 넣으면, 리부트 해도 마운트 정보가 유지된다.
* 같은 과정을 web01, web02, web03에도 반복하여, nfs서버의 클라이언트로 만들어 주기(web02우분투는 조금 다르니까 밑에 설명)
5.2 Ubuntu에서 nfs클라이언트 설치(CentOS7과 크게 다르지는 않다.)
$ sudo apt update
$ sudo apt install -y nfs-common
$ sudo showmount -e db.skk.shop
$ mkdir share
$ sudo mount -t nfs db.skk.shop:/share /home/skk/share
$ df -h
$ sudo cp /etc/fstab /etc/fstab.bak
$ vi /etc/fstab
db.skk.shop:/share /home/skk/share nfs defaults 0 0
6. 최신 버전의 WordPress 설치 - web02(Ubuntu)
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install -y nginx php7.2 php7.2-mysql php7.2-mbstring php7.2-gd php7.2-fpm wget unzip
$ sudo mkdir -p /var/www/html/wordpress/public_html : 원래 /var/www/html이 html 루트폴더지만, 사용자가 public_html를 wordpress 루트폴더로 정의해주는 것
$ cd /etc/nginx/sites-available : sites-available에도 wordpress.conf를 만들고, 하단의 코드를 입력
_______________________________________________________________________________
_______________________________________________________________________________
server {
listen 80; #웹서버를 위해 디폴트 포트 80번 포트를 이용할 것이다.
root /var/www/html/wordpress/public_html; #/var/www/html/wordpress/public_html를 루트폴더로 이용할 것
index index.php index.html; # index.php와 index.html 중 index.php를 먼저 읽겠다는 의미(우선순위)
server_name nat.johnlee.shop; # nat.skk.shop 도메인으로 들어오는 접근만 허용하겠다는 접근제어
access_log /var/log/nginx/SUBDOMAIN.access.log; # 접근로그를 남김. SUBDOMAIN은 이름 임의로 정의 가능
error_log /var/log/nginx/SUBDOMAIN.error.log; # 에러로그를 남김. SUBDOMAIN은 이름 임의로 정의 가능
location / {
try_files $uri $uri/ =404; # 애러 페이지를 꾸밀 수 있는 코드
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
_______________________________________________________________________________
_______________________________________________________________________________
* wordpress.conf내용을 nginx에 적용시키기 위해서 sites-available의 wordpress.conf를 sites-enabled에 링크
* reload는 서버를 종료하지 않고, conf설정 파일만 갱신해주는 것
* restart는 서버를 종료하고 다시 시작하는 것
* db에 samba설치되어 있으니까 wordpress 압축파일을 share폴더로 옮겨 준다.
* share폴더 안의 wordpress 압축파일을 public_html파일로 가져옴
* sudo unzip wordpress-5.9.3-ko_KR.zip . 해서 wordpress 압축파일을 현재경로에 풀어버린다.
* 앞의 www-data가 nginx의 소유자, 뒤의 www-data가 그룹을 의미한다.
6.2 web02(WIN2012)에서 PHP를 쉽게 이용할 수 있도록 설치 (IIS와 PHP의 연동)
* 시작표시줄의 윈도우 마크 옆에 Server Manager 클릭
* Server Roles와 Features를 제외하고는 전부 Next하고 마지막에 install
* Server Roles에서 Web Server(IIS) 체크
* Features에서 Client for NFS 체크
* WebPlatformInstaller : PHP같은 써드파티 도구들을 쉽게 설치할 수 있게 도움을 주는 모듈
* 설치 후 php 7.4.13(x86) add 해주고 install 해주기
--애러 발생
* 우분투에서 명령어를 입력할 때마다 sudo : unable to resolve host라는 메시지가 출력됨
/etc/hostname 과 /etc/hosts의 hostname을 같게 해주면 해결.
'KOSA 클라우드 솔루션즈 아키텍트 양성과정' 카테고리의 다른 글
[5.4] 오픈스택(Openstack) 개념 (0) | 2022.05.04 |
---|---|
[5.3] DNS설정, 서브넷 마스크 (0) | 2022.05.03 |
[4.29] ESXi (1) | 2022.04.29 |
[4.28] HAproxy구성 - WordPress를 활용하여 (0) | 2022.04.28 |
[4.27] NAT, WEB01, WEB02, WEB03 (0) | 2022.04.27 |