>最近在学习 Spring Cloud Alibaba,不得不说阿里还是强大,Nacos太好用了!
现在尝试下 Nacos 的集群部署,主要是参考官方文档来进行的。
详细文档可以到 [官网](https://nacos.io/zh-cn/docs/deployment.html) 查看
Nacos 强烈不建议部署在公共网络环境
>**Nacos定义为一个IDC内部应用组件,并非面向公网环境的产品,建议在内部隔离网络环境中部署,强烈不建议部署在公共网络环境。**
我主要在自己的云服务部署,架构如下:

主要包括一个 Nginx,一个 MySQL,三个 Nacos 节点
>Nacos 官方提示3个或3个以上 Nacos 节点才能构成集群。所以这里建立三个节点。
关于 Nginx 和 MySQL 也可以弄成多个的,提供系统的可用性,我这里由于资源有限,只弄了一个。
# 1、预备环境准备
>请确保是在环境中安装使用:
64 bit OS Linux/Unix/Mac,推荐使用Linux系统。
64 bit JDK 1.8+;[下载](https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html).[配置](https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/)。
Maven 3.2.x+;[下载](https://maven.apache.org/download.cgi).[配置](https://maven.apache.org/settings.html)。
3个或3个以上Nacos节点才能构成集群。
# 2、下载安装包
>本次使用的是 1.4.0 版本,当前最近版本是 2.0.0,地址:https://github.com/alibaba/nacos/releases/
最近下载地址:https://github.com/alibaba/nacos/releases/download/2.0.0/nacos-server-2.0.0.tar.gz
>吐槽一下,在 GitHub 下载 Nacos 真是太慢了,建议使用科学上网方式获取。

下载完成后解压 unzip nacos-server-1.4.0.zip
# 3、配置集群配置文件
>在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,请每行配置成ip:port。(请配置3个或3个以上节点)
梳理出3台nacos集器的不同服务端口号,设置3个端口:
cd /nacos/conf
cp cluster.conf.example cluster.conf
vi cluster.conf
>这里的 IP 要注意,不能写 127.0.0.1,必须是 Linux 命令 **hostname -i** 能够识别的 IP
```
172.22.155.1:3333
172.22.155.1:4444
172.22.155.1:5555
```
# 4、确定数据源
Nacos 默认的是使用内置数据源,无需进行任何配置
这里我们使用**外置数据源**
首先需要**初始化数据库**,建立一个 nacos_config 的数据库

执行 [sql语句源文件](https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql)
我们下载的安装包目录下也有 sql 文件: /nacos/conf/nacos-mysql.sql
直接执行即可,无需任何修改。
执行后可以看到:

接下来进行 **[application.properties](https://github.com/alibaba/nacos/blob/master/distribution/conf/application.properties)** 配置
也在 /nacos/conf 目录下
添加 MySQL 数据源配置
```
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
```
# 5、启动服务器
/nacos/bin目录下有startup.sh
>这里修改启动脚本的方式一直有问题,这个我后面研究一下,改为复制三个安装包目录的形式
>
>这里需要编辑 Nacos 的启动脚本 startup.sh,使它能够接受不同的启动端口
>
>平时单机版的启动,都是./startup.sh即可
>
>但是,集群启动,我们希望可以类似其它软件的shell命令,传递不同的端口号启动不同的nacos实例。
>
>命令: ./startup.sh -a 3333 表示启动端口号为 3333 的 Nacos 服务器实例,和上一步的 cluster.conf 配置的一致。
>
>具体修改如下:
>
>
由于上面的方法没有解决不同端口启动的问题,这里我复制三个文件目录处理

分别修改 /conf 目录下的 application.properties 文件,分别为:
<br>server.port=3333
<br>server.port=4444
<br>server.port=5555
修改好之后挨个启动,
<br>./nacos3333/bin/startup.sh
<br>./nacos4444/bin/startup.sh
<br>./nacos5555/bin/startup.sh
查看 /logs/start.out 可以看到启动成功。
>**这里遇到了史诗难题啊,家人们 T.T....
由于我的服务器配置太低,太垃圾了,只有1核2G,完全带不动集群啊,最多只能启动两个,启动两个内存就已经满了T.T,根本搞不起来,这里只能告一段落了,理论上按照这个方法是没有问题的。**
# 6、Nginx配置
修改 Nginx 的配置,由它作为负载均衡器。


修改完成后刷新 Nginx 配置
nginx -t
nginx -s reload
>全部配置完成后再通过访问 https://域名/nacos 应该就可以了。。。
由于机器配置问题,只能告一段落,等我升级完配置再来。。。。T..T 难受
附上一张内存使用率的图

>哭了

# 后续
后续来了。。
访问地址:https://lixj.fun/nacos/#/login

终于搭建完成了。
晚上回家上网查了才知道可以修改启动脚本,调整JVM参数

Nacos默认使用的是 2g 2g 1g
**JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"**
可以进行适当调整,这里我调整为
**JAVA_OPT="${JAVA_OPT} -server -Xms64M -Xmx64M -Xmn40M -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=120m"**
效果如上所示,成功访问,可以登录进去~
>其实也就是勉强能用的状态,机器已经开始有点卡了,不管怎么说总算是解决了,由此可以看出来 Nacos 对资源的要求还是有点高的,不过在生产使用时应该也不会用像我这台配置这么低的机器。
到此完结,Nacos 还是很强大的!

Nacos集群部署