Nacosの紹介

2023-07-31 12:05:11

Vueの基本概念 SVGの使い方

目次

  1. Nacos の紹介
    1. Nacos 概要
    2. 登録サービス
    3. 外部 mysql の統合 (単一ノード)
    4. Nacos クラスターのデプロイメント
    5. 考えられる問題

Nacos の紹介

背景: マイクロサービス プロジェクト内の異なるモジュール間でサービス呼び出しを実装する必要がある場合、サービスの登録と検出を実装するにはどうすればよいでしょうか?

1. Nacos 概要

1.1 Nacosとは

Nacos は Alibaba が立ち上げた新しいオープンソース プロジェクトで、クラウド ネイティブ アプリケーションの構築を容易にする動的なサービス検出、構成管理、およびサービス管理プラットフォームです。

Nacos は、マイクロサービスの検出、構成、管理を支援することに専念しています。Nacos は、動的なサービス検出、サービス構成、サービス メタデータ、およびトラフィック管理を迅速に実装するのに役立つ一連の使いやすい機能セットを提供します。

Nacos は、マイクロサービス プラットフォームをより機敏かつ簡単に構築、配信、管理するのに役立ちます。Nacos は、 「サービス」中心の最新のアプリケーション アーキテクチャ (マイクロサービス パラダイム、クラウド ネイティブ パラダイムなど)を構築するためのサービス インフラストラクチャです。

Nacos は次のコア機能をサポートしています。

1) サービス ディスカバリ: DNS および RPC サービス ディスカバリをサポートし、ネイティブ SDK や OpenAPI などのさまざまなサービス登録メソッド、および DNS、HTTP、API などのさまざまなサービス ディスカバリ メソッドも提供します。
2) サービスの健全性の監視: Nacos はサービスのリアルタイムの健全性チェックを提供し異常なホストやサービス インスタンスにリクエストが送信されるのを防ぎます。
3) 動的構成サービス: Nacos は、すべての環境のアプリケーション構成とサービス構成を集中的かつ外部かつ動的に管理できる統合構成管理機能を提供します。4) 動的 DNS サービス: Nacos は、動的 DNS サービス ウェイト ルーティングをサポートしています。これにより、中間層の負荷分散、より柔軟なルーティング戦略、トラフィック制御、およびデータ センターのイントラネット向けのシンプルな DNS 解決サービスを簡単に実装できます。 。5) サービスとメタデータの管理: Nacos は、管理サービスの説明、ライフサイクル、サービスの静的依存関係分析、サービスの健全性ステータス、サービスのトラフィック管理、ルーティングとセキュリティ ポリシー、サービスの SLA、そして最も重要な metrics 統計。
 

1.2 共通登録センター

  1. Eureka (ネイティブ、2.0 でボトルネックが発生、メンテナンスを停止)
  2. Zookeeper (サポートされている、プロフェッショナルなスタンドアロン製品。例: dubbo)
  3. Consul (ネイティブ、GO 言語開発)
  4. Nacosは Spring Cloud
    Eurekaよりも強力です
    Nacos = Spring Cloud Eureka + Spring Cloud Config
    Nacos はSpring、Spring Boot、Spring Cloud と統合でき、Spring Cloud Eureka、Spring Cloud Config を置き換えることができます。 。
  • Nacos Server および spring-cloud-starter-alibaba-nacos-config を通じて動的な構成変更を実現します
  • Nacos Server および spring-cloud-starter-alibaba-nacos-discovery を通じてサービスの登録と検出を実現します

: nacos と eureka の違い (簡単な紹介)
1) nacos と eureka の範囲は異なります、Nacos のしきい値はすべてのサービスではなく、特定の Service に対するものですが、Eureka の自己保護しきい値はすべてのサービスに適用されます。nacos は CP と AP の両方をサポートしますが、 eureka は AP のみをサポートしますnacos は、長い接続であるnetty を使用します。eureka は、定期的に送信される短い接続です。
2) Eureka 保護方式: 短期間で契約更新失敗の割合をカウントし、一定の閾値に達すると自己保護機構が発動し、 Eureka Server が排除することはありません。マイクロサービスの場合は、正常になるまで待ってから、自己保護メカニズムを終了します。自己保護スイッチ (eureka.server. enab1e-self-preservation:false)
Nacos 保護方法:ドメイン名の正常なインスタンス (Instance) と総サービス インスタンス (Instance) の比率が異なる場合がしきい値未満の場合インスタンス (Instance) が正常であるかどうかに関係なく、インスタンス (Instance) がクライアントに返されます。この方法で一部のトラフィックが失われますが、クラスターの残りの正常なインスタンス (Instance) が正常に動作できることが保証されます。

1.3 Nacosの構造図

1.4 Nacosのダウンロードとインストール

1) ソフトウェア環境
Nacos バージョン: 2.0.4
mysql バージョン: 5.7

