SpringCloud-Nacos 서비스 등록 및 구성 센터

다운로드 링크:
https://pan.baidu.com/s/1E9J52g6uW_VFWY34fHL6zA 추출 코드: vneh

Spring Cloud Alibaba 서비스 등록 및 구성 센터(매우 상세)

jNacos 설치 디렉토리 아래에 bin 디렉토리를 입력하고 cmd를 입력한 다음 Nacos를 독립 실행형 모드로 시작합니다.

startup.cmd -m standalone

Nacos 인터페이스( http://localhost:8848/nacos) 를 방문하십시오.

서비스 제공업체 구축 및 Nacos 등록

pom.xml에 종속성 추가

        <!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

구성 파일에 추가됨

spring:
  application:
    name: nacos-payment-provider # 服务的名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址

management:
  endpoints:
    web:
      exposure:
        include: '*'

시작 클래스에 주석 추가

@EnableDiscoveryClient // 开启 Nacos 服务发现功能
@SpringBootApplication
public class PaymentMain9001
{
    
    
    public static void main(String[] args) {
    
    
            SpringApplication.run(PaymentMain9001.class, args);
    }
}

컨트롤러 레이어

@RestController
public class PaymentController
{
    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/nacos/{id}")
    public String getPayment(@PathVariable("id") Integer id)
    {
        return "nacos registry, serverPort: "+ serverPort+"\t id"+id;
    }
}

프로젝트를 시작하고 서비스 목록을 보면 서비스 목록에 서비스가 추가된 것을 확인할 수 있습니다.
여기에 이미지 설명 삽입

서비스 소비자 구축, Nacos에 등록

종속성 소개

        <!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

구성 파일

spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848


#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider

시작 클래스에 주석을 답니다: @EnableDiscoveryClient

Ribbon은 Nacos에 통합되어 있으므로 Nacos는 로드 밸런싱을 자동으로 지원합니다.
여기에 이미지 설명 삽입
RestTemplate 구성 클래스를 정의하여 나머지 서비스를 호출하는 데 사용할 수 있습니다.

/**
 * @auther zzyy
 * @create 2020-02-23 14:45
 */
@Configuration
public class ApplicationContextConfig
{
    
    
    @Bean
    @LoadBalanced // 使用RestTemplate结合ribbon来做负载均衡的时候已经要加上这个注解
    public RestTemplate getRestTemplate()
    {
    
    
        return new RestTemplate();
    }
}

컨트롤러 레이어

@RestController
@Slf4j
public class OrderNacosController
{
    
    
    @Resource
    private RestTemplate restTemplate;

    @Value("${service-url.nacos-user-service}")
    private String serverURL;

    @GetMapping(value = "/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id)
    {
    
    
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }

}

프로젝트 시작
여기에 이미지 설명 삽입
: http://localhost:83/consumer/payment/nacos/13을 방문하여 효과를 확인
하고 9001과 9002가 번갈아 나타나는 것을 확인합니다.

구성 센터로서의 Nacos

종속성 추가

        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

구성 센터, 구성 센터로서의 Nacos에는 두 개의 구성 파일 bootstrap.yml 및 application.yml이 있습니다.

Nacos는 springcloud-config와 동일하며, 프로젝트 초기화 시 configuration center에서 먼저 configuration을 pull 했는지 확인해야 하며 , configuration을 pull 한 후에야 프로젝트를 정상적으로 시작할 수 있습니다.

springboot의 구성 파일 로딩은 순차적으로 우선 순위가 지정되며 부트 스트랩은 응용 프로그램보다 우선 순위가 높습니다.

bootstrap.yml

# nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      # 服务注册
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      # 作为服务配置的客户端
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置
        #group: DEV_GROUP
        #namespace: 7d8f0f5a-6a53-4785-9686-dd460158e5d4


# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yaml

# nacos-config-client-test.yaml   ----> config.info

application.yml

spring:
  profiles:
    active: dev # 表示开发环境
    #active: test # 表示测试环境
    #active: info

기본 시작 클래스에 주석을 답니다: @EnableDiscoveryClient

제어 장치

@RestController
@RefreshScope //支持Nacos的动态刷新功能。
public class ConfigClientController
{
    
    
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
    
    
        return configInfo;
    }
}

Nacos의 dataid 구성 형식 및 SpringBoot 구성 파일과의 일치 규칙

공식 문서

Nacos 추가 구성 파일
여기에 이미지 설명 삽입

여기에 이미지 설명 삽입
요약:
데이터 ID의 명명 규칙은 다음과 같습니다. 접미사 이름에 주의하여 yaml
여기에 이미지 설명 삽입
시작 프로젝트를 선택하고 http://localhost:3377/config/info를 방문하십시오.

Nacos는 동적 새로 고침과 함께 제공되며 , Nacos에서 nacos-config-client-dev.yaml의 구성 내용을 수정하면 찾은 요청의 결과도 반환됩니다.
여기에 이미지 설명 삽입

지금 프로필을 전환하려면

Nacos 구성에는 nacos-config-client-dev.yaml과 nacos-config-client-test.yaml 두 개의 파일이 있으며
차이점은 tets 및 dev와 다르다는 것입니다.
여기에 이미지 설명 삽입
구성 파일을 사용하려면 개발 환경의 Nacos 구성 중앙 모듈의 application.yml 구성 파일을 수정해야 합니다.
여기에 이미지 설명 삽입

Nacos 그룹 구성

그룹 구성은 다른 시나리오에서 동일한 구성 파일 이름을 사용하는 것입니다
.DataID 이름이 동일하고 그룹 이름이 다르며 동일한 구성 파일 이름이지만 동일한 그룹 아래에 있지 않습니다.
여기에 이미지 설명 삽입
다른 그룹에서 구성 파일을 사용하는 방법은 무엇입니까?
bootstrap.yml에서 구성 사용할 그룹화는 파일에 지정됩니다.

다음 두 구성의 조합은 DEV_GROUP 그룹 아래의 info 구성 파일을 찾는 것입니다.
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
효과: DEV_GROUP 그룹 아래의 info 구성 파일이 사용됨을 나타냅니다.
여기에 이미지 설명 삽입

Nacos 네임스페이스 구성


여기에 이미지 설명 삽입
네임스페이스에서 새 네임스페이스를 선택하고 네임스페이스 ID 서비스 목록 및 구성 목록에 두 개의 공간을 자동으로 더 생성할 수 있습니다
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
. 개발 공간에 두 개의 구성 파일을 추가합니다. DataID는 동일하지만
여기에 이미지 설명 삽입
bootstrap.yml에서 그룹화가 다릅니다. 구성 파일 그룹 구성 및 네임스페이스 구성 추가
네임스페이스: 네임스페이스를 지정하는 데 사용
여기에 이미지 설명 삽입
application.yml은 개발 환경을 지정
여기에 이미지 설명 삽입
합니다. 위의 두 구성은 네임스페이스 ID에서 TEST_GROUP 그룹을 찾습니다. 63fcd633-6d24-4dc8-b2ae-fdee979b0507 결과 의 dev 환경
:
여기에 이미지 설명 삽입
요약: 먼저 네임스페이스를 찾은 다음 그룹을 찾고 마지막으로 환경을 찾습니다.

Nacos 영구 구성

Nacos는 기본적으로 임베디드 데이터베이스 더비와 함께 제공됩니다.
여기에 이미지 설명 삽입
모든 Nacos는 더비 데이터베이스와 함께 제공됩니다.클러스터를 구축할 때 너무 많은 Nacos의 구성이 통합될 수 있는지 확인할 방법이 없습니다.

mysql 데이터베이스로 전환하도록 derby 구성

Nacos의 conf 디렉토리에 SQL 스크립트 파일이 있습니다. nacos-mysql.sql
여기에 이미지 설명 삽입
1. 새 데이터베이스 생성: nacos_config
2. 스크립트 파일 실행
3. conf/application.properties 파일을 수정하여 mysql 데이터 소스 구성에 대한 지원 추가 (현재 mysql만 지원) mysql 데이터 소스의 URL, 사용자 이름 및 비밀번호를 추가합니다.

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root

Nacos를 다시 시작하면 추가된 구성이 mysql 테이블에 추가됩니다.

Nacos 클러스터 구성

Nacos 2.0.3 Linux 시스템 클러스터 구축에 대한 자세한 튜토리얼
실제 프로덕션 환경에서는 Naco가 3개 이상 있어야 하며 하나만 있을 경우 단일 실패 지점이 발생하면 전체 서비스가 GG 클러스터를 직접 사용합니다
. 건축학:

  1. Nginx 클러스터
  2. 나코스 클러스터
  3. Mysql 클러스터(마스터-슬레이브 분리)

여기에 이미지 설명 삽입

Linux에서 Nacos 설치

nacos-server-2.1.0.tar.gz 다운로드 nacos-server-1.4.2.tar.gz
다운로드 /opt 아래에 새 mynacos 생성, nacos 클러스터 저장, nacos-server-2.1.0.tar.gz 업로드 mynacos, 압축 해제

tar -zxvf nacos-server-2.1.0.tar.gz 

여기에 이미지 설명 삽입

mysql 지속성에 해당하도록 nacos 구성

Nacos 데이터베이스 주소 구성: 새 데이터베이스 nacos-config 생성, config에서 sql 스크립트 실행,
application.properties 파일 수정, 추가

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root

Linux 서버의 Nacos 클러스터 구성 cluster.conf

여기에 이미지 설명 삽입

hostname -i 명령을 사용하여 머신의 실제 ip를 확인합니다.
이 ip는 127.0.0.1로 쓸 수 없습니다. Linux 명령 hostname -i로 인식할 수 있는 ip여야 합니다.
여기에 이미지 설명 삽입
3대의 머신을 클러스터로 설정하고, 포트는 각각 333, 444 및 555입니다
. cluster.conf* 파일을 편집하고 모든 콘텐츠를 삭제한 후 다음 콘텐츠를 추가합니다.

你的ip:333
你的ip:444
你的ip:555

클러스터 구축

application.properties 파일 수정 , mysql 구성 , cluster.conf
파일 수정 , 클러스터 포트 번호 구성 nacos_3333, nacos_4444, nacos_5555 세 지점을 복사 하고 application.properties 구성 파일의 server.port를 3333, 4444, 각각 5555 , 시작하려면 bin 디렉토리를 입력하십시오.


./startup.sh

시작이 성공한 후 프로세스를 보려면 명령을 실행하십시오.

ps -ef|grep nacos

여기에 이미지 설명 삽입

nginx 구성

nginx 구성 파일을 편집하고 다음을 추가합니다.

	upstream cluster{
		server 127.0.0.1:3333
		server 127.0.0.1:4444
		server 127.0.0.1:5555
	}
	
	server {
		listen 1111;
		server_name localhost;
		location / {
			proxy_pass http://cluster;
		}
	} 

nginx 다시 시작 ./nginx -c는 시작할 구성 파일을 지정합니다.

./nginx -c /www/server/nginx/conf/nginx.conf

공간 부족으로 Nacos 시작 실패

추천

출처blog.csdn.net/qq_44154912/article/details/125088346