Inhaltsverzeichnis
2. Nacos-Installation und Bereitstellung
Richten Sie eine MySQL-Datenquellenverbindung ein
Aktivieren Sie die Authentifizierung
Fahren Sie den Server herunter
Konfigurieren Sie den systemctl-Verwaltungsdienst
Mehrere Prioritäten beim Laden der Konfiguration
Ä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:
-
Dienstregistrierung und -erkennung: Nacos unterstützt die Registrierung und Erkennung mehrerer Dienste, einschließlich DNS-basierter, RPC-basierter und K8s-basierter Diensterkennung.
-
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.
-
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.
-
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.
-
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
- Die empfohlene Hardwarekonfiguration ist mindestens 2 CCPU/4 GB Speicher/60 GB Festplatte.
- 64bit JDK 1.8+ installieren Nacos setzt auf die Java-Laufzeitumgebung.
- Datenbank MySQL5.7 installieren erfordert Version 5.6.5+, um die Beobachtung der Datenspeicherung zu erleichtern.
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