본문으로 바로가기

복세편살 개발라이프

현재위치 :: HOME BLOG CATEGORY SEARCH ARCHIVE TAGS MEDIA LOCATION GUESTBOOK

네비게이션

  • 태그
  • 미디어로그
  • 방명록
관리자
  • 블로그 이미지
    LeafCat

    프로그래밍 / 주식 / Life / 맛 / 여행

    링크추가
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃

private docker registry 이중화

Docker hub 등의 Public registry를 사용하지 않고, 별도 private registry를 구축해 실제 운영 환경에 사용하는 경우가 있다. 대규모의 클러스터 운영 환경일수록 registry는 컨테이너로 기동되는 서비스의 빌드 및 배포에 매우 중요한 역할을 하기에 가용성 및 안정성에 압박을 받게 될 것이다. Registry를 이중화 하는 것은 일반적인 DB이중화에 비해 간단하다. docker docs에서 기술하고 있는 다음 3가지만 지켜주면 된다. The most important aspect is that a load balanced cluster of registries must share the same resources. For the current version of the re..

프로그래밍 & IT/Docker 2020. 7. 7. 15:09

리눅스 tar 압축 / 압축풀기 (tar, gz)

리눅스는 파일 '압축'과 '묶기' 가 별개로 이루어진다. 단순히 tar로 묶인 파일이라고 해도 gz 등으로 압축하지 않는다면 용량이 줄지 않는다. 자주 쓰이는 tar 압축 관련 명령어는 다음과 같다. 1. tar로 묶기 tar -cvf [파일명.tar] [대상1] [대상2] [대상3]... 2. tar 묶음 풀기 tar -xvf [파일명.tar] 3. tar.gz 로 묶고 압축하기 tar -zcvf [파일명.tar.gz] [대상1] [대상2] [대상3]... 4. tar.gz 압축 풀기 tar -zxvf [파일명.tar.gz] 아래는 리눅스 tar 명령어의 동작과 옵션에 대한 부가 설명이다. tar 동작 소문자 c : 새로운 묶음을 만든다. 대문자 C : tar 묶음을 풀 때 지정한 디렉터리 하위에 풀어..

프로그래밍 & IT/Linux 2020. 6. 25. 15:58

쿠버네티스(Kubernetes) 사용에 따른 장점

1. 애플리케이션 배포의 단순화 개발자가 운영자의 도움이나 서버에 대한 별도의 지식 없이 자체적으로 애플리케이션을 배포할 수 있게 된다. 쿠버네티스 클러스터의 노드는 수많은 베어메탈 서버 혹은 VM으로 구성되어 있을지라도 배포를 기다리는 애플리케이션 입장에서는 하나의 거대한 서버이다. 개발자는 컨테이너화 된 애플리케이션을 인프라 구성에 대한 정보 없이도 손쉽게 배포할 수 있다. 또한 쿠버네티스 환경에서는 rolling upgrade, blue-green 배포 등을 간단하게 실행할 수 있다. 2. 애플리케이션 개발의 단순화 개발 환경과 운영 환경이 동일한 환경(컨테이너)에서 애플리케이션이 구동된다는 보장을 갖게 된다. 개발자는 환경 차이에 따른 추가적인 고민을 할 필요가 없게 된다. java로 동작하는 애..

프로그래밍 & IT/Kubernetes 2020. 6. 25. 00:26

쿠버네티스(kubernetes) 클러스터 구성요소

쿠버네티스(Kubernetes) 클러스터가 어떤식으로 구성되어 있는지 간략하게 알아보자. 쿠버네티스는 수많은 노드로 구성될 수 있으나, 노드는 크게 두가지 유형으로 나뉜다. 1. 마스터 노드 쿠버네티스 컨트롤 플레인을 실행하는 노드이다. 컨트롤 플레인은 쿠버네티스 클러스터 전체를 제어하고 관리하는 역할을 하는 구성 요소들로 이루어져 있다. 2. 워커 노드 실제 컨테이너들이 배포되는 노드이다. 워커 노드에 애플리케이션 컨테이너들이 구동된다. 마스터 노드도 컨트롤 플레인을 제외하면 하나의 워커 노드로서 기능할 수 있다. 다음은 마스터/워커 노드를 구성하는 요소들에 대한 간략한 설명이다. 컨트롤 플레인의 구성 요소 - API 서버 : 워커노드, 컨트롤 플레인의 구성 요소들과 통신한다. - 스케쥴러 : 애플리케..

