반응형

Macbook M1을 구입하고, 대체로 만족하면서 사용하고 있었는데

막상 go source code를 작성하고 compile하려고 생각해보니, 실제로 실행 파일(executable file)을 돌릴 대상 장비가 x86 cpu를 사용하는 경우가 대부분이라서 cross compile 필요성을 느꼈다.

아직 한번도 go cross compile을 하지 않았던터라, 이번 기회에 짧게 메모를 해본다.

 

cross compile 지원되는 OS와 CPU architecture 확인

$ go tool dist list
aix/ppc64
android/386
... 중간 생략 ...
darwin/amd64    <-- Intel Mac을 사용하는 경우
darwin/arm64    <-- M1 Mac을 사용하는 경우
...
linux/386
linux/amd64     <-- Intel Linux를 사용하는 경우 (아마 대부분 이 경우가 아닐까?)
linux/arm
linux/arm64
... 중간 생략 ...
windows/386
windows/amd64
windows/arm
windows/arm64
$

 

go cross compile

Case: Linux OS & Intel CPU

M1 Macbook에서 Linux OS에서 돌릴 executable file을 build하는 방법이다.

GOOS=linux  GOARCH=amd64 환경 변수만 설정하고, go build 명령을 수행하면 Linux OS에서 돌아가는 실행 파일이 만들어진다.

$ go mod init  andrew.space/myapp
$ go mod tidy
$ GOOS=linux GOARCH=amd64  go build 
$ ls
myapp
$

 

Case: Linux OS & ARM CPU

Intel Macbook에서 M1 Macbook에서 돌릴 executable file을 build하는 방법이다.

GOOS=darwin  GOARCH=arm64 환경 변수만 설정하고, go build 명령을 수행하면 M1 Mac OS에서 돌아가는 실행 파일이 만들어진다.

(여담이지만, 이미 M1 Mac OS는 OS 자체적으로 Intel->ARM 구조로 변환해주는 기능이 있어서 굳이 이렇게까지 열심히 Cross compile을 하지 않아도 된다)

$ go mod init  andrew.space/myapp
$ go mod tidy
$ GOOS=darwin GOARCH=arm64  go build 
$ ls
myapp
$

 

Case:  다양의 OS와 CPU에 대한 일괄적으로 Cross Compile하기

매번 대상 OS와 CPU에 맞춰서 Cross Compile하기 귀찮다면, 아래와 같이 모든 OS, CPU에 대해서 Cross compile하도록  script를 만든다.

#!/usr/local/bin/bash

archs=(amd64 arm64 ppc64)

for arch in ${archs[@]}
do
        env GOOS=linux GOARCH=${arch} go build -o myapp_${arch}
done

 

 

Tip:  .bashrc 파일에 GO 환경 변수 설정

위에서 설명한 $GOOS, $GOARCH 환경 변수를 매번 타이핑하기 싫다면

아래처럼 .bashrc 파일에 한번만 기록해놓자!!!

 

$  cat ~/.bashrc

... 중간 생략 ...

##
## For GoLang
##
export GOPATH=$(go env GOPATH)
export GO111MODULE=on
export GOOS=linux
export GOARCH=amd64

... 중간 생략 ...

$
반응형

grep command를 -v(또는 --invert-match) 옵션과 함께 사용할 때, 여러 개의 조건을 입력하고 싶을 때가 있다.

-v 옵션을 여러 조건과 사용할 때 항상 표현식이 헷갈렸는데, 그래서 메모를 해본다.

$ grep -vE 'aaa|bbb'
ccc
ddd
eee
$

 

반응형

맥북 또는 맥미니를 모니터에 연결해서 사용하다보면, 색감이나 선명도가 많이 떨어진다는 것을 느낀다.

특히 맥북의 화면과 모니터를 번갈아가면서 볼 때는 화질 차이가 더 심하게 느껴진다.

대부분 이런 불만이 있을 때, Retina 모니터를 구입하라고 솔루션을 제시하면서 LG전자의 80만원대 모니터를 추천하는데 나한테는 너무 비싼 모니터이다.

그래서 LG전자의 80만원대 모니터가 좋은 솔루션인줄 알았지만 몇년간 참으면서 살았다. 

 

