네트워크 알고리즘은 데이터 전송과 네트워크 관리를 최적화하기 위해 설계된 다양한 기법들을 포함합니다. 여러 종류의 네트워크 알고리즘과 그 설명은 다음과 같습니다:

  1. 라우팅 알고리즘(Routing Algorithms):

    • Distance Vector: 각 라우터가 인접 라우터와의 거리 정보를 공유합니다. 라우터는 이 정보를 기반으로 최적의 경로를 계산합니다. 예: RIP (Routing Information Protocol).
    • Link State: 각 라우터가 전체 네트워크의 상태 정보를 수집하여 최적의 경로를 계산합니다. 예: OSPF (Open Shortest Path First), IS-IS.
    • Path Vector: BGP(Border Gateway Protocol)와 같이, 라우터가 경로 정보를 사용하여 라우팅 결정을 내립니다. 인터넷에서 주로 사용됩니다.
  2. 흐름 제어 알고리즘(Flow Control Algorithms):

    • Window-based Flow Control: TCP에서 사용되는 방법으로, 전송률을 조절하기 위해 데이터를 전송하는 '윈도우'의 크기를 조정합니다.
    • Rate-based Flow Control: 데이터 전송률을 직접 제한하여 네트워크 혼잡을 방지합니다.
  3. 혼잡 제어 알고리즘(Congestion Control Algorithms):

    • Additive Increase/Multiplicative Decrease (AIMD): TCP에서 널리 사용되며, 네트워크 혼잡이 감지되면 전송률을 감소시키고, 혼잡이 없을 때는 서서히 증가시킵니다.
    • Random Early Detection (RED): 네트워크 혼잡이 심각해지기 전에 패킷을 무작위로 드롭하여 혼잡을 예방합니다.
  4. 로드 밸런싱 알고리즘(Load Balancing Algorithms):

    • Round Robin: 각 서버에 차례대로 요청을 할당합니다.
    • Least Connections: 가장 적은 연결을 가진 서버에 요청을 할당합니다.
  5. 경로 선택 알고리즘(Path Selection Algorithms):

    • Shortest Path First (SPF): 가장 짧은 경로를 선택합니다. 예: Dijkstra's algorithm.
    • Widest Path: 가장 넓은 대역폭을 제공하는 경로를 선택합니다.
  6. 네트워크 코딩(Network Coding):

    • 데이터를 네트워크 내에서 인코딩하고 디코딩하여 전송 효율을 높이는 기술입니다.
  7. 에러 검출 및 수정 알고리즘(Error Detection and Correction Algorithms):

    • Checksum: 데이터의 정확성을 확인하기 위해 사용됩니다.
    • Cyclic Redundancy Check (CRC): 더 강력한 에러 검출 기능을 제공합니다.

이러한 알고리즘들은 네트워크의 효율성, 안정성, 그리고 성능을 극대화하는 데 중요한 역할을 합니다. 사용되는 알고리즘은 네트워크의 종류, 크기, 그리고 특정 요구사항에 따라 다를 수 있습니다.

'Job지식' 카테고리의 다른 글

Apache, Nginx 차이  (0) 2023.12.28
[ChatGPT] 웹브라우저 동작원리  (1) 2023.12.28
[md5] 체크섬  (0) 2023.09.06
[팁] 구글 검색방법  (0) 2021.11.25
[Windows 10] PowerShell을 이용한 다중 서버 ping 테스트 스크립트  (0) 2021.09.03

