sudo xcodebuild -license
// 맥 비밀번호 입력
// return을 눌러 라이센스 약관 확인
// 확인 후 q를 눌러 빠져나가기
// 마지막으로 agree를 입력하여 약관 동의 처리

sudo xcodebuild -license accept
Transliteration
sudo xcodebuild -license
// maeg bimilbeonho iblyeog
// returneul nulleo laisenseu yaggwan hwag-in
// hwag-in hu qleul nulleo ppajyeonagagi
// majimag-eulo agreeleul iblyeoghayeo yaggwan dong-ui cheoli

sudo xcodebuild -license accept
Loading

##   바쁘다면 아래 쪽에 있는 코드 블럭으로 이동하여 터미널 명령어 확인 바람   ##


 

첫 번째 문제 사항

필자는 우선 앱스토어에서 Xcode를 설치했다. 나름 빠른 속도로 설치가 끝났고 실행시켜보았다. 그러나 License Agreement 부분에서 Agree를 클릭해도 로딩이 돌다가 아무 일도 일어나지 않는 현상이 계속 발생했다.

 

의미 없었던 삽질

구글링을 좀 해보니 앱스토어에서 Xcode를 설치하면 무한로딩이 걸리는 경우가 있으니 애플 developer 사이트에서 xip 파일로 된 Xcode를 설치하면 빠른 속도로 설치가 된다는 이야기가 아주 많았다(한국어 검색 결과는 열에 아홉이 이 얘기). 아마도 대부분의 사람은 이 방법으로 문제를 해결한 것 같았으나 재설치라도 해볼까 싶어서 시도한 필자의 경우엔 오히려 웹 사이트에서 설치하는 쪽이 무한로딩이 걸려버렸다. 사파리, 파이어폭스, 크롬 브라우저에서 테스트해 보았으나 모두 같은 결과였다.

 

결국 해결한 방법은?

일단 앱스토어에서 Xcode가 성공적으로 설치는 되었으니 괜히 무한로딩 걸리는 xip 파일 붙들고 있지 말고 약관을 동의하는 방법을 물색해보기로 했다. "cannot accept xcode license agreement" 등의 검색어로 구글링해 본 결과 Apple Developer Forums에 올라온 터미널에서 약관 동의를 처리하는 내용이 담긴 글을 찾았다.

 

 

Accept XCode License | Apple Developer Forums

Does that mean you're not presented with the opportunity to agree, or it works, but you still get the new terms admonition when updating certs? Try this... sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer sudo xcodebuild -license That

developer.apple.com

 

해당 글에서 질문자는

sudo xcodebuild -license
// 맥 비밀번호 입력
// return을 눌러 라이센스 약관 확인
// 확인 후 q를 눌러 빠져나가기
// 마지막으로 agree를 입력하여 약관 동의 처리

sudo xcodebuild -license accept

2가지의 명령어를 입력해봤지만 해결하지 못했다고 한다. 하지만 필자의 경우 위 명령어 두 줄로 약관을 동의하는 데 성공했다.

필자가 겪은 문제에 대해 한국에서 도움을 받을 수 없어서 같은 문제를 겪는 사람이 있다면 도움이 되길 바라는 마음으로 해결 과정을 정리해보았다.

바로 건너뛰는 방법부터 소개하겠다.

1. 하단에 그라데이션으로 희미하게 보라색이 감도는 화면에 진입하면 Ctrl+C

2. 언어 선택 후 Enter

3. 큰 글씨로 ubuntu가 나오고 Install Ubuntu Server 글씨가 보이면 F6를 누르고, esc를 누른다.

4. 하단에 뜬 옵션에서 quiet 를 fsck.mode=skip 으로 고치고 Enter를 누른다.

5. 스킵 세팅 완료

 


여담

Ubuntu 20.04 버전을 최초 설치할 시 실행하는 파일시스템 무결성 검사인 듯 하다. 문제는 그 시간이 IPMI를 통한 서버 세팅 기준 약 3~40분이라는 건데, 사실 준비한 iso 이미지가 클린 이미지라는 확신만 있으면 건너뛰어도 괜찮지 않나 라는 생각으로 구글링을 좀 해 봤다. 그런데 "Checking integrity, this may take some time" 문구 그대로 검색하면 각종 해외 커뮤니티에서 디스커션은 많은데 다들 s키를 누르라는 얘기만 하길래(아무 일도 일어나지 않았음) 한글로 검색을 해 봤더니 의외로 솔루션이 나와버렸다.

 

