두번째 프로젝트 - 클라우드
퍼블릭, 클라우드 조합해서 멀티클라우드 구성하기.
내일부터는 프라이빗 클라우드 (openstack)진행. 오늘까지 ESXi진행
NAT Gateway- AWS에서의 이름.
우리가 구현한 NAT는 라우터라고 생각하면 됨.
신호가 들어왔을 때 각 서버로 보내주는게 로드밸런서. ; L4
컨텐츠(내용)가 들어왔을 때 글을 읽어서[목적을 가지고] 각 서버로 보내(라우팅)해주는 ; L7 S/W
ESXi 를 프라이빗 클라우드로 보기엔 이견이 있을 수 있지만 openstack을 프라이빗 클라우드로 보는건 이견yp이 거의 없을 것.
aws - 범용.
azure - 윈도우 특화.
gcp - 도커, 쿠버네티스.
tenant - 임차인(사용자)
포트그룹. . . ?
업링크 - 1 ; 물리 어댑터(랜카드)와 연결되어있다. (vSwitch0)
접속하려는 ip 유저네임 ,key가 있으면 접속할 수 있다.
=>3가지 재료 기억하기.
NAT G/W 세팅 ; mabaxterm에서 진행
# vi /etc/sysconfig/network-scripts/ifcfg-ens192
ggdG
TYPE=Ethernet
BOOTPROTO=none
NAME=ens192
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.0.22
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=8.8.4.4
외부 랜카드 설정
;고정 IP설정 "BOOTPROTO=none(or static)"
# vi /etc/sysconfig/network-scripts/ifcfg-ens224
TYPE=Ethernet
BOOTPROTO=none
NAME=ens224
DEVICE=ens224
ONBOOT=yes
IPADDR=10.0.14.1
NETMASK=255.255.255.0
내부 랜카드 설정
GATEWAY IP : IPADDR=10.0.14.1 ; 이거 임의로 10.0.14.1~254로 할 수 있음. 만약 임의로 준다면 반드시 기억해두어야 함.
# systemctl restart network
세팅 바꿨기 때문에 restart해주기.
# yum install -y bash-completion
자동완성기능 enable해주기.
=>exit로 세션 끊었다가 다시진입하기.
# firewall-cmd --get-active-zone
public
interfaces: ens192 ens224
# nmcli c mod ens192 connection.zone external
# nmcli c mod ens224 connection.zone internal
# firewall-cmd --get-active-zone
internal
interfaces: ens224
external
interfaces: ens192
# sysctl -w net.ipv4.ip_forward=1 # 리눅스 시스템을 라우터로 만드는 셋팅
# sysctl -p # 설정 저장
# cat /proc/sys/net/ipv4/ip_forward
1
nmcli를 이용하려면, systemctl status NetworkManager 활성화 되어있어야함.
DHCPD 세팅 ; mabaxterm에서 진행
# yum install dhcp -y
# vi /etc/dhcp/dhcpd.conf
ddns-update-style interim;
subnet 10.0.14.0 netmask 255.255.255.0 {
option routers 10.0.14.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 10.0.14.2 10.0.14.254;
option domain-name-servers 10.0.14.1, 8.8.8.8, 203.248.252.2;
default-lease-time 7200;
max-lease-time 86400;
}
#systemctl enable --now dhcpd
[root@nat ~]# systemctl enable --now dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/ dhcpd.service.
Job for dhcpd.service failed because the control process exited with error code. See "systemctl status dhc pd.service" and "journalctl -xe" for details.
dhcpd.conf에서 option domain-name-servers ip사이에 ','콤마 하나 빠져서 오류 발생. 콤마 넣어주고 오류 해결.
서버별 ip확인
web01 14.4 221
web02 14.5 222
web03 14.2 3389
db 14.3 224
IP확인 후,
포트포워딩.
# firewall-cmd --permanent --zone=external --add-forward-port=port=221:proto=tcp:toport=22:toaddr=10.0.14.4
# firewall-cmd --permanent --zone=external --add-forward-port=port=222:proto=tcp:toport=22:toaddr=10.0.14.5
# firewall-cmd --permanent --zone=external --add-forward-port=port=224:proto=tcp:toport=22:toaddr=10.0.14.3
# firewall-cmd --permanent --zone=external --add-forward-port=port=3389:proto=tcp:toport=3389:toaddr=10.0.14.2
# firewall-cmd --reload
# firewall-cmd --list-all --zone=external
윈도우 ; allow remote..~ 들어가서 체크박스 체크해줘야함.
mariadb 포트포워드(미리열어두기)
# firewall-cmd --permanent --zone=external --add-forward-port=port=3306:proto=tcp:toport=3306:toaddr=10.0.14.3
키 전송(local terminal에서 진행) - 윈도우는 키접속이 아니라 rdp접속.
ssh-copy-id -p 221 -i id_rsa.pub root@192.168.0.22
ssh-copy-id -p 222 -i id_rsa.pub mj@192.168.0.22
ssh-copy-id -p 224 -i id_rsa.pub root@192.168.0.22
서버윈도우2012 방화벽(port) 열기
검색창 - window firewall advanced~ security - INbound rules - New Rules - port - tcp , specific local ports:3389(방화벽 해제할포트번호 입력) - allow the connection - 체크박스 그대로 두고 - 이름 rdp(remote desktop protocol)
DNS 구축 (NAT서버)
# yum -y install bind bind-chroot bind-utils
ggdG
# vi /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; 192.168.0/24; 10.0.14/24; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; 192.168.0/24; 10.0.14/24; };
forwarders { 8.8.8.8; 203.248.252.2; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view "internal" {
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/var/named/lovemj.shop.zones"; # 호스팅 영역 생성
};
# vi /var/named/lovemj.shop.zones
zone "lovemj.shop" IN {
type master;
file "lovemj.shop.db";
allow-update { none; };
};
zone "14.0.10.in-addr.arpa" IN {
type master;
file "14.0.10.in-addr.arpa.db";
allow-update { none; };
};
# vi /var/named/lovemj.shop.db
$TTL 86400
@ IN SOA lovemj.shop. root.lovemj.shop.(
2022041401 ; Serial
3h ; Refresh
1h ; Retry
1w ; Expire
1h ) ; Minimum
IN NS ns.lovemj.shop.
IN MX 10 ns.lovemj.shop.
ns IN A 10.0.14.1
web01 IN A 10.0.14.4
web02 IN A 10.0.14.5
web03 IN A 10.0.14.2
db IN A 10.0.14.3
# vi /var/named/14.0.10.in-addr.arpa.db
$TTL 86400
@ IN SOA lovemj.shop. root.lovemj.shop.(
2022041401 ; Serial
3h ; Refresh
1h ; Retry
1w ; Expire
1h ) ; Minimum
IN NS ns.lovemj.shop.
1 IN PTR ns.lovemj.shop.
# systemctl enable --now named
# firewall-cmd --permanent --add-service=dns --zone=internal
# firewall-cmd --permanent --add-service=dns --zone=external
# firewall-cmd --reload
# systemctl restart NetworkManager
NAT에서
# vi /etc/sysconfig/network-scripts/ifcfg-ens192
DNS1=10.0.14.1
DNS2=8.8.8.8
DNS3=203.248.252.2
PEERDNS=no
#systemctl restart network
[root@nat ~]# cat /etc/resolv.conf
ubuntu서버에서 안된다면 여기서 nameserver도메인 추가해주기.
mj@web02:~$ sudo vi /etc/resolv.conf
db서버에 mariadb설치
# vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
# yum install -y MariaDB
# rpm -qa | grep MariaDB
# mariadb --version
# systemctl enable --now mariadb
# mysql_secure_installation
# systemctl restart mariadb
# mysql -u root -p
CREATE USER 'kosa'@'%' IDENTIFIED BY 'kosa0401';
CREATE DATABASE IF NOT EXISTS wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'kosa'@'%';
quit
# firewall-cmd --permanent --add-service=mysql
# firewall-cmd --reload
#mysql_secure_installation
특이사항 ;Disallow root login remotely? [Y/n] n
.
.
포트번호 확인
# ss -ant
특히, 우분투에서 ssh가 안된다면 여기서 포트번호(22) 있는지 확인해서 추가(설치 - 아래 명령어)해주어야함.
sudo apt install -y openssh-server
db서버에 SAMBA(;SMB)설치
왜 samba를 안하고 aws가 제공해주는 서비스(FSx)를 이용해야할까?
완전관리형 서비스이기 때문에 관리가 쉬움.
# yum install -y samba
# mkdir -p /var/samba/share
# chmod 777 /var/samba/share
# adduser kosa
# passwd kosa
# smbpasswd -a kosa
# vi /etc/samba/smb.conf
workgroup = hali
[share]
comment = Share Directory
path = /var/samba/share
browserable = yes
writable = yes
valid users = kosa
create mask = 0777
directory mask = 0777
# systemctl enable --now smb nmb
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload
samba 윈도우10 호스트pc에서 사용하기 위해 포트포워드 하기
#firewall-cmd --permanent --zone=external --add-forward-port=port=139:proto=tcp:toport=139:toaddr=10.0.14.3
#firewall-cmd --permanent --zone=external --add-forward-port=port=445:proto=tcp:toport=445:toaddr=10.0.14.3
db서버에 NFS설치
# yum install -y nfs-utils
# mkdir /share && cd $_
# echo "Hello" > test.txt
# vi /etc/exports
/share 10.0.14.0/24(rw,sync)
# chmod 707 /share
# systemctl enable --now nfs-server
# exportfs -v
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpc-bind
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload
# yum install -y nfs-utils
# showmount -e db.lovemj.shop
# mkdir share
# mount -t nfs db.lovemj.shop:/share share
# df -h
# cp /etc/fstab /etc/fstab.bak
# vi /etc/fstab
db.lovemj.shop:/share /root/share nfs defaults 0 0
or
# echo "db.lovemj.shop:/share /root/share nfs defaults 0 0" >> /etc/fstab
$ sudo apt update
$ sudo apt install -y nfs-common
$ sudo showmount -e db.lovemj.shop
$ pwd
$ mkdir share
$ ls
$ sudo mount -t nfs db.lovemj.shop:/share /home/mj/share
$ df -h
$ sudo cp /etc/fstab /etc/fstab.bak
$ sudo vi /etc/fstab
db.lovemj.shop:/share /home/mj/share nfs defaults 0 0
web01(CentOS7)서버에 HTTPD 설치
# yum install -y httpd
# systemctl enable --now httpd
# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload
web02(ubuntu)서버에 nginx 설치
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install -y nginx php7.2-fpm php7.2 php7.2-mysql php7.2-mbstring php7.2-gd wget unzip
$ sudo mkdir -p /var/www/html/wordpress/public_html
$ cd /etc/nginx/sites-available
$ sudo vi wordpress.conf
server {
listen 80;
root /var/www/html/wordpress/public_html;
index index.php index.html;
server_name nat.lovemj.shop;
access_log /var/log/nginx/SUBDOMAIN.access.log;
error_log /var/log/nginx/SUBDOMAIN.error.log;
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;
}
}
$ sudo nginx -t
$ cd /etc/nginx/sites-enabled
$ sudo ln -s ../sites-available/wordpress.conf .
$ sudo systemctl reload nginx
$ cd /var/www/html/wordpress/public_html
[root@**db share**]# cp /var/samba/share/files/wordpress-5.9.3-ko_KR.zip .
$ cd /var/www/html/wordpress/public_html
$ sudo cp ~/share/wordpress-5.9.3-ko_KR.zip .
$ sudo mv wordpress/* .
$ cd /var/www/html/wordpress/public_html
$ sudo chown -R www-data:www-data *
$ sudo chmod -R 755 *
$ sudo ln -s ../sites-available/wordpress.conf .
링크 명령어(;ln). available에 있는 wordpress.conf파일을 현재 폴더('.')로 링크
.
.
db서버 이용해서 워드프레스설치파일 가져오기(samba폴더에 둔 워드프레스 파일 nfs공유 폴더로 이동시켜서 우부투 서버로 받아오기)
[root@db share]# cp /var/samba/share/files/wordpress-5.9.3-ko_KR.zip .
$ cd /var/www/html/wordpress/public_html
$ sudo cp ~/share/wordpress-5.9.3-ko_KR.zip .
web03(win2012)서버에 IIS 설치 (+php설치)
servermanager- manage - add roles and features wizard - role based - 서버한개 체크 그대로 next - webserver(IIS)체크 - 아무것도 건들지 않고 Add Features ,next - 이왕 온 김에 client for nfs 체크, next - install나올때까지 next하고 나오면 install
mobaxterm으로 db진입, samba폴더에 선생님께 받은 webplatforminstaller msi파일 넣어서
윈도우 2012 서버에서 설치.
tool-IISmanaver-start page밑에있는거 클릭 -no - 하단 아이콘에 webplatform installer 클릭 - products - php 7.4.13(x86)검색해서 add 버튼클릭. -install - i accept
=>윈도우 2012서버 내 인터넷브라우저에 진입하여 도메인으로 IIS초기화면 확인 가능
용어
컴퓨트노드 - 웹서버
스토리지노드 - db서버 nfs, samba
reload, restart 차이 :
conf설정 파일만 새로 갱신