본문 바로가기
반응형

전체 글1065

[Docker] : 도커 컨테이너 CPU 제한 / --cpu-period, --cpu-quota 활용하기 --cpu-period, --cpu-quota 컨테이너의 CFS(Completely Fair Scheduler) 주기는 기본적으로 100ms로 설정되지만 run 명령어 옵션 중 --cpu-period, --cpu-quota로 주기를 변경할 수 있다. --cpu-period의 값은 기본적으로 100000이고 이것은 100ms를 뜻한다. --cpu-quota는 --cpu-period에서 설정된 시간 중 CPU 스케줄링에 얼마나 할당할 것인지 설정해 주는 것이다. 위 예시에서는 100000 중 25000을 할당해 CPU 주기가 1/4로 줄어들어서 일반적인 컨테이너보다 CPU 성능이 1/4로 감소하게 된다. 즉, 컨테이너는 --cpu-period / --cpu-quota 만큼 CPU 시간을 할당받게 된다. 성능.. 2022. 2. 21.
[Docker] : 도커 컨테이너 CPU 제한 / --cpuset-cpu 활용하기 호스트에 CPU가 여러개 있을 때 —cpuset-cpus 옵션을 지정해 컨테이너가 특정 CPU만 사용할 수 있도록 설정할 수 있다. CPU의 집중적인 작업이 필요하면 여러 개의 CPU를 사용하도록 설정해 작업을 적절히 분배하는 게 좋다. CPU별 사용량을 확인할 수 있는 도구는 htop이 있고 아래 명령어로 설치할 수 있다. 이번에는 3번째 CPU만 사용하도록 설정을 해주었다. 우분투 : apt-get install htop CentOS : yum -y install epel-release && yum -y install htop htop를 사용하기 위해 다운받고 확인을 해본다. htop 명령어로 CPU 사용량을 확인하면 3번째 CPU만 사용되는 것을 확인할 수 있다. 참고로 —cpuset-cpus=”0.. 2022. 2. 21.
[Docker] : 도커 컨테이너 CPU 제한 / --cpu-shares 활용하기 --cpu-shares 옵션은 컨테이너에 가중치를 설정해 해당 컨테이너가 CPU를 상대적으로 얼마나 사용할 수 있는지 나타낸다. 사용 예시이다. 위 옵션은 상대적인 값을 가지는데 아무런 설정을 하지 않으면 컨테이너는 1024값을 갖게 되고 이것은 CPU 할당에서 1의 비중을 뜻한다. 1개의 CPU를 가지는 호스트에서 테스트를 해본다. 옵션으로 1024의 값을 할당하고 컨테이너의 명령어는 1개의 프로세스로 CPU에 부하를 주는 명령어(stress —cpu 1)로 설정을 해줬다. —cpu-shares의 값이 1024로 설정되었지만 호스트에 다른 컨테이너가 존재하지 않기 때문에 CPU를 거의 100% 사용하고 있음을 알 수 있다. 이때 —cpu-shares의 값이 512로 설정이 된 컨테이너가 같이 실행이 된.. 2022. 2. 21.
[TIL] : 117 일일 배움을 위한 Today I Learned ! docker fluentd 로깅에 대해 실습을 진행했는데 아직 익숙하지 않다. 2022.02.20 - [Server & System/Docker] - [Docker] : fluentd 로깅 JavaScript 30일 챌린지 JS 30일 챌린지 마무리하고 있는 중이다. 2022.02.20 - [Project/JavaScript 30일 챌린지] - [JavaScript 30일 챌린지] : 24일차 2022. 2. 20.
[JavaScript 30일 챌린지] : 24일차 24일차 html { box-sizing: border-box; background: #eeeeee; font-family: 'helvetica neue'; font-size: 20px; font-weight: 200; } body { margin: 0; } *, *:before, *:after { box-sizing: inherit; } .site-wrap { max-width: 700px; margin: 70px auto; background: white; padding: 40px; text-align: justify; box-shadow: 0 0 10px 5px rgba(0, 0, 0, 0.05); transform: scale(0.98); transition: transform 0.5s; } bo.. 2022. 2. 20.
[Docker] : fluentd 로깅 fluentd는 각종 로그를 수집하고 저장할 수 있는 기능을 제공하는 오픈소스 도구로 도커 엔진의 컨테이너의 로그를 fluentd를 통해 저장할 수 있도록 플러그인을 공식적으로 제공한다. mongoDB 서버와 fluentd와 Ubuntu를 통해 실습을 진행하는데 각각 이미지는 도커 허브를 참고하면 된다. 📝 : 도커 Mongo 📝 : 도커 Fluentd 참고해서 이미지를 pull 받을 수 있다. 도커 서버 1과 2에서 2에서 fluentd 서버를 통해 로그를 수집하고 몽고 서버로 전달해 준다. docker run --name mongoDB -d \\ -p 27017:27017 \\ mongo mongoDB 컨테이너를 생성한다. fluentd 서버의 호스트에서 fluent.conf 파일을 생성하고 아래 코.. 2022. 2. 20.
[TIL] : 116 일일 배움을 위한 Today I Learned ! Docker docker log에 관해 공부했다. 여러 페이지를 공부했는데 실습한 내용만 올려보기로 했다. 2022.02.19 - [Server & System/Docker] - [Docker] : JSON-FILE Log 사용하기 JavaScript 30일 챌린지 23일차 2022.02.19 - [Project/JavaScript 30일 챌린지] - [JavaScript 30일 챌린지] : 23일차 2022. 2. 19.
[JavaScript 30일 챌린지] : 23일차 텍스트 메시지를 읽어주는 프로젝트를 만들었다. 읽는 속도를 조절할 수 있고 멈추기 기능도 만들어줬다. 2022. 2. 19.
[Docker] : JSON-FILE Log 사용하기 JSON-file 로그 사용하기 mysql을 구동하는 컨테이너는 포그라운드에서 실행이 되기 때문에 로그 명령어로 애플리케이션의 상태를 체크할 수 있다. 책에서는 다른 방법도 알려주고 있다. 먼저 mysql을 하나 -d 명령어를 사용해서 하나 만들어주고 docker ps로 확인을 해 봤을 때 돌아가고 있지 않은 것을 확인할 수 있었고 docker ps -a를 실행했을 때 생성은 되어 있는 것을 확인할 수 있었다. docker start 컨테이너명으로 컨테이너를 시작하고 다시 확인을 했을 때 여전히 실행되고 있지 않은 것을 확인할 수 있었는데 이렇게 뭔가 오류가 있는 것 같다고 느낄 때 docker logs 명령어를 쓰면 된다. 이렇게 로그를 출력해서 에러를 체크할 수 있다. 로그가 너무 많으면 --tail.. 2022. 2. 19.
[TIL] : 115 일일 배움을 위한 Today I Learned ! JavaScript 30일 챌린지 오늘은 22회차 진행을 했다. 2022.02.18 - [Project/JavaScript 30일 챌린지] - [JavaScript 30일 챌린지] : 22일차 Spring Boot 쿠키와 세션에 관한 내용을 진행했다. 로그아웃하는 방법도 다뤘다. 2022.02.18 - [노트/오류 노트] - [오류 노트] : Error while powering on: Virtualized performance counters require at least one available functioning counter. Module 'VPMC' power on failed. Failed to start the virtual machine... 2022. 2. 18.
[오류 노트] : Error while powering on: Virtualized performance counters require at least one available functioning counter. Module 'VPMC' power on failed. Failed to start the virtual machine. 문제 Error while powering on: Virtualized performance counters require at least one available functioning counter. Module 'VPMC' power on failed. Failed to start the virtual machine. VMWare를 통해 Ubuntu 접속을 하려고 하는데 위와 같은 에러 메시지가 뜨면서 접속이 안 되는 문제가 생겼다. 해결 먼저 생성한 VMWare Ubuntu 파일을 열어준다. 잘 모르겠다면 아마 ISO 이미지 파일이 있는 곳으로 가면 될 것이다. 나는 git bash를 활용해 파일을 확인했고 확장자가 .vmx 인 파일을 vi 명령어를 통해 열어준다. 아래로 내리다 보면 vpmc.en.. 2022. 2. 18.
[JavaScript 30일 챌린지] : 22일차 이번에는 마우스를 올렸을 때 하이라이트가 적용되도록 코드를 진행했다. 근데 아무 곳에 올리는 것이 아니라 a태그가 있는 곳에 마우스를 올렸을 때 하이라이트가 들어오도록 코딩을 해주었다. 2022. 2. 18.
[Docker] : bridge Network와 --net-alias 브리지 네트워크와 —net-alias 브리지 타입의 네트워크와 run 명령어의 —net-alias 옵션을 같이 사용하면 특정 호스트 이름으로 컨테이너 여러 개에 접근할 수 있다. 위에서 생성한 mybridge 네트워크를 이용해 컨테이너를 3개 생성해 본다. —net-alias 옵션의 값은 alicek106으로 설정했고 다른 컨테이너에서 alicek106이라는 호스트 이름으로 아래 3개의 컨테이너에 접근할 수 있다. docker run -i -t -d --name network_alias_container1 \\ --net mybridge \\ --net-alias alicek106 \\ ubuntu:14.04 docker run -i -t -d --name network_alias_container2 \.. 2022. 2. 18.
[Docker] : Container Network, 컨테이너 네트워크 컨테이너 네트워크 —net 옵션으로 container를 입력하면 다른 컨테이너의 네트워크 네임스페이스 환경을 공유할 수 있다. 공유되는 속성은 내부 IP, 네트워크 인터페이스의 MAC 주소 등이다. —net 옵션의 값으로 container:다른 컨테이너의 ID와 같이 입력한다. docker run -i -t -d \\ --name network_container_1 \\ ubuntu:14.04 docker run -i -t -d \\ --name network_container_2 \\ --net container:network_container_1 \\ ubuntu:14.04 -i -t -d를 같이 사용하면 컨테이너 내부에서 셸을 실행하지만 내부로 들어가지 않고 컨테이너도 종료되지 않아 테스트용 컨테이.. 2022. 2. 18.
[Docker] : None Network, 논 네트워크 논 네트워크 none는 말 그대로 아무런 네트워크를 사용하지 않는 것이다. docker run -i -t \\ --name network_none \\ --net none \\ ubuntu:14.04 이렇게 명령어를 실행하면 외부와 연결이 단절되게 된다. ifconfig —net 옵션으로 none을 설정한 컨테이너 내부에서 네트워크 인터페이스를 확인하면 로컬 호스트를 나타내는 lo 외에는 존재하지 않는 것을 확인할 수 있다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 2. 18.
[Docker] : Host Network, 호스트 네트워크 호스트 네트워크 네트워크를 호스트로 설정하면 호스트 네트워크 환경을 그대로 사용할 수 있다. 브리지 드라이버 네트워크와 달리 별도 생성이 필요 없고 기존 host라는 이름의 네트워크를 사용한다. docker run -i -t \\ --name network_host \\ --net host \\ ubuntu:14.04 echo "컨테이너 내부입니다." 호스트 머신에서 설정한 호스트 이름도 컨테이너가 물려받기 때문에 컨테이너의 호스트 이름도 무작위 16진수가 아닌 도커 엔진이 설치된 호스트 머신의 호스트 이름으로 설정이 된다. ifconfig 컨테이너의 네트워크를 호스트 모드로 설정하면 컨테이너 내부의 애플리케이션을 별도의 포트 포워딩 없이 바로 서비스할 수 있다. 마치 실제 호스트에서 애플리케이션을 외부.. 2022. 2. 18.
[Docker] : bridge network, 브리지 네트워크 브리지 네트워크 docker0 브리지와 비슷하게 브리지 네트워크는 docekr0이 아닌 사용자 정의 브리지를 생성해 각 컨테이너에 연결하는 네트워크 구조이다. 컨테이너는 연결된 브리지를 통해 외부와 통신할 수 있다. docker0을 사용하는 브리지 네트워크가 아닌 새로운 브리지 네트워크를 생성할 수 있다. docker network create --driver bridge mybridge 이렇게 생성할 수 있는데 위 명령어를 실행하면 브리지 타입의 mybridge라는 네트워크가 생기게 된다. docker run -i -t \\ --name mynetwork_container \\ --net mybridge \\ ubuntu:14.04 이렇게 명령어를 입력하여 mybridge 네트워크를 사용하는 컨테이너를.. 2022. 2. 18.
[Spring Boot] : Session 직접 만들기 로그인 처리하기 - 세션 직접 만들기 우선, Session ID를 만들어야 하는데 추정이 불가능하게 만들어 줘야 한다. 여기에 UUID를 사용한다. 클라이언트와 서버는 쿠키로 연결이 되어야 한다. 이번에는 세션을 직접 개발해서 적용을 해봤다. 세션 관리는 3가지 기능으로 제공되는데 세션 생성과 세션 조회, 세션 만료로 나누어진다. @Component public class SessionManager { public static final String SESSION_COOKIE_NAME = "mySessionId"; private Map sessionStore = new ConcurrentHashMap(); @Component로 스프링 빈으로 자동 등록을 시켜주고 ConcurrentHashMap을 사용했다.. 2022. 2. 18.
[Spring Boot] : Cookie 보안 문제와 대처 방안 Cookie 보안 문제 쿠키 값은 바꿔치기가 가능하기 때문에 그냥 개발하면 사용자가 다 털려 버리게 된다. 즉, 쿠키의 값을 임의로 변경할 수 있다. 쿠키의 값을 임의로 변경하게 되면 다른 사용자도 유추해 낼 수 있고 쿠키에 관한 정보도 훔쳐갈 수 있게 된다. 만약 쿠키에 중요한 카드 정보가 등록되어 있다면 모두 다 털려버리는 것이다. 그리고 쿠키는 해커가 한번 훔쳐가면 평생 사용할 수 있다고 한다. 그것으로 악의적인 요청을 지속적으로 시도할 수 있다. 대안으로는 쿠키에 중요한 값을 노출하지 않고 랜덤 값을 노출한다. 그리고 서버에서 토큰과 사용자 id를 매핑해서 인식하도록 하고 서버에서 토큰을 관리하면 된다. 또, 토큰을 털어가도 시간이 지나면 사용할 수 없도록 토큰의 만료 시간을 짧게(예시는 30분으.. 2022. 2. 18.
[Spring Boot] : Cookie와 로그아웃 구현하기 Cookie와 로그아웃 구현 먼저 로그인 상태를 유지하기 위해 쿠키를 사용할 수 있다. 서버에 로그인하면 HTTP 응답에 쿠키를 담아 브라우저에 전달해주면 브라우저는 앞으로 해당 쿠키를 지속해서 보내주게 된다. 시작하기 전에 쿠키의 종류에 대해서도 알려줬다. 영속 쿠키와 세션 쿠키가 있다. 영속 쿠키는 만료 날짜를 입력하면 해당 날짜까지 유지되고 세션 쿠키는 만료 날짜를 생략하면 브라우저 종료시 까지만 유지가 된다. 브라우저 종료시 로그아웃이 되는 것을 바란다면 세션 쿠키를 사용하면 된다. Cookie idCookie = new Cookie("memberId", String.valueOf(loginMember.getId())); response.addCookie(idCookie); return "redi.. 2022. 2. 18.
[TIL] : 114 일일 배움을 위한 Today I Learned ! Spring Boot Form 전송 객체 분리하여 개발하고 회원가입과 로그인을 구현하는 실습을 진행했다. 2022.02.17 - [Framework/Spring Boot] - [Spring Boot] : Form 전송 객체 분리하여 개발하기 2022.02.17 - [Framework/Spring Boot] - [Spring Boot] : Bean Validation HTTP message Converter 2022.02.17 - [Framework/Spring Boot] - [Spring Boot] : 회원 가입 기능 구현하기 2022.02.17 - [Framework/Spring Boot] - [Spring Boot] : 로그인 기능 구현하기 JavaS.. 2022. 2. 17.
반응형