Einführung in Nacos, Installations-, Bereitstellungs- und Konfigurationsprioritäten

Inhaltsverzeichnis

1. Was ist Nacos?

2. Nacos-Installation und Bereitstellung

Umweltvorbereitung

Installationsmethode

Laden Sie Nacos herunter

Datenbank initialisieren

Die Umgebung wechseln

Richten Sie eine MySQL-Datenquellenverbindung ein

Aktivieren Sie die Authentifizierung

Starten Sie den Server

Verifizierungsprotokoll

Anmeldung überprüfen

Fahren Sie den Server herunter

Konfigurieren Sie den systemctl-Verwaltungsdienst

Nacos-Konfigurationspriorität

Mehrere Prioritäten beim Laden der Konfiguration

Lokale Profilpriorität

Änderung der Priorität der Konfigurationsdatei


1. Was ist Nacos?

Der vollständige Name von Nacos/nɑ:kəʊs/ lautet Dynamic Naming and Configuration Service. Dabei handelt es sich um eine von Alibaba bereitgestellte Basisdienstplattform, die dynamische Diensterkennung, Konfigurationsverwaltung und Dienstverwaltung integriert. Service ist ein erstklassiger Bürger in der Nacos-Welt und bietet Funktionen wie Dienstregistrierung und -erkennung, Konfigurationsverwaltung, dynamische DNS-Dienste, Dienstmetadaten und Verkehrsverwaltung, um den Anforderungen von Microservice-Architekturen und Cloud-nativen Anwendungen gerecht zu werden.

Seine Hauptmerkmale sind wie folgt:

  1. Dienstregistrierung und -erkennung: Nacos unterstützt die Registrierung und Erkennung mehrerer Dienste, einschließlich DNS-basierter, RPC-basierter und K8s-basierter Diensterkennung.

  2. Dynamischer Konfigurationsdienst: Nacos bietet eine zentralisierte Konfigurationsverwaltungsplattform mit einer einfachen und benutzerfreundlichen Benutzeroberfläche, die dynamische Konfiguration unterstützt, wodurch die Notwendigkeit entfällt, Anwendungen bei Konfigurationsänderungen erneut bereitzustellen, wodurch die Flexibilität und Verwaltbarkeit der Anwendung verbessert wird.

  3. Dynamischer DNS-Dienst: Nacos bietet einen leichten dynamischen DNS-Dienst, der Dienstnamen tatsächlichen Netzwerkadressen zuordnen, dynamischen Zugriff und Lastausgleich von Diensten erreichen, gewichtetes Routing unterstützen und die Implementierung flexibler Routing-Strategien und Verkehrskontrolle erleichtern kann.

  4. Dienst- und Metadatenverwaltung: Nacos bietet Verwaltungsfunktionen für alle Dienste und Metadaten im Rechenzentrum, einschließlich Dienstbeschreibung, Lebenszyklus, statischer Abhängigkeitsanalyse, Gesundheitsstatus, Verkehrsmanagement, Routing- und Sicherheitsrichtlinien, Dienst-SLA und Metrikstatistiken. Und bietet visuelle Informationen Schnittstellenanzeige.

  5. Dienstzustandsprüfung: Nacos verfügt über eine integrierte Gesundheitsprüfungsfunktion, die Gesundheitsprüfungen auf der Transportschicht (PING oder TCP) und auf der Anwendungsschicht (z. B. HTTP, MySQL, benutzerdefiniert) unterstützt und den Gesundheitszustand überwachen und verwalten kann Dienstinstanzen.

2. Nacos-Installation und Bereitstellung

Nacos unterstützt drei Bereitstellungsmodi: Standalone (Entwicklungs- und Testumgebung), Cluster (empfohlen für Produktionsumgebungen) und Multi-Cluster (empfohlen für Szenarien mit mehreren Rechenzentren). In diesem Artikel wird die eigenständige Bereitstellung als Beispiel zur Einführung verwendet Nacos-Installations- und Bereitstellungsmethode im Detail.

Umweltvorbereitung

Installationsmethode

Laden Sie Nacos herunter

Laden Sie das Paket vonNacos Github Assets herunter und entpacken Sie esnacos-server-2.2.0.tar.gz安装

# 下载
wget https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz
# 解压
tar xvf nacos-server-2.2.0.tar.gz

Datenbank initialisieren

Erstellen Sie zunächst die Datenbank nacos_config und den Benutzer nacos und erteilen Sie dem Benutzer nacos alle Berechtigungen.

# 创建数据库nacos_config
CREATE DATABASE nacos_config DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
# 授权
grant all privileges on nacos_config.* to 'nacos'@'%' identified by 'nacos' with grant option;
# 刷新权限
flush privileges;

Die Datenbankinitialisierungs-SQL-Datei befindet sich in ./nacos/conf/mysql-schema.sql. Führen Sie den folgenden Befehl aus, um die Tabellenstruktur und Daten zu importieren.

# 导入sql文件,输入密码nacos
mysql -u nacos -p -D nacos_config < ./nacos/conf/mysql-schema.sql

Die Umgebung wechseln

Nacos ist im Wesentlichen eine SpringBoot-Anwendung und die globale Konfiguration befindet sich in ./nacos/conf/application.properties.

Richten Sie eine MySQL-Datenquellenverbindung ein

Stellen Sie sicher, dass Sie zuerst die Datenquelle MySQL aktivieren, spring.datasource.platform=mysql festlegen und spring.sql.init.platform=mysql ab Version 2.2.1 festlegen. Andernfalls wird es nicht wirksam und wird im gespeichert standardmäßig eingebettete Derby-Datenbank.

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

