1. 官网说明

1.1 官方文档

官方文档

1.2 官网架构图

推荐用户把所有服务列表放到一个vip(虚拟IP)下面,然后挂到一个域名下面
http://ip1:port/openAPI 直连ip模式,机器挂则需要修改ip才可以使用。
http://SLB:port/openAPI 挂载SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),直连SLB即可,下面挂server真实ip,可读性不好。
http://nacos.com:port/openAPI 域名 + SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),可读性好,而且换ip方便,推荐模式
image.png

1.3 官网翻译

image.png

1.4 说明

默认Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。

Nacos支持三种部署模式

  • 单机模式-用于测试和单机试用。
  • 集群模式-用于生产环境,确保高可用。
  • 多集群模式-用于多数据中心场景。

Windows

cmd startup.cmd或者双击startup.cmd文件

单机模式支持mysql

在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤:

  1. 安装数据库,版本要求:5.6.5+
  2. 初始化mysq数据库,数据库初始化文件: nacos-mysql.sql
  3. 修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。 ``` spring.datasource.platform=mysql

db.num=1 db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=nacos_devtest db.password=youdontknow

  1. 再以单机模式启动nacosnacos所有写嵌入式数据库的数据都写到了mysql。<br />[<br />](https://blog.csdn.net/u011863024/article/details/114298282)
  2. <a name="uKwZL"></a>
  3. # 2. Nacos持久化配置解释
  4. <a name="o9G5p"></a>
  5. ## 2.1 Nacos默认自带的嵌入式数据库derby
  6. Nacos默认自带的是嵌入式数据库derby,[nacospom.xml](https://blog.csdn.net/u011863024/article/details/github.com/alibaba/nacos/blob/develop/config/pom.xml)中可以看出。
  7. <a name="8xQBI"></a>
  8. ## 2.2 derby到mysql的切换配置步骤
  9. <br />
  10. 1. nacos-server-1.1.4\nacos\conf目录下找到sql脚本(nacos-mysql.sql),执行该脚本
  11. 1. nacos-server-1.1.4\nacos\conf目录下找到application.properties,添加以下配置(按需修改对应值)。

spring.datasource.platform=mysql

db.num=1 db.url.0=jdbc:mysql://localhost:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=30000&autoReconnect=true&serverTimezone=UTC db.user=root db.password=root

<a name="5u05L"></a>
## 2.3 启动nacos,可以看到一个全新的空记录界面,以前是记录近derby
![image.png](https://cdn.nlark.com/yuque/0/2021/png/22345394/1630208428257-eb9b1e05-0db2-49ba-a4a6-530daa48b75b.png#align=left&display=inline&height=594&margin=%5Bobject%20Object%5D&name=image.png&originHeight=594&originWidth=1362&size=57241&status=done&style=none&width=1362)
<a name="PD2Vh"></a>
# 3. Linux版nacos+mysql[生产环境配置](https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html)
> 预计需要,1个Nginx+3nacos注册中心+1个mysql

<a name="5CdIs"></a>
## 3.1 安装环境

请确保是在环境中安装使用:

   1. 64 bit OS Linux/Unix/Mac,推荐使用Linux系统。
   1. 64 bit JDK 1.8+;[下载](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html).[配置](https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/)。
   1. Maven 3.2.x+;[下载](https://maven.apache.org/download.cgi).[配置](https://maven.apache.org/settings.html)。
   1. 3个或3个以上Nacos节点才能构成集群。
<a name="grsi8"></a>
## 3.2 Nacos下载Linux版


下载地址[https://github.com/alibaba/nacos/releases](https://github.com/alibaba/nacos/releases)

<a name="9fEjz"></a>
## 3.3 集群配置步骤(重点)
<a name="UAa7Q"></a>
### (1)Linux服务器上mysql数据库配置

SQL脚本位置 /nacos/conf/nacos-mysql.sql<br />在liunx中安装MySQL数据库并运行脚本

<a name="rcFZ3"></a>
### (2)application.properties配置

文件位置 /nacos/conf/application.properties<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/22345394/1630226367894-81edd76c-593e-4577-ab36-755254f67200.png#align=left&display=inline&height=168&margin=%5Bobject%20Object%5D&name=image.png&originHeight=168&originWidth=546&size=19649&status=done&style=none&width=546)

添加以下内容(修改前将文件备份)
```shell
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

(3)Linux服务器上nacos的集群配置cluster.conf

梳理出3台nacos集器的不同服务端口号,设置3个端口:

  • 3333
  • 4444
  • 5555

复制出cluster.conf
image.png

172.24.58.13:3333
172.24.58.13:4444
172.24.58.13:5555

注意,这个IP不能写127.0.0.1,必须是Linux命令hostname -i能够识别的IP

(4)编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口

/nacos/bin目录下有startup.sh
image.png
平时单机版的启动,都是./startup.sh即可

但是,集群启动,我们希望可以类似其它软件的shell命令,传递不同的端口号启动不同的nacos实例。
命令: ./startup.sh -p 3333表示启动端口号为3333的nacos服务器实例,和上一步的cluster.conf配置的一致。

a. 修改内容

注意:新版本的nacos中P参数表示嵌入式存储,修改配置时使用别的字母代替
集群与持久化配置(重要) - 图5
集群与持久化配置(重要) - 图6

b. 指定启动端口

可直接修改application.properties文件指定nacos启动端口

server.port=8848

(5)Nginx的配置,由它作为负载均衡器

修改nginx的配置文件 - nginx.conf
集群与持久化配置(重要) - 图7

修改内容
集群与持久化配置(重要) - 图8

按照指定启动
集群与持久化配置(重要) - 图9

(6)截止到此处,1个Nginx+3个nacos注册中心+1个mysql

**

  • 启动3个nacos注册中心
    • startup.sh - p 3333
    • startup.sh - p 4444
    • startup.sh - p 5555
    • 查看nacos进程启动数ps -ef | grep nacos | grep -v grep | wc -l
  • 启动nginx
    • ./nginx -c /usr/local/nginx/conf/nginx.conf
    • 查看nginx进程ps - ef| grep nginx
  • 测试通过nginx,访问nacos - http://192.168.111.144:1111/nacos/#/login
  • 新建一个配置测试

集群与持久化配置(重要) - 图10

新建后,可在linux服务器的mysql新插入一条记录
集群与持久化配置(重要) - 图11

让微服务cloudalibaba-provider-payment9002启动注册进nacos集群 - 修改配置文件

server:
  port: 9002

spring:
  application:
    name: nacos-payment-provider
  c1oud:
    nacos:
      discovery:
        #配置Nacos地址
        #server-addr: Localhost:8848
        #换成nginx的1111端口,做集群
        server-addr: 192.168.111.144:1111

management:
  endpoints:
    web:
      exposure:
        inc1ude: '*'
  • 启动微服务cloudalibaba-provider-payment9002
  • 访问nacos,查看注册结果

集群与持久化配置(重要) - 图12

(7)高可用小总结

集群与持久化配置(重要) - 图13