본문 바로가기

전체 글

(57)
PHP(HyperText Preprocessor) PHP(HyperText Preprocessor) PHP는 라스무스 러도프라는 사람이 1995년에 설계한 ASP(MS), JSP(Java) 등과 같이 웹 프로그래밍을 위한 언어로써 누구나 무료로 사용할 수 있으며, 가볍고 실행 속도가 빠르고, C 언어와 유사한 문법체계를 가지고 있어서 현재까지도 널리 사용된다. Java 계열에서의 JSP와 같은 역할이다. PHP는 웹에서 작동되기 때문에 웹의 기본인 HTML과 연동되어서 동작된다. HTML 안에 PHP 구문이 들어가서 PHP 프로그램의 결과가 HTML에 반영되는 프로세스이다. 1994년 만든 이래 계속 버전이 올라가고 있는데 PHP 5.0대를 사용하면 최신의 API에서도 별 무리가 없다. Windows에서 실행하려면 APMsetup7.exe를 실행시켜서 ..
DB #2 사용자 생성 create user 'centos'@'localhost' identified by 'centos'; 사용자에게 권한 부여 =>GRANT ~ TO ~ 구문을 사용한다. grant all (privileges) on centos_db.* to 'centos'@'localhost'; =>사용자에게 부분적인 권한만 부여하기 grant insert, select, delete on centos_db.cent_tbl to 'centos2'; =>사용자를 생성하면서 권한을 함께 부여하기 grant insert, select, delete on centos_db.* to 'centos3'@'localhost' identified by 'centos3'; 사용자에게 주어진 권한 취소 revoke delet..
Cloud #16 인그레스에 SSL/TLS 암호화 설정 외부에서 웹으로 파드에 접속시키는 인그레스에 SSL/TLS 암호화를 설정하면 파드에서 접속하는 브라우저에 HTTPS를 요청하게 할 수 있다. 하지만 파드에는 SSL/TLS를 설정하지 않아도 된다. 그러나 이 방법은 인그레스 컨트롤러에 부하가 집중되기 때문에 정식 운영 서비스에 적용할 때에는 성능의 병목현상이 발생하지 않게 주의해야 한다. 오토 스케일(Auto-Scale) 오토 스케일은 CPU와 RAM 사용률에 따라서 파드의 수를 자동으로 가감하는 기능이다. 여기서 필요하면 노드도 가감할 수 있다. 특히 온 디멘드(On-Demand)에서는 노드의 개수, 이용 시간에 따라서 비용이 달라지므로 비용 최소화와도 연결된다. 온 프레미스(On-Premise)에서는 제한된 서버의..
Cloud #15 스테이트풀 셋(StatefulSet) 쿠버네티스의 스테이트풀 셋는 퍼시스턴트 볼륨과 파드를 함께 조합해서 제어하는 컨트롤러이다. 이 컨트롤러는 파드와 퍼시스턴트 볼륨의 대응 관계를 더욱 엄격히 관리해서 퍼시스턴트 볼륨의 데이터 보관을 우선해서 작동된다. 원래 스테이트풀하다는 것은 내부에 예상되는 일정한 어느 상태를 가지고 있어서 내용이 달라져도 원래대로 상태를 유지하려는 것을 의미하는데, 예를 들어서 커피 자판기의 동전 투입 대기 상태와 주문 대기 상태를 생각해 볼 수 있다. 동전 투입 대기 상태에서는 어느 일도 하지 않고, 동전이 충분히 투입되면 주문 대기 상태가 된다. 이제 주문 버튼을 누르면 제품이 나오는데 여기서는 2개의 상태를 가지는 스테이트풀한 프로그램이 있다고 볼 수 있다. 컨테이너/파드는 ..
Cloud #14 Service 파드 컨테이너는 일시적인 존재이기 때문에 언제든지 할당된 IP_주소가 바뀔 수 있다. 클라이언트 입장에서는 늘 변하는 파드 서버의 IP_주소를 알기 어렵기 때문에 쿠버네티스에서는 Service 객체를 통해서 이 Service의 고정된 IP_주소를 사용하게 한다. 여기서 사용되는 Service는 ■ ClusterIP : 타입을 지정하지 않으면 기본으로 실행되는데 클러스터 내부의 파드에 Service의 이름으로 접근하게 한다. ■ NodePort : ClusterIP의 접근 범위뿐만 아니라 쿠버네티스 클러스터 외부에서 '노드의_IP_주소:포트_번호'로 접근하게 한다. 외부 호스트 Ubuntu 머신에서 내부 컨테이너에 접속하는 경우이다. ■ LoadBalancer : NodePort의 접근 범위..
Cloud #13 디플로이먼트로 관리되는 파드들은 보통 웹 서버처럼 항상 실행되고 있는 경우가 많기 때문에 파드가 정지되거나 멈추면 디플로이먼트가 계속 파드를 재실행해준다. 만약 buzz 컨테이너 파드가 메시지를 출력하고 종료되면 디플로이먼트가 buzz 파드를 재시작시키는데, 디플로이먼트는 관리 중인 파드가 종료되면 지정된 파드의 개수(replicaset로 지정된 파드_수)를 유지하기 위해서 파드를 자동으로 재실행시켜주기 때문이다. 이렇게 쿠버네티즈가 자동으로 디플로이먼트와 리플리카셋을 통해서 클러스트의 파드를 관리하게 하는 것이 좋은 것이어서 컨테이너 파드 관리를 관리자가가 수동으로 실행시켜서 파드의 갯수를 맞추는 작업을 수행한다면 그런 작업은 디플로이먼트 컨트롤러에 적합한 워크로드가 아닌 셈이다. 잡 컨트롤러를 사용하..
Cloud #12 하나의 컨테이너에 여러 사용자가 접속하는 것이 가능하기도 하지만 컨테이너는 원래 Linux처럼 다중 사용자용이 아니고 단일 사용자용으로 개발되었기 때문에 로그인 인증이나 사용자 관리가 없어서 다중 접속이 가능하고 sudo su 했을 때 별도의 root 패스워드를 묻지 않는 것이다. 컨테이너는 가상서버가 아니라 프로세스로 실행되는 실행환경에 맞게 고안된 기능이다. 호스트란 노드와 노드 안의 파드, 그리고 파드 안의 컨테이너가 실행되게 해주는 프레임 호스트로써 Ubuntu 18.04과 같은 호스트 머신을 말한다. master01, worker01, worker02와 같은 노드나 노드 안의 파드(컨테이너)의 실체는 이 Ubuntu 호스트의 프로세스이다. 컨테이너에서 uname -r을 해보면 호스트의 커널이 보..
Cloud #11 Kubernetes 명령어 -command ▸ get : 지정한 객체 목록을 한 줄에 하나씩 출력한다. ▸ describe : get 보다 더 자세한 정보를 보인다. ▸ apply : 매니페스트에 기술된 객체가 존재하지 않으면 생성하고 존재하면 변경한다. ▸ create : 매니페스트에 기술된 객체를 생성. 이미 있으면 에러 반환. ▸ delete : 매니페스트에 기술된 객체 삭제. ▸ config : 접속 대상이 되는 콘텍스트(K8s 클러스터, 네임스페이스, 유저) 목록 출력이나 삭제 ▸ exec : 실행중인 파드 컨테이너에 대화형으로 커맨드 실행, 파드 내에 컨테이너가 여러 개존재하면 –c 옵션으로 컨테이너_명을 지정, 컨테이너_명은 kubectl get describe 으로 확인 ▸ run : 최초..