Spring Cloud - Nacos集群配置和集成

本文介绍生产环境中Nacos集群的安装配置,及与Spring Cloud的集成。

Nacos介绍

类似于Spring Cloud Eureka和Spring Cloud Config,Nacos提供了服务注册管理和配置中心的功能;其中配置中心实现动态刷新,无需MQ。

相对于Eureka,Nacos是由阿里提供的开源服务,可以兼容Spring Cloud,也支持其他语言例如python服务的注册管理。

nacosMap.jpg

Nacos安装

  • 环境要求:
    64 bit JDK 1.8+
    MySql 5.6.5+

  • 安装包下载
    当前版本 1.0.0

  • 解压
    unzip nacos-server-$version.zip
    tar -xvf nacos-server-$version.tar.gz

Nacos配置

  • MySql内执行sql
    /nacos/conf/nacos-mysql.sql

  • 数据源配置
    /nacos/conf/application.properties

    1
    2
    3
    4
    5
    spring.datasource.platform=mysql
    db.num=1
    db.url.0=jdbc:mysql://xxx:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
    db.user=xxx
    db.password=xxx
  • 集群配置
    /nacos/conf/cluster.conf

    1
    2
    3
    192.168.1.100:8848
    192.168.1.101:8848
    192.168.1.102:8848

    在100-102机器上,复制存储nacos文件。

  • Nginx负载均衡
    部署集群后,由3台集群提供管理界面,可以配置Nginx进行负载。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    upstream  nacos_cluster  {
    server 192.168.1.100:8848;
    server 192.168.1.101:8848;
    server 192.168.1.102:8848;
    }

    server{
    listen 80;
    server_name localhost;

    location / {
    proxy_pass http://nacos_cluster;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For
    $proxy_add_x_forwarded_for;
    }
    }

    8848为管理系统端口
    访问localhost,可以进入Nacos管理界面
    默认用户名和密码是nacos/nacos
    users表存储的是用户名、密码,可以进行修改
    new BCryptPasswordEncoder().encode(“nacos”)修改密码

启动和关闭

/nacos/bin

启动
sh startup.sh

启动后打印的关键参数

-server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:-UseLargePages  -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M

关闭
sh shutdown.sh

Spring Cloud集成Nacos

pom引入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/>
</parent>

<properties>
<spring-cloud-alibaba-dependencies.version>0.2.1.RELEASE</spring-cloud-alibaba-dependencies.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>

<dependencies>
<!-- nacos服务注册与发现 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- nacos分布式配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

配置参数

Application.java

1
2
3
4
5
6
7
8
9
@EnableDiscoveryClient
@SpringBootApplication
@RefreshScope
@EnableFeignClients
public class Application{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

bootstrap.yml

1
2
3
4
5
6
7
8
9
10
11
spring:
application:
name: xxxx
profiles:
active: dev
cloud:
nacos:
discovery:
server-addr: 192.168.1.100:8848,192.168.1.101:8848,192.168.1.102:8848 #注册中心地址集群
config:
server-addr: 192.168.1.100:8848,192.168.1.101:8848,192.168.1.102:8848 #配置中心地址集群

fegin测试

1
2
3
4
5
6
7

@FeignClient(value = "xxxx")
public interface XXXServer {
// 获取主码描述
@RequestMapping(path = "/api/xxxx", method = RequestMethod.POST)
String getInfo();
}
------ 本文结束------

本文标题:Spring Cloud - Nacos集群配置和集成

文章作者:Perkins

发布时间:2019年04月22日

原始链接:https://perkins4j2.github.io/posts/57096/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。