2) インストールと転送手順
ここでは、docker を使用して nacos (シングルノード) に転送します。
注: -e MODE=standaloneを起動するときに、この環境設定を構成する必要があることに注意してください。それ以外の場合は、デフォルトの起動で 1 が占有されます。 G のメモリ

1. まずイメージ
コマンドをプルします: docker pull nacos/nacos-server:v2.0.4
2. コンテナ
コマンドを実行します: docker run --name nacos(コンテナ名) -d - p 8848 (外部アクセス ポート): 8848 (コンテナ ポート) -p 9848:9848 -
p 9849:9849 --privileged=true --restart=always -e JVM_XMS=256 m -e JVM_XMX=256m -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /home/nacos/logs (データボリュームのホストアドレス) :/home/nacos/logs (データボリュームコンテナの内部アドレス) -v /home/nacos/conf:/home/nacos/conf ea54f31c46e4 (コンテナID)

3) コンテナが起動しているか確認する

コマンド: docker ps


4) コンテナ関連のログを表示する

コマンド: docker logs --since 10m nacoscontainerid #指定されたコンテナーの出力ログを表示します



: ログを確認し、以下のスクリーンショットに示すようなエラーを見つけて、



ログ ファイルが見つからないことを証明する場合は、次の内容をホスト構成ファイル ディレクトリに追加できます。
1) 新しいファイル nacos-logback を作成します。 xml を作成し、対応する保存された構成をホスト ファイル ディレクトリにマウントし、以下の構成を追加します;
2) log.path の value 構成は、ログ データ ボリュームがマウントされているディレクトリと一致している必要があることに注意してください。


<configuration debug="false" scan="true" scanPeriod="1 seconds">
    <contextName>logbackcontextName>
    <property name="log.path" value="/home/nacos/logs/logback.log" />
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
              <level>ERRORlevel>
        filter>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
            pattern>
        encoder>
    appender>
 
    <appender name="file"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zipfileNamePattern>
        rollingPolicy>
 
        <encoder>
            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
            pattern>
        encoder>
    appender>
 
    <root level="debug">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    root>
 
    <logger name="com.example.logback" level="warn" />
 
configuration>

5)マシンにアクセスします IP アドレス: 8848/nacos



: 対応するポートの
ログイン アカウントを開くことを忘れないでください。 ログイン パスワード
nacos nacos



2. 登録サービス

1.1 nacosの統合

依存関係を導入する

        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>

対応するモジュールの設定ファイルに nacos 設定を追加します

#サービス名(nacos上にサービス名が表示されます)
spring.application.name=サービス名
# nacosサービスアドレス
spring.cloud.nacos.discovery.server-addr=ip:ポート


スタートアップクラスにアノテーションを追加する

2.2 サービスを再起動して確認する

サービスを再起動し、nacosページにログインして確認してください(下図はサービスがnacosに正常に登録されていることを示しています)
 

3. 外部 mysql の統合 (単一ノード)

3.1 データベースとテーブルの構築

内部のコンテンツに基づいてテーブル リンクを直接作成できます。

: nacos バージョンに対応するテーブルの作成には問題が発生する可能性があります。

3.2 データボリュームからマウントされた nacos 構成を変更する

路面を保存するデータ量を入力します

ここで、nacos 設定はホスト マシンの /home/nacos/conf に保存されます。



次の内容を変更し、



Nacos を再起動して確認するだけです。
関連情報を再度作成し、サービスを再起動すると、情報はまだ存在します。

4. Nacos クラスターのデプロイメント

以前に構築した nacos は standalone (シングルノード モード) です。nacos はクラスターのデプロイメントをサポートしています。クラスターのデプロイメントには単一ノードを使用するのが最善です (ここには投票メカニズムがあるため)。マシンが 2 つしかないためです。ここでは、2 台のマシンをデプロイする方法のみを説明します。

1. docker を使用して、異なるサーバー上で 2 つの nacos コンテナを実行します

: 2. x バージョンの nacos は、ポート 9848 と 9849 のマップされたポートを開く必要があります。

以下はコマンドの例です。

docker run -d \
#  hostname
-e PREFER_HOST_MODE=nacos \
# シングルトン/クラスターモード
-e MODE=cluster \
# nacos clusterアドレス、ノードアドレス
-e NACOS_SERVERS="124.223.xx.xx:8848 106.52.xx.xx:8848" \
# mysqlを起動する
-e SPRING_DATASOURCE_PLATFORM=mysql \
# mysqlマスターノードhost
-e MYSQL_SERVICE_HOST=106.52.xx.xx \
#mysqlマスターノードポート
-e MYSQL_SERVICE_PORT=3306 \
# データベースのユーザー名
-e MYSQL_SERVICE_USER=root \
# データベースのパスワード
-e MYSQL_SERVICE_PASSWORD=123456 \
#名前データベース
-e MYSQL_SERVICE_DB_NAME=nacos_config_cluster \
# nacos サーバー IP (現在) をカスタマイズする
-e NACOS_SERVER_IP=106.52.xx.xx \
# マッピングポートを指定 8848 コンテナマルチマッピング 9848 9849 ポート
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
# コンテナ名
--name nacos-8848 \
--restart=always 
# マウント
-v /home/nacos/logs:/home/nacos/logs -v /home/nacos/conf:/home/nacos/conf  \
コンテナID