리다이렉션 한 번 더 들어가면 번거로우니 포스팅에 글로만 정리를 해 봤고, 원본글에는 상세한 스크린샷까지 포함되어 있으니 아래 링크를 참고하기 바란다.

 

https://intrepidgeeks.com/tutorial/do-you-want-to-disable-integrity-checking-for-ubuntu-server-20041-iso

$ sudo docker pull atlassian/confluence-server 

$ sudo docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence \ 
--name="confluence" \ 
-e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts \ 
-d -p 8090:8090 -p 8091:8091 atlassian/confluence-server 

$ sudo docker exec -it confluence /bin/bash

'IT > CI CD' 카테고리의 다른 글

[Jira] Docker 기반으로 Jira 설치하기  (0) 2021.12.21

1. download docker

$ sudo apt-get update 

$ sudo apt-get install \ 
    ca-certificates \ 
    curl \ 
    gnupg \ 
    lsb-release 

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg 

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

$ sudo apt-get update 

$ sudo apt-get install docker-ce docker-ce-cli containerd.io 

$ docker --version

2. download jira

$ docker pull cptactionhank/atlassian-jira-software:latest 

$ sudo docker create --restart=no --name "jira-container" \ 
  --publish "8080:8080" \ 
  --volume "hostpath:/var/atlassian/jira" \ 
  --env "CATALINA_OPTS=-Xms1024m -Xmx2048m -Datlassian.plugins.enable.wait=300" \ 
  cptactionhank/atlassian-jira-software:latest 

$ sudo docker ps -a 

$ sudo docker start --attach "jira-container"

3. 호스트 IP에 8080번 포트로 접속

'IT > CI CD' 카테고리의 다른 글

[Confluence] Docker 기반으로 Confluence 설치하기  (0) 2021.12.21

docker-swarm은 추가적인 설치 필요없이 docker만 있다면 바로 사용할 수 있다.


매니저 노드로 사용할 노드에서 swarm 시작

$ docker swarm init --advertise-addr 10.0.1.105

이 명령어로 스웜 클러스터를 시작한다. 이어서 발급되는 join-token이 포함된 명령어를 복사해 워커 노드로 사용할 노드에서 실행시키면 클러스터의 구성원이 된다.


 

이니셜라이징 이후에도 아래 명령어를 통해 join-token 확인 가능

$ docker swarm join-token manager

join-token 재발급 (join-token이 외부에 노출됨 등의 이유로)

$ docker swarm join-token --rotate manager

정보 출력

$ docker info

클러스터에서 떠나기 (STATUS=Down)

$ docker swarm leave

global 모드 생성은 모든 노드에 하나씩 배포. 모니터링 에이전트 설치 등에 용이

$ docker service create --name global_web --mode global nginx

 

 

 

'IT > Docker' 카테고리의 다른 글

[Docker Compose] 설치 방법 및 기본 명령어  (1) 2021.12.14
[Docker] Container Resource Management  (0) 2021.12.14
Virtualization with Docker  (0) 2021.10.30
Docker Labs  (0) 2021.10.27

docker-compose가 필요한 이유

기존 docker 명령만으로 수많은 옵션을 붙여 컨테이너를 올리는 방식은 번거롭고 불편할 뿐만 아니라 휴먼 에러의 가능성이 크다. 그렇기 때문에 yaml 파일로 미리 정의해두고 한꺼번에 여러 컨테이너를 올릴 수 있는 docker-compose의 사용을 고려해야 한다.

 

docker-compose로 컨테이너 올리기

1. Dockerfile을 이용하여 이미지를 생성한다.

2. docker-compose.yml에 환경을 정의한다.

version: '3'

services:
  nginx:
    image: nginx
    ports:
      - 8080:80
    volumes:
      - ./:/usr/share/nginx/html/