그런데 최근 국내 중소기업 2곳이 30만원짜리 UHD 모니터를 출시하면서 나도 Mac 화면을 선명하게 볼 수 있게 되었다.

내가 맥북 프로와 모니터를 연결한 구성은 아래와 같다.

 

  • 맥북 프로 2015년 Mid (AMD Radeon R9 M370X 2GB GDDR5) 모델의 썬더볼트 포트(즉, mini-DP 포트)와
  • 크로스오버 2890CU 모니터의 DP 포트를 연결했다.
  • 그리고 케이블은 "이지넷 Mini Display to DP v1.4 NEXTLINK-MDPC5" 라는 케이블을 사용했다. (아래 사진을 참고)
    아래 사진에서 왼쪽 DP 포트를 크로스오버 2890CU 모니터의 DP 포트에 연결하고, 
    오른쪽 mini-DP 포트를 맥북 프로(Macbook Pro)의 썬더볼트 포트에 연결했다.

 

 

 

이렇게 구성한 결과는?

 

대만족이다. 모니터와 케이블 구입에 32만원을 사용했는데 만족감은 100만원 정도 지출했을 때의 만족감이다.

진작 이렇게 구성해서 사용할껄하는 후회감이 마구마구 밀려온다.

 

 

 

돈이 부족하다면, 이렇게 구성하는 대안도 있다.

 

내가 QHD 모니터도 한대 가지고 있어서, QHD 모니터를 위 UHD 모니터와 동일한 방식(mini-DP to DP)으로 연결해봤는데, HDMI로 모니터를 연결했을 때보다 훨씬 선명도가 높다.

즉, 연결방식을 HDMI에서 DP로만 바꾸어도 MacOS는 화질 개선이 많이 된다.

 

MacOS를 사용하면서 모니터 화질에 불만이 많은 분은 HDMI 대신 mini-DP to DP 연결을 시도해보시라 ^^

반응형

2022년 7월 현재, 아래 Red Hat 문서가 MetalLB BGP Mode에 관한 문서 중에서는 제일 설명이 잘 되어 있는 것 같다.

 

OCP(Openshift Container Platform)에서 BGP Mode의 MetalLB를 사용할 것이라면 아래 Red Hat Docs를 참고.

다루는 내용은 이렇다.

  • MetalLB, BGP, BFD에 관한 설명
  • BGP Mode의 MetalLB를 사용하기 위한 사전 요구 사항
  • 테스트 예시 환경 (그림 포함)
  • 테스트 해보기.
 

How to Use MetalLB in BGP Mode

The purpose of this article is to introduce MetalLB design and goals and cover in more detail this new mode.

content.cloud.redhat.com

 

 

 

 

위 Red Hat 문서를 찬찬히 읽어서 이해를 다 했다면, 굳이 아래 문서는 안 봐도 된다.

위 문서가 웬만한 것을 다 Cover하기도 하고, FRR(FR Routing) 같은 Router Emulator를 이용해서 실질적으로 실습환경도 잘 설명하고 있어서 위 문서 1개로 스터디를 끝낼 수 있다.

 

 

도움이 될만한 Web Docs

MetalLB에서 BGP 모드를 사용하는 개념과 Network 구성에 관한 Web Docs이다.

그림과 예제를 이해하기 잘 작성했다.

 

 

 

MetalLB BGP 모드를 이용한 Loadbalaning

기본적인 구성은 아래와 같이 worker3대가 10.10.2.0/24의 인터페이스가 연결되어 있으며, 같은 네트워크에 BGP를 사용할 L3SW가 연결 되어 있다. 그리고 Client 는 172.16.100.0 대역대로 L3SW와 연결 되어 있

cyuu.tistory.com

 

'kubernetes' 카테고리의 다른 글

간단하게 Pod, Service, PV 리소스 생성하기  (0) 2021.11.03
Docker image 목록 한방에 지우기  (0) 2021.11.03
Istio Circuit Break  (0) 2021.08.07
Port configurations for Kubernetes service  (0) 2021.07.20
Dockerfile Example  (0) 2021.07.19
반응형

 

Windows 10 Home/ProFPP(Full Package Product), ESD(Electronic Software Distribution) 형태로 구입한 경우에는 이미 설치한 Windows 10을 삭제하고, 다른 PC에 Windows 10을 설치하고 Windows 10 License도 옮길 수 있다. (즉, 다른 PC에서 정품 인증이 된다)

