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方便,推荐模式
1.3 官网翻译
1.4 说明
默认Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。
Nacos支持三种部署模式
- 单机模式-用于测试和单机试用。
- 集群模式-用于生产环境,确保高可用。
- 多集群模式-用于多数据中心场景。
Windows
cmd startup.cmd或者双击startup.cmd文件
单机模式支持mysql
在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤:
- 安装数据库,版本要求:5.6.5+
- 初始化mysq数据库,数据库初始化文件: nacos-mysql.sql
- 修改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
再以单机模式启动nacos,nacos所有写嵌入式数据库的数据都写到了mysql。<br />[<br />](https://blog.csdn.net/u011863024/article/details/114298282)<a name="uKwZL"></a># 2. Nacos持久化配置解释<a name="o9G5p"></a>## 2.1 Nacos默认自带的嵌入式数据库derbyNacos默认自带的是嵌入式数据库derby,[nacos的pom.xml](https://blog.csdn.net/u011863024/article/details/github.com/alibaba/nacos/blob/develop/config/pom.xml)中可以看出。<a name="8xQBI"></a>## 2.2 derby到mysql的切换配置步骤<br />1. nacos-server-1.1.4\nacos\conf目录下找到sql脚本(nacos-mysql.sql),执行该脚本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

<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 />
添加以下内容(修改前将文件备份)
```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
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
平时单机版的启动,都是./startup.sh即可
但是,集群启动,我们希望可以类似其它软件的shell命令,传递不同的端口号启动不同的nacos实例。
命令: ./startup.sh -p 3333表示启动端口号为3333的nacos服务器实例,和上一步的cluster.conf配置的一致。
a. 修改内容
注意:新版本的nacos中P参数表示嵌入式存储,修改配置时使用别的字母代替

b. 指定启动端口
可直接修改application.properties文件指定nacos启动端口
server.port=8848
(5)Nginx的配置,由它作为负载均衡器
(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
- 新建一个配置测试

新建后,可在linux服务器的mysql新插入一条记录
让微服务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,查看注册结果

(7)高可用小总结

