220502

HyeonKi Jo·2022년 5월 2일
0
post-thumbnail

세미프로젝트1 피드백

  • 조명키고 해도 잘 보임
  • 스크립트를 보는 것이 다 티났다. (스크립트 안보는 것을 권장)
  • 음향체크가 필요할 것 같다.
  • 3명 조에 가산점을 주었다
  • 시연동영상이 있다면, 자막이나 음성 멘트를 넣는것이 좋다. (최종 시연에서는 할 수 없을 것이다.)
  • 발표할 떄에, NAT GateWay는 AWS의 서비스의 명칭이다. 우리는 NAT를 개발한 것이고, NAT GateWay서비스를 따라해본 것이다.
    - 라우터를 경험한 것이다.

과제 가이드

  • 2차 세미프로젝트 과제
    - 프라이빗 클라우드 (ESXi, Openstack)와 퍼블릭 클라우드(AWS, Azure, GCP, Alibaba)를 융복합한 멀티클라우드 설계 및 구축
  • 3차
    - 애자일 개발 환경을 위한 DebOps CI/CD 파이프라인 자동화 프로젝트

실무 기초

  • 인프라 [운영체제 (리눅스, 윈도우), 서버(WEB, DNS, DB, SAMBA, NFS), 네트워크(NAT;라우터, DHCP; IP 자동부여, HAproxy; L4, L7 S/W)]
    • 발표할 떄에, NAT GateWay는 AWS의 서비스의 명칭이다. 우리는 NAT를 개발한 것이고, NAT GateWay서비스를 따라해본 것이다.
    • 라우터를 경험한 것이다.
    • L4, L7스위치에서도 라우팅을 할 수 있다.
      - L4 : 전송계층, Port번호로 라우팅 할 수 있다.
      • L7 : 어플리케이션 계층, 로그를 파악하여 Edge, FireFox, Chrome등을 구별하여 라우팅 할 수 있다.

실무 심화

  • 가상화 [하이퍼바이저 타입 I (ESXi)], 프라이빗 클라우드 [Openstack], 언어 [Python, Go-lang], 퍼블릭 클라우드 [AWS, Azure, GCP, Alibaba], 클라우드 보안

실무 특화

  • 자동화 도구 [Terraform, Ansible], 컨테이너 기술 [Docker, Kubernetes], CI/CD[Jenkins, Gitlab, AWS CodeCommit, CodeBuild, CodeDeploy, CodePipeline]

퍼블릭 클라우드

  • AWS : 두루두루 사용 가능
  • Azure : Microsoft
  • GCP : Kubernetes, Docker를 사용을 고려한다면 좋다.
  • Alibaba
  • Oracle
  • IBM : Watson 서비스를 이용할 떄 좋다.
  • KT cloud
  • 공공기관에서 사용하는 클라우드 서비스


실습

  • 테넌트 (Tenant, 임차인) : User, 사용자

VMwareESXi6 실습

  • ESXi의 전원을 올리고, 웹브라우저에서 IP주소로 접속한다.

설정 확인

  • 설정을 편집한다.
  • NAT 네트워크 연결상태 확인
    - vSwitch0 에 EXTERNAL
    • vSeitch1 에 INTERNAL 이 들어가 있어야 한다.
    • 위 vSwitch를 네트워크 그룹이라고 한다.
  • 서버 네트워크 연결 확인
  • INTERNAL 하나가 연결되어야한다.

vSwitch0

  • EXTERNAL이라는 네트워크 그룹에 NAT서버의 랜카드0이 들어가 있다.

vSwitch1

MobaXterm

  • MobaXterm에서 새로운 폴더를 만든다.
    - MZ-NETWORK이름으로 만들어 준다.
  • 저번 시간에 NAT서버에 키를 주었다. Mobaxterm에 접속하여 세션을 설정하여 새로운 세션을 만든다.