3. docker-compose up -d 명령어로 컨테이너로 만든다.

 

docker-compose 설치

$ curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

$ chmod +x /usr/local/bin/docker-compose

 

$ docker-compose --version

 

docker-compose 명령어

기본적으로 up, down 제외 docker 명령어와 같다.


컨테이너 최초 실행

$ docker-compose up -d

컨테이너 중지 및 종료(stop & kill)

$ docker-compose down

작동중인 프로세스의 상태를 확인

$ docker-compose ps

이미지 가져오기

$ docker-compose pull

로그 확인

$ docker-compose logs [service_name]

docker-compose.yml에서 작성했던 services 항목을 말한다.


컨테이너 추가 생성

$ docker-compose run -d [service_name]

이런 식으로 반복하여 여러 개의 같은 서비스의 컨테이너 생성 가능


필요한 이미지를 강제로 빌드

$ docker-compose up --build

컨테이너 강제 재시작

$ docker-compose up --force-recreate

컨테이너 자원 사용량 확인

$ docker inspect [container_name]

컨테이너 자원 변경

$ docker update [resource_update] [container_name]

resource_update 예시 :  --cpuset-cpus=0-4(cpu 개수 지정)


도커 데몬에서 실행되는 명령어의 결과를 로그로 출력

$ docker events

실행 중인 모든 컨테이너의 자원 사용량을 스트림으로 출력

$ docker stats

--no-stream 옵션을 붙여 그 순간의 로그만 볼 수 있음


이미지, 컨테이너, 로컬 볼륨의 개수 및 크기 등의 정보 출력

$ docker system df

cAdvisor 사용 방법

$ sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \
  gcr.io/cadvisor/cadvisor:$VERSION

위 명령어 실행 후 8080포트로 접속

'IT > Docker' 카테고리의 다른 글

[Docker Swarm] docker-swarm 설치 및 기초  (0) 2021.12.15
[Docker] Container Resource Management  (0) 2021.12.14
Virtualization with Docker  (0) 2021.10.30
Docker Labs  (0) 2021.10.27



 


유튜브 DDABAE-LEARN 채널의 영상 내용 참고

'IT > Docker' 카테고리의 다른 글

[Docker Swarm] docker-swarm 설치 및 기초  (0) 2021.12.15
[Docker Compose] 설치 방법 및 기본 명령어  (1) 2021.12.14
Virtualization with Docker  (0) 2021.10.30
Docker Labs  (0) 2021.10.27

OSS


스토리지 종류

File Storage : NAS와 같이 스토리지 자체에 파일시스템이 구축되어 있어 서버에서 파일을 전송한다(파일 저장).

Block Storage : DAS, SAN과 같이 서버의 OS 단에서 파일시스템을 구축하고, 블록 단위로 전송한다(파일 저장).

Object Storage : File, Block과 다르게 스토리지에 직접 접근할 수 있다(오브젝트 저장).


OSS 대표 장점

- Massive volume, easy to scale

- Enterprise Security

- HA : 3 replicas in 3 Zones

- PAYG : lower cost


OSS 특징

여기서 STS(Secure Token Service)는 임시 자격 증명을 부여하는 것을 의미.


Objects

 

전체적 시스템 구조

 

오브젝트 내부 구조

오브젝트 하나당 최대 5GB, Multipart Upload 시 최대 48.8TB


Bucket

- Globally Unique한 이름을 가져야 함

- Object name(key)은 앞에 디렉토리까지 붙여서 정해짐

 

Namespace : BucketName/ObjectName


Storage Classes

LRS(Locally Redundant Storage) : 하나의 Zone 내에서 스토리지 이중화 구성

ZRS(Zone Redundant Storage) : 하나의 Region 내에서 Multi-Zone 구조로 스토리지 이중화 구성 (가용성↑ 가격↑)


OSS를 CDN으로 사용 가능


Security Features


Image Processing

다양한 프로세싱 기능을 제공하며, OSS가 비싸지 않아 이미지 프로세싱 용도로도 사용할만하다.


RDS


RDS 장점

- Support MySQL, MariaDB, MS SQL Server, PostgreSQL, and PolarDB from Alibaba

