0502

망지·2022년 5월 2일
1
post-custom-banner

두번째 프로젝트 - 클라우드
퍼블릭, 클라우드 조합해서 멀티클라우드 구성하기.
내일부터는 프라이빗 클라우드 (openstack)진행. 오늘까지 ESXi진행

NAT Gateway- AWS에서의 이름.
우리가 구현한 NAT는 라우터라고 생각하면 됨.

신호가 들어왔을 때 각 서버로 보내주는게 로드밸런서. ; L4
컨텐츠(내용)가 들어왔을 때 글을 읽어서[목적을 가지고] 각 서버로 보내(라우팅)해주는 ; L7 S/W

ESXi 를 프라이빗 클라우드로 보기엔 이견이 있을 수 있지만 openstack을 프라이빗 클라우드로 보는건 이견yp이 거의 없을 것.

aws - 범용.
azure - 윈도우 특화.
gcp - 도커, 쿠버네티스.

tenant - 임차인(사용자)

ESXi 네트워크 어댑터

포트그룹. . . ?

ESXi 네트워킹 - 가상 스위치

업링크 - 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

trouble shooting

[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설치

  1. 서버
# 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
  1. 클라이언트 - CentOS7
# 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
  1. 클라이언트 - ubuntu
$ 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설정 파일만 새로 갱신

profile
꾸준히, 차근차근
post-custom-banner

1개의 댓글