알 리 바 바 는 Nacos 를 바탕 으로 환경 격 리 실천 을 실현 했다.

Nacos 0.9 버 전이 발표 되면 서 Nacos 는 정식 생산 버 전 (GA) 에 한 걸음 더 가 까 워 졌 다. 사실은 많은 기업 들 이 이미 생산 에 들 어 갔다. 예 를 들 어 덧니 생방송 이다.
이번 주 수요일 (오늘), 저녁 19: 00 ~ 21: 00 에 Nacos 못 군 (군 번호: 21708933) 에서 Nacos 1.0.0 의 모든 발표 특성 에 대한 미리 보기 및 업그레이드 및 사용 에 대한 지 도 를 생 중계 합 니 다.
Nacos 환경 격 리
일반적으로 기업 이 연구 개발 하 는 절 차 는 다음 과 같다. 먼저 환경 개발 과 테스트 기능 을 테스트 한 다음 에 그 레이스 케 일 을 테스트 한 다음 에 생산 환경 에 발표 하 는 것 이다.또한 생산 환경의 안정 을 위해 테스트 환경 과 생산 환경 을 격 리 시 켜 야 한다. 이때 반드시 문제 가 발생 하 는 것 은 다 환경 문제 이다. 즉,
  • 여러 환경의 데 이 터 는 어떻게 격 리 합 니까?
  • 어떻게 우아 하 게 격 리 합 니까?(사용자 가 변경 할 필요 가 없습니다)
  • 본 고 는 Nacos 환경 격 리 에 대해 아 리 의 이 방면 에서 의 실천 경험 을 소개 할 것 이다.
    환경 이란 무엇 인가?
    환경 격 리 라면 먼저 환경 이 무엇 인지 정의 해 야 한다.
    환경 이라는 단 어 는 아직 비교적 통 일 된 정의 가 없다. 어떤 회 사 는 환경 이 라 고 부 르 고 아 리 운 에 서 는 region 이 라 고 부 르 며 Kubernetes 구조 에서 namespace 라 고 부른다.본 고 는 환경 은 논리 적 으로 나 물리 적 으로 독립 된 전체 시스템 으로 이 시스템 에는 사용자 의 요 구 를 처리 하 는 모든 구성 요소 가 포함 되 어 있다 고 주장 한다. 예 를 들 어 게 이 트 웨 이, 서비스 프레임 워 크, 마이크로 서비스 등록 센터, 배치 센터, 메시지 시스템, 캐 시, 데이터 베이스 등 은 분 류 를 가리 키 는 요 구 를 처리 할 수 있다.
    예 를 들 어 많은 사이트 에서 사용자 ID 라 는 개념 이 있 고 사용자 ID 에 따라 구분 할 수 있 으 며 사용자 ID 는 짝수 로 끝 나 는 요청 은 모두 시스템 으로 처리 되 고 홀수 로 끝 나 는 요청 은 다른 시스템 으로 처리 된다.아래 그림 과 같다.우리 가 여기 서 말 하 는 환경 격 리 는 물리 적 격 리, 즉 서로 다른 환경 은 서로 다른 기계 군집 을 가리킨다.
    환경 격 리 가 무슨 소 용이 있 습 니까?
    이전 절 은 사용자 가 요청 한 모든 구성 요 소 를 처리 하 는 시스템 을 포함 하여 지정 한 유형의 요청 을 처리 하 는 환경의 개념 을 정의 했다.이 절 은 여러분 과 환경 격 리 가 어떤 좋 은 점 이 있 는 지 토론 합 시다.개념의 정 의 를 통 해 알 수 있 듯 이 환경 격 리 는 적어도 세 가지 장점 이 있다. 고장 격 리, 고장 회복, 그 레이스 케 일 테스트 이다.
    고장 격 리
    우선, 환경 은 사용자 가 요청 한 독립 구성 요소 유닛 이기 때문에 사용자 가 요청 한 처리 링크 가 얼마나 길 어도 지정 한 기계 클 러 스 터 에서 벗 어 나 지 않 습 니 다.이 부분 기계 가 고장 나 더 라 도 일부 사용자 에 게 영향 을 주어 고장 을 지 정 된 범위 내 에서 격 리 시 킬 뿐이다.만약 에 우리 가 사용자 id 에 따라 모든 기 계 를 10 개의 환경 으로 나 누 면 한 환경 에 문제 가 생기 면 사용자 에 대한 영향 은 10 분 의 1 로 낮 아 지고 시스템 의 가용성 을 크게 향상 시 킬 것 이다.
    고장 복구
    환경 격 리 의 또 다른 중요 한 장점 은 고장 을 신속하게 회복 할 수 있다 는 것 이다.특정한 환경의 서비스 에 문제 가 발생 하면 다음 설정 을 통 해 사용자 가 요청 한 경로 방향 을 바 꾸 고 요청 경 로 를 다른 환경 으로 이동 시 켜 초 단위 고장 회복 을 실현 할 수 있 습 니 다.물론 이것 은 강력 한 분포 식 시스템 지원 이 필요 합 니 다. 특히 강력 한 설정 센터 (예 를 들 어 Nacos) 는 규칙 설정 데 이 터 를 전체 네트워크 의 응용 프로 세 스 로 빠르게 전송 해 야 합 니 다.
    그 레이스 케 일 테스트
    그 레이스 케 일 테스트 는 연구 개발 절차 에서 없어 서 는 안 되 거나 없어 서 는 안 되 는 부분 이다.전통 적 인 연구 개발 절차 에서 테스트 와 그 레이스 케 일 부분 은 학생 들 이 다양한 설정 을 해 야 한다. 예 를 들 어 host 연결, jvm 파라미터 설정, 환경 변수 등 이 비교적 번거롭다.다년간 의 실천 을 통 해 알 리 바 바 내부 의 테스트 와 그 레이스 케 일 은 개발 과 테스트 에 매우 우호 적 이 고 환경 격 리 기능 을 통 해 지 정 된 기계 클 러 스 터 처 리 를 요구 하 며 개발 과 테스트 는 어떠한 배치 도 하지 않 아 도 연구 개발 효율 을 크게 향상 시 켰 다.
    Nacos 는 환경 격 리 를 어떻게 합 니까?
    앞의 두 절 은 환경의 개념 과 환경 격 리 의 역할 에 대해 이 절 은 Nacos 를 바탕 으로 환경의 격 리 를 실현 하 는 방법 을 소개 했다.
    Nacos 는 알 리 바 바 중간 부품 부서 의 소프트 부하 팀 에서 태 어 났 다. 환경 격 리 를 실천 하 는 과정 에서 우 리 는 Nacos 를 바탕 으로 여러 개의 물리 적 군집 을 격 리 하 는 동시에 Nacos 클 라 이언 트 가 어떠한 코드 변경 도 하지 않 아 도 환경의 자동 경 로 를 실현 할 수 있다.
    시작 하기 전에 우 리 는 먼저 제약 을 한다.
  • 한 대의 기계 에 배 치 된 응용 은 모두 한 환경 에 있다.
  • 하나의 응용 프로 세 스 에서 기본 적 인 상황 에서 한 환경 만 연결 하 는 Nacos;
  • 특정한 수단 을 통 해 클 라 이언 트 가 있 는 기계 IP 를 얻 을 수 있다.
  • 사용 자 는 기계 의 네트워크 에 대해 계획 이 있다.

  • 기본 원 리 는:
  • 네트워크 에서 32 비트 의 IPV 4 는 많은 네트워크 로 나 눌 수 있다. 예 를 들 어 192.168.1.0 / 24 이 고 보통 중대 형 기업 들 은 네트워크 계획 을 가지 고 일정한 용도 에 따라 네트워크 를 나눈다.우 리 는 이 원 리 를 이용 하여 환경 격 리 를 할 수 있다. 즉, 서로 다른 네트워크 의 IP 는 서로 다른 환경 에 속한다. 예 를 들 어 192.168.1.0 / 24 는 환경 A 에 속 하고 192.168.2.0 / 24 는 환경 B 에 속한다.
  • Nacos 는 클 라 이언 트 인 스 턴 스 를 초기 화 하 는 두 가지 방식 이 있 는데 하 나 는 클 라 이언 트 Nacos 서버 에 직접 알려 주 는 IP 이다.다른 하 나 는 클 라 이언 트 에 게 Endpoint 를 알려 주 는 것 입 니 다. 클 라 이언 트 는 HTTP 를 통 해 Endpoint 에 요청 하여 Nacos 서버 의 IP 목록 을 조회 합 니 다.여기 서 우 리 는 두 번 째 방식 으로 초기 화 를 한다.
  • Endpoint 의 기능 을 강화 합 니 다.Endpoint 엔 드 에서 네트워크 와 환경의 매 핑 관 계 를 설정 합 니 다. Endpoint 는 클 라 이언 트 의 요청 을 받 은 후에 클 라 이언 트 의 소스 IP 소속 네트워크 에 따라 이 클 라 이언 트 의 소속 환경 을 계산 한 다음 에 해당 하 는 환경의 IP 목록 을 찾 아 클 라 이언 트 에 게 되 돌려 줍 니 다.다음 그림
  • 환경 격 리 server 의 예제
    위 에서 IP 단 을 바탕 으로 환경 격 리 를 하 는 제약 과 기본 원 리 를 말 했 는데 어떻게 주소 서버 를 실현 할 수 있 습 니까?가장 간단 한 방법 은 nginx 를 바탕 으로 nginx 의 geo 모듈 을 이용 하여 IP 엔 드 와 환경의 매 핑 을 한 다음 에 nginx 를 이용 하여 정적 파일 내용 을 되 돌려 주 는 것 입 니 다.
  • nginx 설치 http://nginx.org/en/docs/install.html
  • nginx - proxy. conf 에 geo 맵 을 설정 합 니 다. 여기
    geo $env {
      default        "";
      192.168.1.0/24 -env-a;
      192.168.2.0/24 -env-b;
    }
  • 를 참고 하 십시오.
  • nginx 루트 경로 와 퍼 가기 규칙 을 설정 합 니 다. 여 기 는 정적 파일 의 내용 만 간단하게 되 돌려 주 십시오.
    #  http        
    root                    /tmp/htdocs;
    
    #  server     
    location / {
      rewrite ^(.*)$  /$1$env break;
    }
  • Nacos 서버 IP 목록 설정 파일 을 설정 하고 / tmp / hotdocs / nacos 디 렉 터 리 에 환경 명 으로 끝 나 는 파일 을 설정 합 니 다. 파일 내용 은 IP 이 고 한 줄 한 줄
    $ll /tmp/hotdocs/nacos/
    total 0
    -rw-r--r-- 1 user1 users 0 Mar  5 08:53 serverlist
    -rw-r--r-- 1 user1 users 0 Mar  5 08:53 serverlist-env-a
    -rw-r--r-- 1 user1 users 0 Mar  5 08:53 serverlist-env-b
    
    $cat /tmp/hotdocs/nacos/serverlist
    192.168.1.2
    192.168.1.3
  • 입 니 다.
  • 검증
  • curl 'localhost:8080/nacos/serverlist'
    192.168.1.2
    192.168.1.3

    이로써 IP 네트워크 에 따라 환경 격 리 를 하 는 간단 한 예제 가 작 동 할 수 있 습 니 다. 서로 다른 네트워크 의 nacos 클 라 이언 트 는 서로 다른 Nacos 서버 의 IP 목록 을 자동 으로 가 져 와 환경 격 리 를 실현 합 니 다.이런 방법의 장점 은 사용자 가 어떠한 매개 변 수 를 설정 할 필요 가 없다 는 것 이다. 각 환경의 코드 와 설정 은 같 지만 바 텀 서 비 스 를 제공 하 는 학생 들 이 네트워크 계획 과 관련 설정 을 잘 해 야 한 다 는 것 이다.
    총결산
    본 고 는 환경 격 리 의 개념, 환경 격 리 의 세 가지 장점 과 Nacos 가 어떻게 네트워크 를 바탕 으로 환경 격 리 를 하 는 지 간단하게 소개 했다.마지막 으로 Nginx 를 기반 으로 Endpoint 서버 의 환경 격 리 설정 예 시 를 보 여 주 었 습 니 다.주의해 야 할 것 은 본 고 는 실행 가능 한 방법 만 제시 하고 더욱 우아 한 실현 방법 이 있 는 것 을 제외 하지 않 는 다 는 것 이다. 만약 에 여러분 이 더 좋 은 방법 이 있다 면 Nacos 커 뮤 니 티 나 홈 페이지 공헌 방안 에 오신 것 을 환영 합 니 다.
    본 고의 저자: 정기, GitHub ID @ jianweiwang, Nacos 의 개발 과 지역사회 유지, 알 리 바 바 고급 개발 엔지니어.
    본문 저자: 중간 부품 작은 형
    원문 을 읽다
    본 고 는 운 서 지역사회 의 오리지널 내용 으로 허락 없 이 전재 할 수 없다.

    좋은 웹페이지 즐겨찾기