- HA : 3 nodes Multi-Zone Redundancy

- High Performance

- Managed Service : 자동 패치 및 업데이트

- Easy to scale and Operate

- Can run as many systems

- Create DB in 10 minutes

 

*온프레미스와의 차이점으로는 DB 엔진과 스토리지가 분리되어 있다는 점이다. DB 엔진에 문제가 생겨도 스토리지에 장애가 번지지 않는다.


RDS Instance Type


Backup

- Physical Backup 또는 Local Backup이 가능

- 백업 주기 설정을 통해 백업 자동화 가능


DR with DTS(Data Transmission Service)

DTS를 통해 리전 간 로그 정보를 공유함으로써 아래와 같은 아키텍처를 구축할 수 있다.

로그의 공유에 시간이 걸리기 때문에 Strong Consistence가 아닌 Eventual Consistence이다.

 

사용자 요청 시나리오 1

 

사용자 요청 시나리오 2


Typical Application

SLB에서 Read/Write 작업을 구분해서 인스턴스에 할당한다.

Read Request는 Read Replica DB 인스턴스로 빼줌으로 전체적인 성능을 끌어 올릴 수 있다.


Security

- 5GB까지 DDoS 완화

- 1000개까지 IP Whitelist Configuration

- SQL Injection 방어를 위한 WAF 지원


DMS

접근을 제어, 로그를 남기고 DB에 대한 통합 관리 서비스 제공


Migration Service

온프레미스의 DB를 DTS를 통해 3가지 방식으로 Alibaba Cloud로 이관 가능하다.

일반적으로 Full → Incremental ~ing 방식일 것.


RDS vs. PolarDB 비교 맵


DRDS를 통한 RDS 수평적 확장

아래 아키텍처에서 볼 수 있듯이 DRDS(Distributed Relational Database Service)를 통해 RDS의 수평적인 확장이 가능하다고 한다.

 

이게 어떻게 가능한 건지는 강사님도 모르신다고......


Auto Scaling


Cloud Monitor에서 지정 메트릭에 대한 수치를 확인하고 정의된 정책에 따라 Limit을 넘어가면 트리거링하여 

SLB에 연결된 ECS 인스턴스들에 대해 Scale In/Out을 실행한다.

 

Monitoring Auto Scaling → Health Checking → Self Healing 을 반복한다.

 

기존 인스턴스들은 SLB와 DB에 연결되어 있었을 것이므로

SLB에게 새 인스턴스를 알게하고, DB의 SG에서 새 인스턴스의 IP를 허용하는 작업까지 처리해준다.

 

Auto Scaling 구성 과정


CDN


Alibaba의 CDN

- Alibaba 엣지 로케이션을 통해서 콘텐츠의 캐싱 서비스를 제공한다. 주로 미디어와 스트리밍 서비스에 이용된다.

- 엔드유저가 CDN Server와 가까이 있을수록 더 빠른 서비스 접근이 가능할 것이다.

- 사용자의 IP를 통해 지리적 정보를 파악하고, 가장 가까운 CDN(PoP)으로 연결시켜준다.

- 사용자의 CDN 접근 패턴을 학습하여, 예상되는 데이터를 요청 전에 미리 캐싱하기도 한다.

- 중국 내 2300개, 나머지 전세계에 500개의 PoP가 구축되어 있다.

 

CDN 장점

- Low latency : 캐싱으로 인한 접근 지연 시간 단축

- High bandwidth : 미디어 전송을 위한 높은 대역폭(Min 40Gbps)

- Redundant : SPOF 방지

- Scalable : 확장에 용이

- Global : 전 세계적 엣지 로케이션 구성

- Cost-effective : On-demand


CDN 내부 구조


CDN Features

Document : https://www.alibabacloud.com/ko/product/cdn

 

CDN: 콘텐츠 전송 서비스를 통해 콘텐츠 배포 가속 - Alibaba Cloud

Alibaba Cloud CDN(Content Delivery Network)은 사용자에 대한 응답을 가속화하고 응답률을 높입니다. CDN은 웹사이트 가속화, 라이브 스트리밍 등에 적용되어 왔습니다.

www.alibabacloud.com

 

+ Recent posts