Apache 웹서버와 Nginx 웹서버는 두 가장 인기 있는 오픈 소스 웹 서버입니다. 이 둘은 서로 다른 아키텍처와 기능을 가지고 있으며, 각각의 서버가 제공하는 특징과 사용 사례에 따라 선택됩니다. 이들의 주요 차이점을 요약하면 다음과 같습니다:

  1. 아키텍처:

    • Apache: 멀티-프로세스 또는 멀티-스레드 모델을 사용하여 요청을 처리합니다. 각 연결에 대해 별도의 스레드 또는 프로세스를 생성하여 리소스를 많이 사용할 수 있습니다.
    • Nginx: 이벤트 기반, 비동기적인 아키텍처를 사용합니다. 이는 적은 수의 스레드로 많은 수의 동시 연결을 처리할 수 있게 해줍니다. 이 방식은 특히 정적 파일을 서빙하거나 리버스 프록시로 사용될 때 효율적입니다.
  2. 성능:

    • Apache: 정적 및 동적 콘텐츠 모두에서 좋은 성능을 제공합니다. 그러나 고부하 상황에서는 Nginx에 비해 성능이 떨어질 수 있습니다.
    • Nginx: 많은 수의 동시 연결을 효율적으로 처리할 수 있어 고성능을 제공합니다. 특히 정적 콘텐츠에서 뛰어난 성능을 보입니다.
  3. 동적 콘텐츠 처리:

    • Apache: 모듈을 통해 PHP, Python 등과 같은 동적 콘텐츠를 직접 처리할 수 있습니다.
    • Nginx: 기본적으로 정적 콘텐츠를 처리하는 데 최적화되어 있으며, 동적 콘텐츠 처리를 위해서는 보통 FastCGI, uwsgi, SCGI 프로토콜을 사용하는 별도의 백엔드 프로세서가 필요합니다.
  4. 구성과 유연성:

    • Apache: .htaccess 파일을 통한 디렉토리 수준의 구성 변경이 가능하며, 이는 호스팅 환경에서 유용합니다. 다양한 모듈을 통해 확장성과 유연성이 높습니다.
    • Nginx: 전체 서버 수준에서 구성 변경을 해야 하며 .htaccess와 같은 디렉토리 수준의 구성 변경을 지원하지 않습니다. 하지만 성능상의 이점을 제공합니다.
  5. 보안:

    • Apache와 Nginx 모두: 우수한 보안 기능을 제공하지만, 설정과 관리 방법에 따라 보안 수준이 달라질 수 있습니다.
  6. 사용 사례:

    • Apache: 전통적인 웹 호스팅, 작은 규모의 웹사이트, 개인 프로젝트에 적합합니다.
    • Nginx: 고성능이 필요하거나 많은 수의 동시 연결을 처리해야 하는 대규모 웹 애플리케이션, 정적 콘텐츠 서빙, 리버스 프록시, 로드 밸런싱에 적합합니다.

최종 선택은 특정 환경, 필요성, 선호도에 따라 달라질 수 있습니다.

웹 브라우저의 동작 원리를 설명하겠습니다.
웹 브라우저는 인터넷에서 웹 페이지를 찾고, 검색하고, 표시하는 소프트웨어입니다. 그 과정은 다음과 같습니다:

  1. URL 처리: 사용자가 브라우저의 주소 창에 URL(Uniform Resource Locator)을 입력하면, 브라우저는 이 URL을 해석하여 해당 서버의 주소를 찾습니다.

  2. 서버 요청: 브라우저는 해석된 주소를 사용하여 해당 웹 서버에 HTTP 요청을 보냅니다. 이 요청은 웹 페이지를 요청하는 메시지입니다.

  3. 서버 응답: 웹 서버는 브라우저의 요청을 받고, 요청된 웹 페이지에 해당하는 데이터(HTML, CSS, JavaScript 등)를 HTTP 응답으로 브라우저에게 전송합니다.

  4. HTML 파싱: 브라우저는 받은 HTML 문서를 파싱하여 DOM(Document Object Model) 트리를 생성합니다. 이 트리는 웹 페이지의 구조를 나타냅니다.

  5. CSS 파싱: CSS는 디자인과 레이아웃을 담당합니다. 브라우저는 CSS 파일을 파싱하여 웹 페이지의 스타일을 결정합니다.

  6. 자바스크립트 처리: JavaScript 파일은 브라우저에서 실행되며, 웹 페이지의 동적인 기능을 담당합니다. 브라우저는 이를 해석하고 실행합니다.

  7. 렌더링: DOM 트리와 CSS 정보를 결합하여 렌더 트리를 생성합니다. 이 트리는 웹 페이지가 시각적으로 어떻게 보일지 결정합니다.

  8. 디스플레이: 최종적으로 브라우저는 렌더 트리에 따라 화면에 웹 페이지를 표시합니다.

이 과정은 사용자가 웹 페이지에서 링크를 클릭하거나 새로운 페이지를 요청할 때마다 반복됩니다. 웹 브라우저는 또한 캐시, 쿠키 및 기타 기능을 사용하여 사용자 경험을 개선하고 효율성을 높입니다.

'Job지식' 카테고리의 다른 글

