一、nacos集羣安裝
1、下載nacos的二進制壓縮包 https://github.com/alibaba/nacos/releases
2、解壓下載下來的nacos的二進制壓縮包
3、修改配置文件 cluster.conf.example 把這個文件改個文件名 cluster.conf
4、再cluster.conf配置文件中添加集羣ip和端口號 ip必須用真實ip 如果本機搭建集羣也不能用127.0.0.1
#example
192.168.101.71:8841
192.168.101.71:8842
192.168.101.71:8843
5、修改application.properties配置文件內容
server.port=8841
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root
6、將配置好的nacos目錄複製三份 分別修改application.properties配置文件裏的端口號 分別是8842,8843
7、執行config 目錄下的nacos sql腳本 nacos-mysql.sql
8、配置nginx 通過nginx 負載到對應的nacos節點
(1)下載nginx http://nginx.org/en/download.html
(2) 解壓nginx
(3)配置nginx 再http模塊下配置如下內容
upstream nacos{
server 127.0.0.1:8841;
server 127.0.0.1:8842;
server 127.0.0.1:8843;
}
server {
listen 80;
server_name localhost;
location /nacos {
proxy_pass http://nacos;
}
}
(4)啓動nginx
9、啓動三臺nacos 命令 startup.sh 出現如下提示表示啓動成功
10、訪問 http://localhost/nacos 默認用戶名和密碼都是nacos
二、nacos 註冊中心
1、新建maven 服務提供者項目 導入pom依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xiao</groupId>
<artifactId>nacosprovider</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.0.RELEASE</spring-boot.version>
<spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencies>
<!--spring boot web依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--spring-boot-starter-actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--spring-cloud-starter-alibaba-sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2,新建提供者啓動類
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
3、新建controller
@RestController
public class EchoController {
@Value("${server.port}")
private String port;
@GetMapping("/")
public String index() {
return port;
}
}
4、新建application.yml配置文件
server:
port: 8081
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: localhost:80
password: nacos
username: nacos
5、啓動兩個提供者項目
6、查看nacos 註冊中心
7、新建消費者 項目 導入maven依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>nacosprovider</artifactId>
<groupId>com.xiao</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../nacosprovider/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>nacosconsumer</artifactId>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.0.RELEASE</spring-boot.version>
<spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
<!--spring boot web依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
8、新建消費者啓動類
@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients
public class Application {
@LoadBalanced
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
9、新建application.yml 配置文件
server:
port: 8083
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: localhost:80
password: nacos
username: nacos
10、新建消費者controller
@RestController
public class TestController {
@GetMapping("/test")
public String test() {
return restTemplate.getForObject("http://nacos-provider/", String.class);
}
}
12、啓動消費者項目 訪問 http://127.0.0.1:8083/test
三、nacos 配置中心
1、加入配置中心pom依賴
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2、新建bootstrap.application配置文件
#端口號
server.port=8080
#應用名
spring.application.name=nacos-config
#註冊中心地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:80
#nacos用戶名
spring.cloud.nacos.username=nacos
#nacos密碼
spring.cloud.nacos.password=nacos
#配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:80
#配置中心擴展名
spring.cloud.nacos.config.file-extension=yaml
#配置中心組
spring.cloud.nacos.config.group=test
#配置文件啓動環境
spring.profiles.active=test
#多環境時Data Id配置規則 應用名-環境.擴展名
# ${spring.application.name}-${spring.profiles.active}.${file-extension:properties}
3、新建測試controller
package com.xiao.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope
public class ConfigController {
@Value("${user.name}")
private String name;
@Value("${user.age}")
private String age;
@GetMapping("config")
public String config(){
return name + "-" + age;
}
}
6、再nacos控制檯新建配置