NAT

  • hostnamectl set-hostname nat
    - 호스트이름을 바꾼다.
    - hostnamectl만 치면 어떻게 나오나?

    - 현재 Hypervisor, kernel등 여러 정보가 나온다.
  • 현재 EXSi의 랜카드를 써서 enp0s8이 아니라 ens192로 잡혀있는 것을 볼 수 있다.
  • IP를 고정으로 바꾼다.
  • vi /etc/sysconfig/network-scripts/ifcfg-ens192
  • 처음 정의되어있는 정보이다. 이것은 NetworkManager가 구성해주는 것이다.
    - 현재 IP를 고정으로 만들어준다.
  • vi /etc/sysconfig/network-scripts/ifcfg-ens224
    - INTERNAL 네트워크 그룹을 사용할 랜카드를 설정한다.
    • 게이트웨이 IP를 준다. (1 혹은 254를 주로 부여한다.)
  • yum install bask-completion -y
    - 명령어 자동완성 하기위해 설치
  • nmcli c mod ens192 connection.zone external
    - nmcli 네트워크 매니저 기능 이용, 이 기능을 이용하려면 NetworkManager가 켜져있어야 한다.
  • IP_Forward 설정까지 해준다.

DHCP

  • yum install dhcp -y
  • vi /etc/dhcp/dhcpd.conf
ddns-update-style interim;
subnet 10.0.28.0 netmask 255.255.255.0 {
# = 10.0.28.0/24
option routers 10.0.28.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 10.0.28.100 10.0.28.200;
option domain-name-servers 10.0.28.1, 8.8.8.8, 8.8.4.4;
default-lease-time 7200;
max-lease-time 86400;
}
  • systemctl enable --now dhcpd

포트 포워딩

  • 포트포워딩을 설정한다.
[root@nat .ssh]# firewall-cmd --permanent --zone=external --add-forward-port=port=220:proto=tcp:toport=22:toaddr=10.0.28.100

[root@nat .ssh]# firewall-cmd --permanent --zone=external --add-forward-port=port=221:proto=tcp:toport=22:toaddr=10.0.28.101

[root@nat .ssh]# firewall-cmd --permanent --zone=external --add-forward-port=port=222:proto=tcp:toport=22:toaddr=10.0.28.102

[root@nat .ssh]# firewall-cmd --permanent --zone=external --add-forward-port=port=3389:proto=tcp:toport=3389:toaddr=10.0.28.103

[root@nat .ssh]# firewall-cmd --reload

SSH 키 보내기

트러블 슈팅

  • Uubuntu에 연결이 안됬다.
  • IP에 22포트로 연결했는데도 연결이 안된다.
  • 핑도 나가는뎅....
  • ss -ant명령어로 확인해보면 SSH가 설치가 되어있지 않았다.
    - 지금 이미지는 설치 후 화면이다.

    - sudo apt-get install -y openssh-server 명령어로 openssh를 설치해주면 된다.
    • 위 오류는, 처음 설치할 떄 SSH옵션에 체크를 해주고 설치를 했어야 하는데 체크가 안되어 설치가 안되서 생기는 오류이다.

DNS 서버 구축하기

  • yum -y install bind bind-chroot bind-utils
    - bind (berkeley internet name domain)
  • vi /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1; 192.168.0/24; 10.0.28/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.28/24; };
        forwarders { 8.8.8.8; 8.8.4.4; };

        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/cocudeny.shop.zones"; # 호스팅 영역 생성
};
  • vi /var/named/cocudeny.shop.zones : 정방향, 역방향 정보가 담겨있는 파일 정의
zone "cocudeny.shop" IN {
        type master;
        file "cocudeny.shop.db";
        allow-update { none; };
};

zone "28.0.10.in-addr.arpa" IN {
        type master;
        file "28.0.10.in-addr.arpa.db";
        allow-update { none; };
};
  • vi /var/named/cocudeny.shop.db
    - 정방향 DNS가 적혀있는 db파일 작성
  • vi /var/named/28.0.10.in-addr.arpa.db :역방향 정의
$TTL	86400
@	IN	SOA	cocudeny.shop.	root.cocudeny.shop.(
			2022041401 ; Serial
			3h         ; Refresh
			1h         ; Retry
			1w         ; Expire
                        1h )       ; Minimum

	IN	NS	ns.cocudeny.shop.
1   IN	PTR	ns.cocudeny.shop.
  • systemctl enable --now named : bind를 설치했는데 실행은 namedfh wlsgodgksek.
  • firewall-cmd --permanent --add-service-dns
  • firewall-cmd --reload
  • systemctl resatart NetworkManager.
  • 다른 서버들은 DNS주소를 잘 가져오겠지만, NAT서버는 스스로 가져오지 못할 것이다. 그래서, ens192를 수정하여 직접 넣어준다
  • 또, 추가적으로 PEERDNS=np옵션까지 추가해준다. 그래야 외부 HostPC에서 들어오는 외부 DNS정보를 안가져올 수 있다.
  • cat /etc/resolb.conf 으로 DNS주소 정보를 확인한다.