[ChatGPT] 네트워크 알고리즘  (1) 2023.12.28
Apache, Nginx 차이  (0) 2023.12.28
[md5] 체크섬  (0) 2023.09.06
[팁] 구글 검색방법  (0) 2021.11.25
[Windows 10] PowerShell을 이용한 다중 서버 ping 테스트 스크립트  (0) 2021.09.03

체크섬

- 파일 다운로드가 이상없이 됐는지 체크하는 용도로 사용하는 방법
- 파일을 고유하게 식별하는데 사용되는 문자열

샘플파일

linux_files.tar

체크섬 파일 생성

md5sum linux_files.tar > linux_files.tar.MD5SUMS

파일에 대한 md5 문자열 확인

openssl dgst -md5 linux_files.tar
-> MD5(linux_files.tar)= e556fe600d36c110d92f739821ca30bc

*파일 용량에 따라 시간이 길어지는 듯

체크섬 확인

echo $(cat linux_files.tar.MD5SUMS) | md5sum --check
-> linux_files.tar: OK

*파일 용량에 따라 시간이 길어지는 듯

1. 구성내용

- 강사용 deploy 서버 1대

- 교육생 별 5대

 

ssh 192.168.x.x (openstack deploy node)
source ~/venv/openstackclient/bin/activate
source /etc/kolla/k8sedu-openrc.sh

# 192.168.x.x edu-main 생성
openstack server create --image ubuntu-focal-20.04-20220615-osc --flavor C2R4D50 --key-name openstack-deploy --nic net-id=ex-net,v4-fixed-ip=192.168.200.5 edu-main

password
-> PASSWORD 설정


apt update
apt install -y python3-venv python3-pip

apt install ansible

 

VM 생성

192.168.x.11 edu01-master1
192.168.x.12 edu01-master2
192.168.x.13 edu01-master3
192.168.x.14 edu01-worker1
192.168.x.15 edu01-worker2

192.168.x.21 edu02-master1
192.168.x.22 edu02-master2
192.168.x.23 edu02-master3
192.168.x.24 edu02-worker1
192.168.x.25 edu02-worker2
		                
192.168.x.21 edu03-master1
192.168.x.22 edu03-master2
192.168.x.23 edu03-master3
192.168.x.24 edu03-worker1
192.168.x.25 edu03-worker2
		              
192.168.x.31 edu04-master1
192.168.x.32 edu04-master2
192.168.x.33 edu04-master3
192.168.x.34 edu04-worker1
192.168.x.35 edu04-worker2
				               
192.168.x.41 edu05-master1
192.168.x.42 edu05-master2
192.168.x.43 edu05-master3
192.168.x.44 edu05-worker1
192.168.x.45 edu05-worker2
		            
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.11 edu01-master1
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.12 edu01-master2
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.13 edu01-master3
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.14 edu01-worker1
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.15 edu01-worker2
																									
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.21 edu02-master1
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.22 edu02-master2
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.23 edu02-master3
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.24 edu02-worker1
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.25 edu02-worker2
																									
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.31 edu03-master1
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.32 edu03-master2
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.33 edu03-master3
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.34 edu03-worker1
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.35 edu03-worker2
																									
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.41 edu04-master1
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.42 edu04-master2
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.43 edu04-master3
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.44 edu04-worker1
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.45 edu04-worker2
																									
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.51 edu05-master1
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.52 edu05-master2
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.53 edu05-master3
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.54 edu05-worker1
openstack server create --image ubuntu-focal-20.04 --flavor C2R4D50 --key-name edu-main-key --nic net-id=ex-net,v4-fixed-ip=192.168.x.55 edu05-worker2

 

 

 

VM 셋팅

#apt install sshpass


---------------------------

# ansible-hosts 작성
[all]

edu01-master1 ansible_host=192.168.x.11 ip=192.168.x.11
edu01-master2 ansible_host=192.168.x.12 ip=192.168.x.12
edu01-master3 ansible_host=192.168.x.13 ip=192.168.x.13
edu01-worker1 ansible_host=192.168.x.14 ip=192.168.x.14
edu01-worker2 ansible_host=192.168.x.15 ip=192.168.x.15

edu02-master1 ansible_host=192.168.x.21 ip=192.168.x.21
edu02-master2 ansible_host=192.168.x.22 ip=192.168.x.22
edu02-master3 ansible_host=192.168.x.23 ip=192.168.x.23
edu02-worker1 ansible_host=192.168.x.24 ip=192.168.x.24
edu02-worker2 ansible_host=192.168.x.25 ip=192.168.x.25