2. nacos コンソールを表示します (各ノードを通じて対応する情報を確認できます)

3. クラスターの紹介

leader ノード: トランザクション リクエストを担当します (トランザクション タイプ: 構成の作成、構成の変更、構成の削除)
follow ノード: 読み取り (クエリ リクエスト) を担当します
ダウンタイム: leader ノードがダウンしている場合、follow ノードが新しい leader ノードを投票します(従来の redis などとは異なり、follow は自動的に再選出され、選出のためにセンチネル メカニズムと同様のメカニズムを使用する必要はありません)

5. 考えられる問題

1.confをマウントできない

dockerを使用して実行する際、コンテナ内のconfをマウントすると、対応する設定ファイルが存在しないことが判明する

1) 最初にテスト nacos コンテナを実行します

 docker run -p 8848:8848 --name nacostest -d コンテナID

2) コンテナ内のファイルをコピーします。

# 設定ファイルのコピー
#最初のディレクトリはコンテナディレクトリで、2番目はホストディレクトリです
docker cp nacostest (コンテナ名):/home/nacos/logs/ /home/nacos/logs
docker cp nacostest (コンテナ名):/home/nacos/conf/ /home/nacos/conf

3) コンテナを強制的に閉じます

docker rm -f コンテナID

4) 次に、データ ボリューム マウント コマンドを含む起動コマンドを再実行します。

docker run コマンドの紹介

名前 説明 価値
MODE システム起動モード:cluster/standalonecluster/standalone デフォルトの cluster
NACOS_SERVERS クラスタアドレス p1:port1 スペース ip2:port2 スペース ip3:port3
PREFER_HOST_MODE IP またはドメイン名モードをサポート hostname/ip デフォルト ip
NACOS_SERVER_PORT Nacos ランニングポート デフォルト 8848
NACOS_SERVER_IP マルチNICモードでIPを指定可能  
SPRING_DATASOURCE_PLATFORM スタンドアロン モードでの MYSQL データベースのサポート mysql / 空 デフォルト: 空
MYSQL_SERVICE_HOST データベース接続アドレス  
MYSQL_SERVICE_PORT データベースポート デフォルト: 3306
MYSQL_SERVICE_DB_NAME データベース名  
MYSQL_SERVICE_USER データベースのユーザー名  
MYSQL_SERVICE_PASSWORD データベースユーザーのパスワード  
MYSQL_SERVICE_DB_PARAM データベース接続パラメータ デフォルト :
MYSQL_DATABASE_NUM データベース番号 デフォルト: 1
JVM_XMS -Xms デフォルト: 1g
JVM_XMX -Xmx デフォルト: 1g
JVM_XMN -Xmn デフォルト: 512m
JVM_MS -XX:MetaspaceSize デフォルト: 128m
JVM_MMS -XX:MaxMetaspaceSize デフォルト: 320m
NACOS_デバッグ リモート DEBUG y/n を有効にするかどうか デフォルト: n
TOMCAT_ACCESSLOG_ENABLED server.tomcat.accesslog.enabled デフォルト: false
NACOS_AUTH_SYSTEM_TYPE パーミッション システム タイプの選択。現在は nacos タイプのみをサポートしています デフォルト: nacos
NACOS_AUTH_ENABLE 許可システムを有効にするかどうか デフォルト: false
NACOS_AUTH_TOKEN_EXPIRE_SECONDS トークンの有効期限 デフォルト: 18000
NACOS_AUTH_TOKEN トークン デフォルト: SecretKey012345678901234567890123456789012345678901234567890123456789
NACOS_AUTH_CACHE_ENABLE 権限キャッシュの切り替え。権限キャッシュがオンになった後、権限キャッシュの更新にはデフォルトで 15 秒の遅延があります。 デフォルト: false
メンバーリスト 環境変数を使用してクラスターアドレスを設定します。 例: 192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809
EMBEDDED_ストレージ クラスター組み込みストレージモード embedded を有効にするかどうか デフォルト: none
NACOS_AUTH_CACHE_ENABLE nacos.core.auth.caching.enabled default : false
NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE nacos.core.auth.enable.userAgentAuthWhite default : false
NACOS_AUTH_IDENTITY_KEY nacos.core.auth.server.identity.key default : serverIdentity
NACOS_AUTH_IDENTITY_VALUE nacos.core.auth.server.identity.value default : security
NACOS_SECURITY_IGNORE_URLS nacos.security.ignore.urls default : /,/error,//*.css,//.js,/**/.html,//*.map,//.svg,/**/.png,//*.ico,/console-fe/public/,/v1/auth/,/v1/console/health/,/actuator/,/v1/console/server/