Maria DB

  • 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 : repo에 설정한 대로 MariaDB 설치
  • rpm -qa | grep MariaDB : 설치된 패키지 확인
  • mariadb --version : 마리아db 버전 확인 (제대로 설치되었는지 확인)
  • systemctl enable --now mariadb : 마리아 db 실행 및 자동실행
  • mysql_secure_installation : 마리아 db 보안관련 설치
  • Enter current password for root (enter for none)
    - 현재 root 패스워드사용중이라면 입력
Switch to unix_socket authentication [Y/n]
Change the root password? [Y/n] y
Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
Reload privilege tables now? [Y/n] y

  • systemctl restart mariadb : 마리아db 재시작
  • mysql -u root -p : 마리아 db root로 접속
  • CREATE USER 'kosa'@'%' IDENTIFIED BY 'kosa0401';
  • CREATE DATABASE IF NOT EXISTS workpress;
  • GRANT ALL PRIVILEGES ON wordpress.* TO 'kosa'@'%';
  • quit

  • firewall-cmd --permanent --add-service=mysql
  • firewall-cmd --reload

ubuntu 서버

  • ss -ant: 열린 포트를 확인 할 수 있다.
  • sudo apt install openssh-server : ssh를 사용할 수 있도록 openssh-server를 다운로드 한다.

SAMBA

  • Window <-> Linux 사이에 파일 공유를 돕는 서비스다.
  • 그러나 Window에서는 SAMBA라고 안하고, smb(Sub message block)라고 말한다.
  • yum install -y samba : 삼바 설치
  • mkdir -p /var/samba/share : 재귀적으로 없는 폴더경로에 폴더를 만든다.
  • chmod 707 /var/samba/share : 권한 설정
    - 만약 권한이 704면 읽기(다운로드)만 할 수 있다.
    • 또, 702 면 쓰기(업로드)만 가능하다.
    • 이렇게 권한을 부여할 수 있다.
  • adduser kosa : kosa 계정 생성
  • passwd kosa : kosa의 비밀번호 변경
  • smbpasswd -a kosa : kosa계정으로 samba 계정 생성
  • vi /etc/samba/smb.conf : smb conf 설정