edu03-master1 ansible_host=192.168.x.31 ip=192.168.x.31
edu03-master2 ansible_host=192.168.x.32 ip=192.168.x.32
edu03-master3 ansible_host=192.168.x.33 ip=192.168.x.33
edu03-worker1 ansible_host=192.168.x.34 ip=192.168.x.34
edu03-worker2 ansible_host=192.168.x.35 ip=192.168.x.35

edu04-master1 ansible_host=192.168.x.41 ip=192.168.x.41
edu04-master2 ansible_host=192.168.x.42 ip=192.168.x.42
edu04-master3 ansible_host=192.168.x.43 ip=192.168.x.43
edu04-worker1 ansible_host=192.168.x.44 ip=192.168.x.44
edu04-worker2 ansible_host=192.168.x.45 ip=192.168.x.45

edu05-master1 ansible_host=192.168.x.51 ip=192.168.x.51
edu05-master2 ansible_host=192.168.x.52 ip=192.168.x.52
edu05-master3 ansible_host=192.168.x.53 ip=192.168.x.53
edu05-worker1 ansible_host=192.168.x.54 ip=192.168.x.54
edu05-worker2 ansible_host=192.168.x.55 ip=192.168.x.55

------------------------


vi /etc/ssh/ssh_config
StrictHostKeyChecking no

ansible -m shell -a "sed -i \"s/#   StrictHostKeyChecking*/StrictHostKeyChecking no/\"  /etc/ssh/sshd_config" -i ansible-hosts all
ansible -m shell -a "systemctl restart sshd" -i ansible-hosts all

# key 복사
cat /etc/hosts | grep 192.168.x | awk '{print "sshpass ssh-copy-id " $1}' | sh

#root 로그인 허용
ansible -m shell -a "sed -i \"s/#PermitRootLogin.*/PermitRootLogin yes/\"  /etc/ssh/sshd_config" -i /root/update-root-pw/ansible-hosts all

 

 

 

VM root P/W 변경을 위한 yaml 파일

vi update-root-pw.yaml
---
- hosts: all
  gather_facts: no
  tasks:
  - name: Update Root user's Password
    user:
      name: root
      update_password: always
      password: "{{ PASSWORD | password_hash('sha512') }}"




#root 패스워드 변경
ansible-playbook -i ansible-hosts update-root-pw.yaml --extra-vars "PASSWORD=password123123"

 

 

 

1. 개요

- 프록시를 사용하여 서비스 또는 마이크로서비스 간의 서비스 간 통신을 용이하게 하기 위한 전용 인프라 계층

- 애플리케이션 트래픽을 관리, 추적 및 보안성을 강화하기 위해 플랫폼 레이어에 구성되는 네트워크 제어 방법

 

2. 마이크로 서비스와 서비스 매쉬

2.1 프록시

MSA 구조의 경우 수 백, 수 천개 이상의 서비스가 존재 할 수있으며, 서비스 → 서비스 호출 시 장애 전파 현상으로 원인을 찾기가 어려움. B Service에 장애가 날 경우, A Service에서도 응답을 제대로 받지 못해 장애가 전파 됨.

서비스 앞에 프록시를 이용하여 트래픽을 네트워크 단에서 통제 할 수 있다. 프록시에서 메시지 헤더를 보고 원하는 대상으로 라우팅(지능형 라우팅)을 할 수 있다.

ex. Client 필드가 Android이면, 안드로이드 서비스로 라우팅

 

 

 

 

서비스 수에 따라 프록시 수도 증가하기 때문에 프록시 설정이 어려워지며, 설정 정보를 중앙 집중화된 컨트롤러가 통제하는 구조를 취할 수 있다.

 

 

 

출처) https://bcho.tistory.com/1293

 

3. 서비스매시 솔루션