그러나 Windows 10이 설치되었던 기존 PC에서 Windows 10을 삭제하기 전에 정품 인증을 해제해야 한다.

이렇게 먼저 정품 인증을 해제하지 않고, Windows 10만 삭제하면 Microsoft 고객센터에 전화해서 정품 인증 절차를 받아야 하는데 실제로 전화해서 정품 인증 절차를 받아보면서 느낀 점은 "아~ 지친다!!!" 이다.

고객센터와 정말 통화를 길게해야 한다.

게다가 이 고객센터가 필리핀 같은 곳에 있는지 통화 품질이 엄청 안 좋고, 소리도 작다.

그래서 통화를 15분 정도 하면서 스트레스를 꽤 많이 받았다.

전화상으로 수십 자리의 알파벳 코드를 불러 주는 것을 듣고 PC에 입력해야 하는데, 이거 상당히 어렵다. ㅠㅠ

(전화를 해보면 알겠지만, 고객센터가 달나라에 있는 것처럼 음질이 너무 안 좋다)

 

 


 

아래 블로그에 윈도우즈 라이센스를 해제하는 방법이 잘 설명되어 있다. 

그리고 Windows 10을 삭제하기 전에 현재의 Product Key를 확인하고, 삭제해야 한다.

 

 

 

윈도우 제품키(시디키) 확인하기

내 PC의 윈도우 제품 키(시디 키)를 확인하는 방법에 대해 알아 보자. MS 윈도우 제품 키(시디 키)는 2...

blog.naver.com

 

 


위 웹 문서에 여러 방법의 설명이 있지만, KeyFinder 라는 프로그램을 다운로드 받아서 실행하면 Product Key를 열람할 수 있다.
다른 방법은 잘 안 되서 비추~

 

 


 

 

 

 

윈도우10 정품 인증하기 및 해제하기

윈도우10 정품 인증하기 및 해제하기에 대해 알아 보자. 윈도우10 디지탈 라이센스를 사용하여 정품 인증하...

blog.naver.com

 

 

 

주의

만약, MS 계정으로 등록된 PC라면, 아래와 같이 추가로 MS 홈피에 접속해서 계정에 등록된 PC를 지워야 한다.

꼭!!! 지워야 한다.

 

작업 순서는 아래와 같다.

 

  1. https://microsoft.com 에 로그인한다.
  2. Web 화면의 우측 상단에 있는 사람 icon을 click한다.
  3. "내 Microsoft 계정"을 click한다.
  4. "장치" Section의 "모든 장치 보기"를 click한다.
  5. 웹 페이지에 보여진 Windows가 설치된 PC 정보를 확인하고 해당 PC를 삭제한다.
    --------------------------------------------------------------------------------------------------
    여기 까지는 microsoft.com 웹 페이지에서 하는 작업이고, 아래부터는 실제 PC에서 터미널을 열고 작업해야 한다
    --------------------------------------------------------------------------------------------------
  6. 실제 컴퓨터에서 Windows를 초기화(또는 삭제)한다.
    Windows 제품키를 지우고, 초기화하는 것은 자세한 내용은 아래 웹 페이지를 따라 한다.

 

 

 

윈도우10 정품인증 해제하는 방법입니다. - 아이티온즈넷

윈도우10 정품인증을 해제는 slmgr /cpky 및 slmgr /upk 명령어를 이용하며 MS계정 디지털라이선스 사용자는 마이크로소프트 홈페이지에서 PC 제거를 합니다.

itons.net

 

반응형

Web Server를 운영하다보니, 해외에서 내 Web Server를 공격하는 시도가 많이 보인다.

그래서 이런 Web Server를 공격하는 Access를 몽땅 iptables 명령으로 drop(block)하는 스크립트를 만들었다.

아래와 같이 스크립트를 작성하고, 실행하면 이 시간 이후로 공격이 모두 차단된다.

 

##
## Block Some IP addresses
##

#!/bin/bash

LOG_FILE_NAME="/var/log/apache2/access.log"

BLACK_LIST=$(awk '{ printf "%s\n", $1 }' $LOG_FILE_NAME  | grep -v "192.168.0." | sort | uniq)

