2022-02-07

0207 MySQL 레이어

 1. MySQL은 세개의 레이어로 구성되어있다.

1) Utility Layer 

- SQL문법에 어긋난것이 없는지 검사한다.

- 해당 테이블이나 컬럼이 실제로 존재하는지 체크한다.

- 쿼리를 실행하는 유저의 권한을 체크한다. 

2) SQL Layer

- 쿼리 실행 최적의 계획을 계산한다.

- 옵티마이저의 영역!!

- 쿼리실행 통계를 구하고 cost가 낮은 계획을 선택, 실행할 쿼리를 조정한다.

3) Storage Engine Layer 

- 실제로 쿼리를 실행한다.

- 스토리지 엔진에는 여러 종류가 있으며, 가장 general하게 사용되는 것은 InnoDB엔진이다.

- InnoDB엔진은 동시성제어에 뛰어난 가장 보편적인 MySQL엔진이다. 

- 엔진의 종류는 쿼리실행에 영향을 미칠 수 있다. 특화된 다른 엔진들도 존재하지만 역시 보통은 InnoDB를 많이들 쓴다. 

2. MySQL 쿼리는 결과를 바로바로 유저에게 쓰는것이아니라,일단 버퍼에 담아둔다음에 보낸다. 이것이 성능의 병목이 될수도 있다. 

2022-02-06

0206 virtualBox 호스트 pc, 게스트 pc간 통신

1. 네트워크 설정 추가 
- 브릿지 
- 무작위 모두 허용
2. network-script안에 해당 네트워크 이름의 cfg파일 추가 device이름 바꿔주는 것 잊지말기
3. 일단 dhcp로 하였음
4. 게스트 pc에서 해당 네트워크 카드의 인터페이스의 ip addr확인하고
5. 호스트 pc에서 ping테스트
6. 된다!!!! 놀라워라...
7. 해당 ip로 ssh 접속해서 -> 다른 private 게스트(호스트 pc에 연결되어있지 않은, 하지만 기존 브릿지 네트워크- static ip 로 연결되어 있는) 으로 접속하는 것도 가능해졌다..

---
<어댑터에 브릿지>
- 공유기로부터 직접 ip주소를 대등하게 호스트 pc와 할당받는다
- 외부로의 통신 ping 8.8.8.8 가능!!
- 호스트pc <->게스트 pc ping 가능!!

<NAT>
- 공유기 -> 호스트 pc -> virtualBox로 네트워킹 
- 포트포워딩이 필요

--- 
혹시. 어댑터의 순서도 중요한가? 

0206 FTP서버 셋팅하기

 1. ftp서버쪽에서 vsftpd데몬을 실행. ftp의 pub라는 디렉토리가 ftp디렉토리로서사용되게된다

2. 클라이언트는 ip를 가지고 접속, anonymous유저로 접속할경우 id: ftp, 패스워드 없이 그냥 들어갈수있다

3. 특정 유저로 id, pw를 가지고 접속하여 해당 유저의 home디렉토리안에 있는 파일을 가져오고 쓸수있다.

4. /etc/vsftp.conf파일의 옵션(yes,no)를 수정하여 익명유저~로그인유저 등 읽기쓰기 권한을 다르게 설정할 수 있다.

5. 위 파일을 수정했으나 권한에러가 자꾸떠서 -> selinux설정을 변경한다.

setsebool -P ftpd_full_access=1





- selinux는 os커널차원의 보호프로세스이고 
- firewalld는 네트워크 레벨에서의 보호 프로세스, iptables, 어떤 port를 열것인지를 관리한다.

0206 NFS서버 셋팅하기

 1. NFS관련 데몬들은 포트번호고정이 아니기때문에 우선 포트번호를 고정시켜준다

iptables관련서비스가 없어서

yum install -y iptables-services로 설치

yum install nfs-utils로 설치

2. 각종 환경설정파일들의 포트번호를 고정시켜준후

3. 방화벽 오픈

4. 서비스들 재시작

https://vtam.net/48

https://minidora.tistory.com/208 <<많은 참고가 되었다!!

systemctl restart rpcbind

systemctl restart nfslock

systemctl restart nfs

마운트할 폴더 지정해서 /etc/exports에 넣고

chmod로 권한 변경해서 클라이언트가 접근할수있도록한다

(아까 666으로 권한줬더니 해당 폴더 못들어가는 문제가 있었다 ㅋㅋ 777로 변경)


5. 클라이언트 쪽에서

마운트할 ip어드레스 지정하고 마운트할 위치 지정하면 . exports한 폴더안 파일들이 들어와있다!!! 놀라움~~~

6. 마운트한 폴더에 파일을 생성하고 수정하면. 서로 실시간으로 반영된다.. 클라이언트쪽이든 서버쪽이든. 마치 그 폴더로 하나로 이어진듯한.. 신기하다.

7. umount -l으로 마운트해제하면

클라이언트는 더이상 마운트폴더안 파일들을 확인할수없게된다

안에있던 파일내역들이 없어져있는것을 확인할수있다

permanent하게 바꾸고 싶다면 /etc/fstab을 수정하고 mount -a로 다시 모든것 마운트

df -h커맨드로 확인해보면 마운트지정폴더에 내용물이 있는것을 확인할수있다

!!



0206 server, client virtualbox 설정하기

 1. 일단 필요한 util들을 받아놓고

2. hostname설정

3. network-config설정에서 static 아이피 할당

4. 브릿지 네트워크 설정

5. /etc/hosts에서 도메인 네임설정 

6. ping날려서 테스트. 

---

telnet, ssh실험

- 방화벽 enable되어있을경우 telnet 했을때 먹히지 않는다. 

- ssh로 접속하여 들어간다. (방화벽리스트에, ssh추가하기)

0206 public, private 인스턴스 생성후 ec2간 통신 실험하기

 1.  vpc를 만든다. = logical한 네트워크 공간. 한 네트워크 안에 있는 인스턴스끼리는 private ip로 소통할 수 있다.

2. subnet을 두개 생성하여 하나는 public subnet, 다른 하나는 private subnet으로 생성

3. 라우팅 테이블에 각각의 서브넷을 붙여준다.

4. 인터넷게이트웨이를 vpc에게 할당한 후, public 서브넷에 해당 인터넷 게이트웨이를 붙여준다.

5. NAT 게이트웨이를 private서브넷에 할당한다. (private이 인터넷으로 outbound통신할 수 있게끔.)

6. public, private에 각각 인스턴스를 생성한다. 이때 public instance는 public IP자동할당을 선택하지만 private instance에는 할당하지 않는다. 그러므로 외부에서 직접적으로 private에 접근하는 것이 불가능하다.

7. private instance의 보안그룹을 편집, 모든트래픽 - src에 public instance의 보안그룹ID를 넣어준다.

8. public instance에 ssh로 접속한후 private instance 에 Ping테스트를 해본다.



성공!!

0205 redis master, slave 별개의 인스턴스에 설치하기

1. master 
- bind 에 본인의 hostname -i 의 ip를 넣는다(private ip)
- logfile  위치 설정

2. slave
- bind에 본인의 hostname -i의 ip를 넣는다
- replicaof에 master의 hostname -i의 ip를 넣는다. 같은 서브넷 안에 있으므로, private ip로 통신할 수 있음.
- logfile 위치 설정.



 Reconnecting to MASTER 172.31.38.172:6379 after failure


계속 실패하고 있다 ... why?
- bind 파라메터 : 해당 ip로 접속하는 client만 받아들인다.

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...