[SpringCloudAlibaba] Nacos サービス登録および設定センターが nginx ロードと連携します

概要

Nacos: 動的ネーミングおよび構成サービス
Nacos = Eureka+Config +Bus
Nacos は、登録センター + 構成センターの組み合わせであり、
クラウド ネイティブ アプリケーションの構築を容易にする動的なサービス検出、構成管理、およびサービス管理プラットフォームです。

公式サイト
https://github.com/alibaba/Nacos
https://nacos.io/zh-cn/index.html
https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/春 -cloud-alibaba.html#_spring_cloud_alibaba_nacos_discovery

登録センター

POM

親モジュール

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.1.0.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

このモジュール

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

YML

server:
  port: 9001

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

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

スタートアップクラス

@EnableDiscoveryClient

キャップ

C は、すべてのノードが同時に見るデータが一貫していることを意味し、A の定義は、すべてのリクエストが応答を受け取ることです。

どのモードを使用するかをいつ選択しますか?
一般に、
サービス レベル情報を保存する必要がなく、サービス インスタンスが nacos-client を通じて登録され、ハートビート レポートを維持できる場合は、AP モードを選択できます。Spring クラウドや Dubbo サービスなど、現在主流のサービスはすべて AP モードに適していますが、AP モードではサービスの可能性を考慮して一貫性が弱くなるため、AP モードは一時的なインスタンスの登録のみをサポートします。

サービス レベルで構成情報を編集または保存する必要がある場合は、CP が必要です。K8S サービスと DNS サービスは CP モードに適しています。
CP モードは永続インスタンスの登録をサポートしています。このとき、Raft プロトコルはクラスターの動作モードとして使用されます。このモードでは、インスタンスを登録する前にサービスを登録する必要があります。サービスが存在しない場合は、エラーが返されます。 。

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

構成センター

POM

<!--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>

YML

Nacos は springcloud-config と同じです。プロジェクトを初期化するときは、まず構成センターから構成をプルする必要があります。構成を
プルした後でのみ、プロジェクトの正常な起動が保証されます。
スプリングブートでの設定ファイルのロードには優先順位があり、ブートストラップはアプリケーションよりも優先されます。

#bootstrap
# 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格式的配置
spring:
  profiles:
    active: dev # 表示开发环境

スタートアップクラス

@EnableDiscoveryClient

ConfigClientController

@RefreshScope //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。
public class ConfigClientController
{
    
    
    @Value("${config.info}")
    private String configInfo;

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

ナコスのマッチングルール

ここに画像の説明を挿入します

${
    
    spring.application.name}-${
    
    spring.profiles.active}.${
    
    spring.cloud.nacos.config.file-extension}

構成をロードするための 3 つのオプション

  1. データIDスキーム
  2. グループプラン
  3. 名前空間スキーム

三人の関係は

ここに画像の説明を挿入します

ブートストラップ.yml

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

アプリケーション.yml

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

スタートアップクラス

@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377
{
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(NacosConfigClientMain3377.class, args);
    }
}

クラスターの展開

概要

公式 Web サイト:
https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
公式 Web サイトのアーキテクチャ図 実際のモードには、
ここに画像の説明を挿入します
デフォルトで組み込みデータベース derby が付属しています
https://github.com/alibaba /nacos /blob/develop/config/pom.xml

展開モード

  1. スタンドアロン モード - テスト用
  2. クラスターモード - 高可用性
  3. マルチクラスターモード - 複数のデータセンター

derbyをmysqlに変更する

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
db.user=root
db.password=123456

構成

クラスタ.conf

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
この IP を 127.0.0.1 として書き込むことはできません。Linux コマンド hostname -i で認識できる IP である必要があります。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

Nacos 起動スクリプトのstartup.sh を編集して、別の起動ポートを受け入れられるようにします。

./startup.sh -p 3333 は、ポート番号 3333 で nacos サーバー インスタンスを起動することを意味します。これは、前の手順のcluster.conf 構成と一致します。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

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;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
    
    
            #root   html;
            #index  index.html index.htm;
            proxy_pass http://cluster;
        }
        .......省略

ここに画像の説明を挿入します
現時点では、1 Nginx + 3 nacos 登録センター + 1 mysql

テスト

yml

server:
  port: 9002

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        #配置Nacos地址
        #server-addr: localhost:8848
        # 换成nginx的1111端口,做集群
        server-addr: 192.168.111.144:1111


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

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_45742250/article/details/132408891