for BLOCKING_IP in $BLACK_LIST
do
  BLOCKING_CIDR="$BLOCKING_IP/16"
  echo "Blocking CIDR: $BLOCKING_CIDR"
  GEO_ADDRESS=$(whois $BLOCKING_IP | grep -i "address:")
  echo "$GEO_ADDRESS"
  echo ""
  iptables -A INPUT -s $BLOCKING_CIDR  -p tcp  --dport 80  -j DROP
done


iptables -L -n --line-numbers | grep "DROP" | awk '{ printf "%s\n", $5 }' | sort
# iptables -D INPUT 1
# iptables -D INPUT 2
# ...


##
## If you would like to save the iptables rules, then run the following command.
##
# service iptables save

 

만약, 위와 같이 수행했다가 다시 Rule을 지우고 싶다면, 아래와 같이 스크립트를 작성해서 실행한다.

 

##
## Remove rules of IP tables
##

#!/bin/bash

REMOVE_IP_LIST=$(iptables -L -n | grep "DROP" | awk '{ printf "%s\n", $4 }' | sort)

for REMOVE_IP in $REMOVE_IP_LIST
do
  echo "IP Address to be removed: $REMOVE_IP"
  iptables -D INPUT -s $REMOVE_IP -j DROP
done
반응형

아래의 글이 쉽게 설명되어 있다. 시간될 때, 다시 꼼꼼하게 읽어봐야겠다.

 

참고: istio v1.2  kubernetes v1.14로 테스트한 과정이 설명되어 있다.

 

http://itnp.kr/post/istio-circuit-break

 

Istio Circuit Breaking

Circuit Breaking이란 전기의 회로차단기에서 차용한 개념으로 전기가 흐르다가 문제가 생기면 회로를 open하여 더이상 전기가 흐르지 않도록하여 문제가 되는 부분으로 부터 전체 시스템에 장애가

itnp.kr

 

반응형

 

한국기술대학교 박승철 교수 /  BGP 강의

지금까지 찾은 BGP 설명 영상 중에서 개념과 라이팅 동작 원리를 포괄적으로 잘 설명한 자료이다.

이 영상을 먼저 본 이후에 다른 영상을 보는 것이 좋다.

 

 

예제를 통한 BGP 이해하기 (후티와 떠나는 네트워크 여행 2 - BGP 라우팅 설정과 조정)

'후티'님이 예제를 이용하여 설명해주는 영상이다. 30분 만에 eBGP, iBGP에 대한 감을 잡기에 딱 좋은 설명이다.

 

 6-1장

 

 

6-2장

 

6-3장

 

6-4장 

 

6-5장

 

 

 

 

 

 

BGP 기본 설정 - 실습 

 

 

참고 영상

https://www.youtube.com/watch?v=lISiQ6ifeM0 

 

 

BGP 라우팅 동작 원리 (동영상)

 

 

BGP (Border Gateway Protocol) 이해하기

아래 Web Docs가 BGP Concept에 관해 잘 설명하고 있다. 이 문서에서 AS(Autonomous System), BGP Protocol Spec, Advertisement 등에 관한 개념을 설명한다. 

 

[이해하기] 라우팅 프로토콜 - BGP | STEVEN J. LEE

글로벌 네트워크는 최종적으로 AS 라는 집단 (예> 하나의 인터넷 회선 사업자가 가지고 있는 모든 라우터들의 그룹) 끼리 상호 통신을 하게 됨으로써 구성된다고 볼 수 있습니다. 이 AS 들 끼리 서

www.stevenjlee.net

 

 

Network Switch 설정 및 BGP Table

아래 Web Docs가 실제 Cisco Switch를 이용해서 실제 AS간 Peer(Beighbor) 설정을 어떻게 하는지 보여준다.

 

Routing Protocol - BGP (Border Gateway Protocol)

BGP (Border Gateway Protocol) BGP (Border Gateway Protocol)는 서로 다른 조직의 네트워크를 연결할 때 사용하는 라우팅 프로토콜이다. 기업체 또는 학교나 정부 기관등이 2개 이상의 ISP와 연결할 때 BGP를 사..

net-study.club

 

+ Recent posts