3.1 istio vs linkerd

  • 서비스 매시를 구현하기 위해서는 사이드카 프록시가 필요하다.
  • istio 등장으로 서비스 매시 개념이 전파되었으며, 유연하고 범용적인 프록시인 엔보이를 사용한다. 엔보이는 인그레스, 이그레스, 서비스메시 사이트가 등 다양한 방법으로 사용할 가능하여 보다 복잡하고 사용이 까다롭다.
  • linkerd 에서는 linkerd2-proxy라는 프록시를 사용하며, 엔보이보다 가볍고 사용하기 쉽다.
  • 엔보이는 오버플로우에 취약한 C++로 작성되었으며, linkerd2-proxy는  메모리 안전성이 특징인 Rush로 작성되어 보안적으로 유리할 것이라고 한다.
  • linkerd가 istio 보다 리소스 사용량이 훨씬 적으며, 네트워크 지연도 적게 발생.
  • 아래 글을 보면 아키텍처 및 태생 언어에 대한 이유로  istio에 비해 linkerd가 더 작고 빠르고 보안에 뛰어나다고 한다.

 

 

4. Linkerd(링커디) 설치 및 사용법

4.1 Install the CLI

curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh

# Add the linkerd CLI to your path
export PATH=$PATH:/root/.linkerd2/bin

# linkerd version
Client version: stable-2.13.5
Server version: unavailable

4.2 Validate your Kubernetes cluster

root@edu03-master1:~# linkerd check --pre
kubernetes-api
--------------
√ can initialize the client
√ can query the Kubernetes API

kubernetes-version
------------------
√ is running the minimum Kubernetes API version

pre-kubernetes-setup
--------------------
√ control plane namespace does not already exist
√ can create non-namespaced resources
√ can create ServiceAccounts
√ can create Services
√ can create Deployments
√ can create CronJobs
√ can create ConfigMaps
√ can create Secrets
√ can read Secrets
√ can read extension-apiserver-authentication configmap
√ no clock skew detected

linkerd-version
---------------
√ can determine the latest version
√ cli is up-to-date

Status check results are √

4.3 Install Linkerd onto your cluster

linkerd install --crds | kubectl apply -f -

linkerd install | kubectl apply -f -
root@edu03-master1:~# kubectl -n linkerd get pod
NAME                                      READY   STATUS    RESTARTS   AGE
linkerd-destination-8554fb9f7f-gglc7      4/4     Running   0          84s
linkerd-identity-8476c4dd4-grpfl          2/2     Running   0          85s
linkerd-proxy-injector-66875b9fd6-fpvqh   2/2     Running   0          84s


linkerd check

4.4 Install the demo app

(1) Emojivoto 데모 애플리케이션 설치

 - Emojivoto is a simple standalone Kubernetes application that uses a mix of gRPC and HTTP calls to allow the user to vote on their favorite emojis.

 - Install Emojivoto into the emojivoto namespace by running:

$ curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/emojivoto.yml \
  | kubectl apply -f -
  
  
$ kubectl -n emojivoto edit svc web-svc
  Change ServiceType : ClusterIP -> NodePort 
  
  
$ kubectl -n emojivoto get svc | grep web-svc
web-svc      NodePort    10.233.4.174            80:31873/TCP        5m13s

 

(2) 브라우저 접속 - http://192.168.110.31:31873/

 

(3) 도넛 이모지에 투표 할 경우, 404 에러 발생

 
 

(4) linkerd inject 수행

  • linkerd-proxy라는 이름의 사이트카 프록시 컨테이너 생성
  • inject 해도 서비스에 변경은 없으며, 사이드카 컨테이너가 추가 된 것을 볼 수 있다.
kubectl get -n emojivoto deploy -o yaml \
  | linkerd inject - \
  | kubectl apply -f -

 

 

 

 

4.5 linkerd 로 문제 파악하기

(1) 대시보드(viz extension) 설치

$ linkerd viz install | kubectl apply -f -


$ kubectl -n linkerd-viz get pod
NAME                           READY   STATUS    RESTARTS   AGE
metrics-api-6d69f7fbfb-vzmv2   2/2     Running   0          56s
prometheus-7ddcdc4b5c-wchs8    2/2     Running   0          55s
tap-55c8f8b67b-8nmvl           2/2     Running   0          55s
tap-injector-55ddf4746-brsjt   2/2     Running   0          53s
web-6fd5fdf594-xxjzz           2/2     Running   0          54s


$ linkerd check


$ kubectl -n linkerd-viz edit svc web
  Change ServiceType - ClusterIP to NodePort

 

 

(2) ingress 설정

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: web-ingress-auth
  namespace: linkerd-viz
data:
  auth: YWRtaW46JGFwcjEkbjdDdTZnSGwkRTQ3b2dmN0NPOE5SWWpFakJPa1dNLgoK