[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 : smb, nmb 둘다 시작 및 자동시작

  • WEB03 (Window2012)에서 접속할 수 있다.


    그럼 HOSTPC에서 접속하려며 어떻게 해야할까?

  • NAT에서 포트포워딩을 진행해야 한다.

  • SAMBA PORT : 139, 445

  • firewall-cmd --permanent --zone=external --remove-forward-port=port=449:proto=tcp:toport=449:toaddr=10.0.28.101

  • firewall-cmd --permanent --zone=external --remove-forward-port=port=449:proto=tcp:toport=449:toaddr=10.0.28.101

  • 접속 가능

wordpress

  • 워드프레스 최신버전을 zip파일로 다운로드 받아준다.

NFS

  • yum install -y nfs-utils : nfs 설치, NFS는 많이 사용하는 서비스이다. 특히 AWS EFS는 자주 사용된다.
  • mkdir /share && cd $_ : /share 폴더 생성 후, 그 폴더로 이동
  • echo "Hello" > test.txt : test.txt폴더를 생성
  • vi /etc/exports : exports (자동 마운트)설정, 전에는 mask에 *를 넣어 모든 IP가 접속 가능하게 설정했었다.
/share 10.0.28/24(rw,sync)

- `chmod 707 /share` : 권한 변경 - `systemctl enable --now nfs-server` : 시작 + 자동 시작 - `exports -v` exports(자동마운트)가 잘 설정됬는지 확인

client

  • 왜ㅑ 안ㄷ-매ㅑㄴ유
  • IP주소로 안되서, 도메인네임주소도 저장해본다.
  • exportfs -v가 잘 나온다.
  • test.txt가 확인된다!

ubuntu(client)

  • nfs-common으로 다운로드 받아야 한다.
  • 경로 또한, /home/cocudeny/share로 해준다.
  • test.txt확인

HAproxy

  • yum install -y haproxy
  • vi /etc/haproxy/haproxy.cfg
global
    daemon

defaults
    mode               http

frontend  http-in
    bind *:80
    acl firefox hdr_sub(User-Agent) Firefox
    acl chrome hdr_sub(User-Agent) Trident
    default_backend    backend_servers
    use_backend bk_firefox if firefox
    use_backend bk_trident if trident

backend backend_servers
    balance            roundrobin
#    cookie  SVID insert indirect nocache maxlife 10s
    server             web01 10.0.28.102:80 cookie w1 check
    server             web02 10.0.28.100:80 cookie w2 check
    server             web03 10.0.28.103:80 cookie w3 check

backend bk_firefox
    server             web01 10.0.28.102:80
backend bk_trident
    server             web02 10.0.28.100:80
  • systemctl start haproxy
  • systemctl enable haproxy
  • systemctl enable --now haproxy

Ubuntu에 워드프레스 설치

  • 기존 데이터를 제거하고 시작한다.
  • sudo apt-get autoremove php7.2 php7.2-mysql php7.2-mbstring php7.2-gd -y 아까 설치한 PHP7버전을 삭제한다.
  • sudo apt-get autoremove nginx -y Nginx까지 삭제
  • sudo apt update && sudo apt upgrade -y : 업데이트 업그레이드
    - Public Cloud에서는 Reboot하는것이 아니지만, VM은 Reboot가 필요하다.
  • sudo apt install -y nginx : nginx 다시설치
  • sudo apt install -y php7.2 php7.2-mysql php7.2-mbstring php7.2-gd php7.2-fpm unzip wget : PHP7 간략화버전 다운로드, 만약 부족하면 아래 코드로 다시 다운로드 한다.
  • sudo apt install -y php7.2 php7.2-cli php7.2-fpm php7.2-mysql php7.2-json php7.2-opcache php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl unzip wget : PHP7버전 다시 다운로드
  • sudo mkdir -p /var/www/html/wordpress/public_html : - WordPress경로 만들기
  • sudo nginx -t : nginx 상태 확인
  • cd /etc/nginx/sites-available : nginx에서 기본으로 제공하는 폴더, 여기서 ~~~.conf 파일을 만들어서 site-enable에 심볼릭링크를 걸면, 설정이 적용된다.
  • sudo vi wordpress.conf : conf파일 생성
server {
            listen 80;						# 경로의 루트 지정
            root /var/www/html/wordpress/public_html;
            index index.php index.html;	 ##index 우선순위
            server_name nat.cocudeny.shop;     ##자기 도메인인지 확인
		# 에러 로그 어디다 담을지
	    access_log /var/log/nginx/SUBDOMAIN.access.log;
    	    error_log /var/log/nginx/SUBDOMAIN.error.log;

            location / {		## 404 에러 위치
                         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 : nginx가 잘 구동되는지 확인

  • cd /etc/nginx/sites-enabled : enabled 폴더로 이동

  • sudo ln -s ../sites-available/wordpress.conf : wordpress.conf의 링크를 enabled폴더에 넣는다.

  • sudo systemctl reload nginx : 리로드

  • cd /var/www/html/wordpress/public_html : public_html로 다시 이동


    DB서버

  • cp /var/samba/share/files/wordpress-5.9.3-ko_KR.zip /share : SAMBA 공유폴더에 있는 워드프레스를 NFS 공유폴더에 복사해준다.

  • chmod 707 /share/wordpress-5.9.3-ko_KR.zip : 다운로드 받을 수 있게 권한설정해준다.


    WEB02

  • cd /var/www/html/wordpress/public_html : 폴더 이동

  • sudo unzip wordpress-5.9.3-ko_KR.zip : zip파일의 압출을 풀어준다.

  • sudo mv wordpress/* . : 워드프레스폴더 안의 파일들을 다 꺼내준다.

  • sudo chown -R www-data:www-data *
    - 소유자를 www-data로 바꿔준다. CentOS7에는 Apache로 바꾸는 것과 동일하다.

window(2012 sever)




  • Server용 OS이기 떄문에 Server가 여러가지 있을 수 있다.


  • 그냥 넘어가도 되지만, 필요할 수 있어 Client for NFS를 체크하고 넘어간다.




WebPlatformInstaller 설치

  • 공유받은 WebPlatformInstaller 파일을 PC에서 검색창에 \\db.cocudeny.shop로 검색해 SAMBA에 공유한다.
  • WEB03으로 들어가서 똑같이 SAMBA에서 받아 설치해준다.

설치 계속







profile
Talking Potato

0개의 댓글