Nacos unterstützt mehrere Datenquellenkonfigurationen

db.num stellt die Anzahl der Datenquellen dar.

db.url.<index> gibt die URL-Konfiguration der Datenquelle index+1 an und der Index beginnt standardmäßig bei 0.

db.user.<index>表示第index+1个Url的用户名。

db.password.<index>表示第index+1个Url的密码。

Hinweis: Wenndb.user和db.password nicht festgelegt istindex, verwenden alle URLs db.user und db.password Zur Authentifizierung werden mehrere Benutzernamen und Passwörter durch Kommas getrennt. Wenn der Datenbankname, der Benutzername oder das Passwort falsch sind, wird die Ausnahme „No DataSource set“ gemeldet. Bitte überprüfen Sie, ob die Verbindung korrekt ist. 

Aktivieren Sie die Authentifizierung

Nacos ist für den Intranet-Betrieb geeignet und kann nicht der öffentlichen Netzwerkumgebung ausgesetzt werden, da dies sonst zu Sicherheitsrisiken führt. Nacos verfügt über ein integriertes Standardauthentifizierungs-Plug-in, und Sie können die Dienstauthentifizierung auf folgende Weise aktivieren.

# 开启默认鉴权插件
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
# key和value可以自定义,本例中请求api时header需要携带serverIdentity=security
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
# 2.1.0版本后还需要配置插件密钥
nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
Starten Sie den Server

Standalone bedeutet die Ausführung im Standalone-Modus, nicht im Cluster-Modus.

# 启动
bin/startup.sh -m standalone
Verifizierungsprotokoll

Das Startprotokoll befindet sich in /opt/nacos/logs/start.out. Wenn Nacos erfolgreich gestartet erscheint, bedeutet dies den Start ist erfolgreich.

2023-08-28 17:16:06,648 INFO Exposing 1 endpoint(s) beneath base path '/actuator'

2023-08-28 17:16:06,678 INFO Tomcat started on port(s): 8848 (http) with context path '/nacos'

2023-08-28 17:16:06,694 INFO Nacos started successfully in stand alone mode. use external storage
Anmeldung überprüfen

Der Browser öffnet die Anmeldeschnittstelle: http://192.168.5.10:8848/nacos/index.html#/login. Der Standard-Anmeldebenutzername/das Standardkennwort lautet nacos/nacos.

Fahren Sie den Server herunter
bin/shutdown.sh
Konfigurieren Sie den systemctl-Verwaltungsdienst

Erstellen Sie die Unit-Konfigurationsdatei /lib/systemd/system/nacos.service des Nacos-Dienstes

可能异常: FEHLER: Bitte legen Sie die Variable JAVA_HOME in Ihrer Umgebung fest. Wir benötigen Java (x64)! jdk8。

Lösung: Laden Sie die Umgebungsvariable JAVA_HOME, indem Sie Environment=JAVA_HOME=/path/to/jdk festlegen
.

[root@node1 nacos]# vim /lib/systemd/system/nacos.service
[Unit]
Description=nacos
After=network.target

[Service]
Environment=JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
Type=forking
ExecStart=/opt/nacos/bin/startup.sh -m standalone
ExecReload=/opt/nacos/bin/shutdown.sh
ExecStop=/opt/nacos/bin/shutdown.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Laden Sie die Konfigurationsdatei der Einheit

systemctl daemon-reload

Starten Sie nacos.service

systemctl status nacos.service

Start einrichten

systemctl enable nacos.service

Nacos-Konfigurationspriorität

Mehrere Prioritäten beim Laden der Konfiguration

Lokale Profilpriorität

spring:
  application:
    name: nacos-config-multi
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      username: ${nacos.username}
      password: ${nacos.password}
      config:
        server-addr: ${nacos.server-addr}
        namespace: ${nacos.namespace}
        # 用于共享的配置文件
        shared-configs:
          - data-id: common-1.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
 
          - data-id: common-2.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
 
          - data-id: common-3.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
		......
 
        # 常规配置文件
        # 优先级大于 shared-configs,在 shared-configs 之后加载
        extension-configs:
          - data-id: nacos-config-1.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true
 
          - data-id: nacos-config-2.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true

          - data-id: nacos-config-3.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true
  • Priorität: Erweiterungskonfiguration (extension-configs) > gemeinsam genutzte Konfiguration (shared-configs)
  • Es handelt sich bei beiden um Erweiterungskonfigurationen. Je größer der Index, desto höher die Priorität: extension-configs[3] > extension-configs[2] > extension-configs[1] > extension-configs[0]
  • Bei beiden handelt es sich um gemeinsam genutzte Konfigurationen. Je größer der Index, desto höher die Priorität: shared-configs[3] > shared-configs[2] > shared-configs[1] > shared-configs[0]

Änderung der Priorität der Konfigurationsdatei

spring:
  cloud:
    config:
      # 如果本地配置优先级高,那么 override-none 设置为 true,包括系统环境变量、本地配置文件等配置
      override-none: true
      # 如果想要远程配置优先级高,那么 allow-override 设置为 false,如果想要本地配置优先级高那么 allow-override 设置为 true
      allow-override: true
      # 只有系统环境变量或者系统属性才能覆盖远程配置文件的配置,本地配置文件中配置优先级低于远程配置;注意本地配置文件不是系统属性
      override-system-properties: false

Je suppose que tu aimes

Origine blog.csdn.net/BlogPan/article/details/132528345
conseillé
Classement