---
# apiVersion: networking.k8s.io/v1beta1 # for k8s < v1.19
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web-ingress
  namespace: linkerd-viz
  annotations:
    nginx.ingress.kubernetes.io/upstream-vhost: $service_name.$namespace.svc.cluster.local:8084
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header Origin "";
      proxy_hide_header l5d-remote-ip;
      proxy_hide_header l5d-server-id;      
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: web-ingress-auth
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required'
spec:
  ingressClassName: nginx
  rules:
  - host: dashboard.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: web
            port:
              number: 8084
kubectl apply -f viz-ingress.yml

root@edu03-master1:~# kubectl -n ingress-nginx get svc
NAME                                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             NodePort    10.233.27.166   <none>        80:32235/TCP,443:30030/TCP   7m17s
ingress-nginx-controller-admission   ClusterIP   10.233.19.173   <none>        443/TCP                      7m17s

 

(3) 브라우저 접속 - https://dashboard.example.com:30030/

  • hosts 파일 수정
  • protects it with basic auth using admin/admin

 

 

(4) 도넛 이모지에 투표하면(404에러 발생 시) SR(Success Rate)가 내려가는 것을 볼 수 있음.

  • deploy/emoji SR 100%이고, deploy/voting 이 100%가 아니기 때문에, deploy/web에서 voting 기능 일부 요청이 실패한 것으로 추측할 수 있다.
  • 의존성이 있는 deploy 요청 실패는 웹이 반환하는 오류의 원인 일 수 있다.
 
 

(5) 위 캡처 중 [LIVE CALLS] 항목이 나오지 않은 이유는 linkerd 설치 후 서비스 파드가 재기동 되지 않았기 때문이며, 서비스 파드 재기동 후 아래와 같이 Path가 보인다.

  • [LIVE CALLS] 내용 중 호출 된 URL을 보면 deploy/voting 서비스로 POST 메서드로 /emojivoto.v1.VotingService/VoteDoughnut 패스를 요청하는 부분에서 Success Rate가 0인 것을 확인 할 수 있다.

 

 

 

 

참고) https://github.com/linkerd/linkerd2

 

 

 

 

 

'DevOps' 카테고리의 다른 글

Harbor_Registry  (1) 2022.12.28
소프트웨어 스택  (0) 2022.11.08
[GateKeeper] K8s 정책제어  (0) 2022.10.13
[DevOps] ArgoCD 구축/테스트  (0) 2022.10.11

https://musclebear.tistory.com/69

'Linux' 카테고리의 다른 글

MTU Ping Test  (0) 2023.04.24
ssh 터널링  (0) 2023.04.05
dd 명령어  (0) 2023.03.22
[Ansible] Ubuntu Password 일괄 변경  (0) 2023.03.21
[Ubuntu] 20.04 커널버전 업그레이드  (0) 2023.03.20

 

 

 

스테이징 호스트 장비, 스토리지망 인터페이스 설정 : MTU 9000
root@brighforest:~# ifconfig br2
br2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
...





스토리지 서버 Ping 테스트


1. MTU 1500 테스트 - 정상 응답
root@brighforest:~# ping -M do -s 1472 xxx.xxx.xxx.96
PING xxx.xxx.xxx.96 (xxx.xxx.xxx.96) 1472(1500) bytes of data.
1480 bytes from xxx.xxx.xxx.96: icmp_seq=1 ttl=64 time=0.163 ms
1480 bytes from xxx.xxx.xxx.96: icmp_seq=2 ttl=64 time=0.213 ms
1480 bytes from xxx.xxx.xxx.96: icmp_seq=3 ttl=64 time=0.229 ms




2. MTU 1600 테스트 - 정상 응답 안 함
root@brighforest:~# ping -M do -s 1600 xxx.xxx.xxx.96
PING xxx.xxx.xxx.96 (xxx.xxx.xxx.96) 1600(1628) bytes of data.
...



3. MTU 9000 테스트 - 정상 응답 안 함
root@brighforest:~# ping -M do -s 8972 xxx.xxx.xxx.96
PING xxx.xxx.xxx.96 (xxx.xxx.xxx.96) 8972(9000) bytes of data.
...
 
 
참고)
https://blog.naver.com/PostView.naver?blogId=jesstter&logNo=222077975245
 

 

+ Recent posts