Nacos集羣安裝和使用

一、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控制檯新建配置

7、訪問http://127.0.0.1:8080/config

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章