프로그래밍 & IT/Kubernetes 2020. 6. 24. 23:48

Docker container의 프로세스 격리(cgroup, namespace)

컨테이너는 Host OS의 커널을 공유하며 하나의 프로세스로서 격리된다. Docker container가 기존의 VM(가상머신)과 비교하여 가상화 측면에서 어떻게 다른지는 (https://www.leafcats.com/301) 를 참조 바란다. 그렇다면 리눅스 OS 환경에서 어떻게 하나의 프로세스가 커널을 공유하면서 가상화 될 수 있는걸까? 컨테이너는 다음 두가지를 사용해 컨테이너 프로세스를 격리한다. 첫 번째로는 리눅스 네임스페이스(namespace)로 각각 컨테이너에서 실행된 프로세스가 시스템(user, 파일, 네트워크, 호스트명, 프로세스 등)에 대해서 독립되어 볼 수 있도록 구현해 준다. 그 다음으로는 리눅스의 cgroups를 사용해 각각의 컨테이너(프로세스)가 사용할 수 있는 시스템 리소스(CP..

프로그래밍 & IT/Docker 2020. 6. 23. 00:06

VM(가상머신) 과 컨테이너 가상화

하나의 물리적인 베어메탈 머신을 여러 머신으로 가상화 하여 분리하는 방식은 크게 VM(가상 머신)과 컨테이너 가상화로 구분된다. VM은 베어메탈 서버에 설치된 호스트 OS와 커널의 공유하지 않으며 구성 요소 프로세스 뿐만 아니라 시스템 프로세스 전체를 실행하게 된다. 때문에 가상화된 환경 위에 애플리케이션을 구동하기 위해서는 애플리케이션 구동에 필요한 리로스 뿐 아니라 VM을 생성하고 실행하기 위해 많은 추가적인 컴퓨팅 리소스가 필요하다. 또한 VM을 새롭게 구동할 때 시스템 서비스를 새롭게 구성하는 부팅 과정이 필요하며 이는 일반적으로 시간을 소요한다. 컨테이너는 반면에 호스트 OS의 커널을 공유하며 단순히 호스트OS에서 실행되는 하나의 격리되어있는 프로세스로서 동작한다. 즉, 구동하는 애플리케이션이 ..

프로그래밍 & IT/Infra 2020. 6. 22. 23:17

Scale up (수직 확장) 과 Scale out (수평 확장)

시스템이 작동하는 서버에 부하가 생겼을 때, 이를 해결하기 위해 서버를 확장한다. 서버 확장을 위한 방법에는 Scale up (수직 확장)과 Scale Out (수평 확장) 두가지 방법이 존재한다. Scale up : 늘어나는 부하를 처리하기 위해 부족한 자원(CPU, 메모리 등)을 늘려 서버를 수직으로 확장하는 방법. 대부분의 경우, 확장을 위해 동작하고 있는 애플리케이션를 변경할 필요가 없으나 서버의 자원을 확장하는 것에 물리적인 한계가 존재한다. Scale out : 서버의 수를 늘리고 동작하는 애플리케이션의 복제본을 실행해 이중화, 삼중하를 하는 방식으로 부하를 분산시켜주는 방식. 하나의 서버에 거대한 시스템이 하나로 존재하는 모놀리스 방식의 경우 수평 확장을 위해 애플리케이션 코드의 변경이 필요..

프로그래밍 & IT/Infra 2020. 6. 22. 22:15

[CKEditor] 강력한 Javascript Editor 플러그인

기본적인 정보를 보여주기만 하는 웹 사이트가 아니라면 웹 개발에서 에디터를 적용해야 하는 경우가 매우 많다. 특히 블로그나 매거진, 커뮤니티 형식의 흔히 웹앱의 경우 에디터는 필수라고 해도 무방하다.그렇다면 어떤 에디터를 사용해야 할까? 오픈소스로 제공되는 javascript editor 플러그인은 적지 않다. 그 중에서, 실제 글로벌 대기업들이 사용하고 있고 Use case가 많은 프로젝트가 가장 믿을 수 있고, 자료도 많아서 개발하기에도 수월하다.오늘은 다양한 자바스크립트 에디터 플러그인 중, 가장 많이 사용되는 에디터 중 하나인 CKEditor에 대해 소개하려 한다. - 홈페이지 : https://ckeditor.com/- Document : https://ckeditor.com/docs/- git..

프로그래밍 & IT/Spring & HTML 2019. 3. 14. 19:19

[Fing] 공유기에 연결된 장치들 IP 확인하기

지금 내가 사용하고 있는 무선 공유기에 연결되어 있는 장치들(휴대폰, 노트북, 데스크탑, TV 등 모든 장치)의 IP 정보를 한번에 쉽게 확인할 수 있는 안드로이드 어플이 있다. 바로 fing라는 안드로이드 어플리케이션이다. 아이폰에도 동일한 App이 있는지는 모르겠지만, 비슷한 기능을 하는 어플리케이션들이 있을 것이다. 별다른 설정 없이 그냥 앱을 설치한 뒤 와이파이로 해당 공유기에 연결하고 앱을 실행하면, 바로 해당 공유기에 연결된 장치들의 IP와 MAC어드레스까지 확인이 가능하다. 노트북이나 데스크탑처럼 직접 커맨드로 손쉽게 IP를 확인하기 쉬운 장치들은 굳이 필요 없더라도 간혹 라즈베리파이나 IP 확인이 필요한 장비들의 IP를 확인하기 매우 쉽고 유용한 어플리케이션이다.

프로그래밍 & IT/기타 IT정보 2019. 2. 17. 23:24

Ubuntu 리눅스에 MongoDB설치와 부팅시 자동실행

최근에는 Docker Container를 통해 리눅스 배포판을 가리지 않고 각종 어플리케이션을 설치하는 것이 가능해 졌다. 그럼에도 간혹 No container로 설치해야 하는 상황들이 있는데, 그 중 가장 많은 경우가 DB이다. 역시나 ubuntu 환경에서 VM Process로 MongoDB를 설치해야 하는 상황이 생겼다. 우선 설치를 위해 아래 커멘드를 실행한다. (ubuntu 14.04 맞춤형 스크립트이다. 다른 버전의 경우 정상 동작하지 않는다면 mongodb 공식 홈페이지를 참고하자)1234567sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 echo "..

프로그래밍 & IT/DB 2018. 6. 26. 03:07

파이참(PyCharm) 한줄씩 실행 단축키 및 키맵 설정

파이참을 활용해 파이썬 공부를 하던 도중 위에서부터, 혹은 중간부터 한 줄씩 실행할 수 있는 방법은 없을지 찾아보게 되었다.물론 디버깅 모드로 실행하는 방법으로도 가능 하겠지만 조금 더 편한 방법이 있었다. 기본적으로 셋팅된 단축키는 다음과 같다.Alt + Shift + E 실행하고자 하는 라인에서 해당 단축키를 입력하면 그 라인이 실행된다.범위를 지정해 실행할 수도 있고, 중간의 라인을 건너 뛰고 다른 라인부터 실행할 수도 있다. 위 캡쳐에서 보면 1번, 2번라인을 먼저 실행하고 바로 5번라인을 실행한 뒤 7번라인을 실행했다.3번라인을 실행하지 않았기 때문에 변수 c가 할당되지 않았고, 7번라인에서는 에러가 발생한 것을 볼 수 있다. 이렇게 한줄씩 원하는 곳을 차례로 실행하다 보면 디버깅이 수월하고 우..

프로그래밍 & IT/Python 2018. 6. 21. 00:26

Java Spring websocket client 구현

Spring에서 Websocket은 Spring 4부터 지원한다고 한다. 거기다 Java는 서버단의 언어로 사용되기 때문에 Websocket Clinet를 Java로 구현하는 것에 대한 예제가 많지 않다.암호화폐 trading bot을 만들기 위해 spring boot로 websocket 요청을 할 필요가 있어서 이번 기회에 코드를 정리해 보았다. 사용한 라이브러리 Github에 올라와 있는 neovisionaries 라는 websocket 라이브러리를 사용하였다.( https://github.com/TakahikoKawasaki/nv-websocket-client ) pom.xml maven을 사용했기 때문에, pom.xml에 아래와 같은 dependency를 추가해 주었다. Gradle을 사용한다면 ..

프로그래밍 & IT/Spring & HTML 2018. 5. 25. 02:23

Java JDK 이미지와 Docker Container Memory, Cpu limit 문제

아래 설명할 이슈는 Java SE 8u131 , JDK 9 버전 이후 버전에서는 해결된 문제이다.그 하위 버전에서는 Java Application을 Docker Container를 사용해서 구동하는 경우, CPU와 Memory와 관련된 문제가 있을 수 있다.Docker의 Resource 제한(CPU / Memeory) 기능과 함께 사용하는 경우이다. Kubernetes의 경우도 결국 Docker의 기능을 사용하게 되기 때문에 마찬가지의 현상이 발생한다. Docker는 리눅스 cgroup을 사용해 CPU, Memory 할당을 컨테이너별로 격리한다.하지만 Java SE 8u121 이전 버전의 Java를 사용하는 경우 이 리소스 제한에 대해 문제가 발생한다.Java 어플리케이션이 Docker 컨테이너에서 실행..

프로그래밍 & IT/Docker 2018. 4. 18. 19:35

Kubernetes pod node Assign 기준(scheduler algorithm)

Kubernetes Scheduler가 node를 선택하는 기준은 1. 노드 필터링을 거치고, 2. 노드 랭킹 점수에 따라 할당된다. 1. 노드 필터링(노드 제약 체크) - PodFitsHostPorts: 컨테이너가 사용하는 Port 중복 체크- PodFitsResources: Request 사용 가능한 Node- NoDiskConflict: AWS EBS, GCE PD, ISCSI 및 Ceph 가 지원되는지- NoVolumeZoneConflict: Volume path 등 노드에서 제한이 있는지 - MatchNodeSelector: Node selector 제약조건 만족 (특정노드만 배포)- HostName: PodSpec의 NodeName 필드에 지정된 노드를 제외한 모든 노드 2. 노드 랭킹(pri..

프로그래밍 & IT/Kubernetes 2018. 4. 17. 16:59

MySQL function 관련 에러 log_bin_trust_function_creators

어플리케이션에서 다른 쿼리들의 실행에는 문제가 없으나, function이 실행이 안되는 에러가 발생했다. 현상 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 위와 같은 에러와 함께 function을 포함한 쿼리의 실행이 되지 않는 현상이다. 원인 구글링 해보니 MySQL 특정 버전대에서 Super 권한이 없는 user에게서 발생할 수 있는 문제이다.원인은 mysql global variable 중 log..

프로그래밍 & IT/DB 2018. 4. 17. 13:21
  • 이전
  • 1
  • 2
  • 3
  • 4
  • ···
  • 16
  • 다음

사이드바

NOTICE

  • 블로그 게시글 무단도용에 대한 경고
  • 전체 보기
MORE+

CATEGORY

  • 분류 전체보기 (237)
    • 프로그래밍 & IT (169)
      • Spring & HTML (39)
      • Algorithm (7)
      • Linux (42)
      • Docker (23)
      • Kubernetes (3)
      • Java 기본 (3)
      • 웹디자인 (8)
      • DB (7)
      • vue.js (0)
      • 보안 (4)
      • Python (2)
      • Cloud(AWS, Google Cloud) (5)
      • IT제품 리뷰 (4)
      • 개발 Tool (4)
      • 기타 IT정보 (15)
      • 블록체인 (1)
      • Infra (2)
    • 재태크 정보 (19)
      • 주식 종목분석 (14)
      • 투자정보 (5)
    • 여행 (24)
      • 오사카 (8)
      • 유럽 (1)
      • 대만 (1)
      • 다낭&호이안 (6)
      • 뉴욕 (0)
      • 미서부 (8)
    • Life (8)
      • 음식 (4)
      • 나들이 (1)
      • Everything (3)
    • 블로그 & 애드센스 (17)

RECENTLY

  • 최근 글
  • 최근 댓글

최근 글

  • private docker registry 이중화
  • 리눅스 tar 압축 / 압축풀기 (tar, gz)
  • 쿠버네티스(Kubernetes) 사용에 따른 장점
  • 쿠버네티스(kubernetes) 클러스터 구성요소
  • Docker container의 프로세스 격리(cgro⋯
  • VM(가상머신) 과 컨테이너 가상화
  • Scale up (수직 확장) 과 Scale out (수⋯
  • [CKEditor] 강력한 Javascript Editor⋯
  • [Fing] 공유기에 연결된 장치들 IP 확인⋯
  • Ubuntu 리눅스에 MongoDB설치와 부팅시⋯

최근댓글

  • nick 01.15 <SCRIPT>alert("테스트!!!");</SCRIPT>
  • nick 01.15 <SCRIPT>alert("테스트!!!");</SCRIPT>
  • 노루 2020 전 그냥 소스를 수정했습니다. ㅡㅡ⋯
  • 재량 2020 안녕하세요. 여쭤볼게 있습니다. UserLi⋯
  • hooni 2020 저렇게 톰캣 올렸을때, 톰캣 shutdown은⋯
  • asdfasdf 2020 <script> alert("test"); </script>
  • ㅇㅇ 2020 <SCRIPT>alert("테스트!!!");</SCRIPT>
  • ㅁㄴㅇㄹ 2020 <SCRIPT>alert("테스트!!!");</SCRIPT>
  • test 2020 <SCRIPT>alert("테스트!!!");</SCRIPT>
  • ㅇㅋ 2020 쉬운설명감사합니다~

TAG

  • docker
  • 종목분석
  • spring
  • Spring Boot
  • 리눅스
  • HTML5
  • 주식
  • 티스토리
  • 암호화폐
  • EOS
MORE+
01-21 00:31

VISITOR

오늘 22
어제 1,402
전체 1,097,786
  • 홈으로
  • 방명록
  • 로그인
  • 로그아웃
  • 맨위로
SKIN BY COPYCATZ  |   COPYRIGHT Catchup © 2017-2017 , ALL RIGHT RESERVED.
복세편살 개발라이프
블로그 이미지 LeafCat 님의 블로그
MENU
  • 태그
  • 미디어로그
  • 방명록
CATEGORY
  • 분류 전체보기 (237)
    • 프로그래밍 & IT (169)
      • Spring & HTML (39)
      • Algorithm (7)
      • Linux (42)
      • Docker (23)
      • Kubernetes (3)
      • Java 기본 (3)
      • 웹디자인 (8)
      • DB (7)
      • vue.js (0)
      • 보안 (4)
      • Python (2)
      • Cloud(AWS, Google Cloud) (5)
      • IT제품 리뷰 (4)
      • 개발 Tool (4)
      • 기타 IT정보 (15)
      • 블록체인 (1)
      • Infra (2)
    • 재태크 정보 (19)
      • 주식 종목분석 (14)
      • 투자정보 (5)
    • 여행 (24)
      • 오사카 (8)
      • 유럽 (1)
      • 대만 (1)
      • 다낭&호이안 (6)
      • 뉴욕 (0)
      • 미서부 (8)
    • Life (8)
      • 음식 (4)
      • 나들이 (1)
      • Everything (3)
    • 블로그 & 애드센스 (17)
VISITOR 오늘22 / 전체1,097,786
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃
  • 취소

검색

티스토리툴바