Nacos快速入门(二):Nacos集群安装部署

1、集群部署架构图

官方提供了三种部署架构:

nacos-cluster-model.jpeg

2、集群环境搭建

2.1、环境准备

Nacos需要3个或3个以上节点才能构成集群,现准备以下三台linux机器:

  • 10.25.84.163
  • 10.25.84.164
  • 10.25.84.165

每台机器需配置JDK1.8+版本

2.2、下载安装

下载地址:https://github.com/alibaba/nacos/releases

本文版本:截止当前时间稳定版本1.1.4

2.3、解压

1
tar -xvf nacos-server-$version.tar.gz

解压后文件目录结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.
├── bin
│ ├── shutdown.cmd
│ ├── shutdown.sh
│ ├── startup.cmd
│ └── startup.sh
├── conf
│ ├── application.properties
│ ├── application.properties.example
│ ├── cluster.conf.example
│ ├── nacos-logback.xml
│ ├── nacos-mysql.sql
│ └── schema.sql
├── LICENSE
├── NOTICE
└── target
└── nacos-server.jar

2.4、配置集群配置文件

集群配置文件为nacos的解压目录nacos/conf下的cluster.conf,但我们解压出来的目录下只有cluster.conf.example文件,这是个示例,我们修改下文件名可直接用

1
mv cluster.conf.example cluster.conf

编辑cluster.conf,每行配置ip:port

1
2
3
4
# ip:port
10.25.84.163:8848
10.25.84.164:8848
10.25.84.165:8848

2.5、配置MySQL数据库

nacos为什么要配置MySQL?

Nacos的单节点,即standalone模式下,数据默认存储到内嵌的数据库derby中。如果是集群环境,nacos数据存储没有使用分布式算法解决一致性性问题,而是采用比较常规的集中化存储,而且目前支持MySQL。从部署和硬件投入,相比consul、zookeeper、etcd这些采用分布式一致性算法的中间件就稍显不足了。

理解后,我们开始配置:

第一步:初始化MySQL数据库

新建一个数据库,库名自定义,如nacos,执行nacos/conf目录下的nacos-mysql.sql脚本,初始化表结构

nacos-mysql.png

第二步:application.properties添加数据库配置

编辑nacos/conf目录下的application.properties文件,添加mysql配置

1
2
3
4
db.num=1
db.url.0=jdbc:mysql://IP:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=user
db.password=password

注:生产使用建议至少主备模式,或者采用高可用数据库。

2.6、启动服务器

执行nacos/bin目录下的启动脚本startup.sh,启动其中一台,如10.25.84.165

1
2
3
4
[root@localhost bin]# ./startup.sh
/usr/local/java/jdk1.8.0_25/bin/java -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/root/nacos/logs/java_heapdump.hprof -XX:-UseLargePages -Djava.ext.dirs=/usr/local/java/jdk1.8.0_25/jre/lib/ext:/usr/local/java/jdk1.8.0_25/lib/ext:/root/nacos/plugins/cmdb:/root/nacos/plugins/mysql -Xloggc:/root/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dnacos.home=/root/nacos -Dloader.path=/root/nacos/plugins/health -jar /root/nacos/target/nacos-server.jar --spring.config.location=classpath:/,classpath:/config/,file:./,file:./config/,file:/root/nacos/conf/ --logging.config=/root/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
nacos is starting with cluster
nacos is starting,you can check the /root/nacos/logs/start.out

查看启动日志:

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
[root@localhost nacos]# more ./logs/start.out
/usr/local/java/jdk1.8.0_25/bin/java -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapD
umpPath=/root/nacos/logs/java_heapdump.hprof -XX:-UseLargePages -Djava.ext.dirs=/usr/local/java/jdk1.8.0_25/jre/lib/ext:/usr/local/java/jdk1.8.0_25/lib/ext:/root/nacos/plugins/cmdb:/root/n
acos/plugins/mysql -Xloggc:/root/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -
XX:GCLogFileSize=100M -Dnacos.home=/root/nacos -Dloader.path=/root/nacos/plugins/health -jar /root/nacos/target/nacos-server.jar --spring.config.location=classpath:/,classpath:/config/,fi
le:./,file:./config/,file:/root/nacos/conf/ --logging.config=/root/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
,--.
,--.'|
,--,: : | Nacos 1.1.4
,`--.'`| ' : ,---. Running in cluster mode, All function modules
| : : | | ' ,'\ .--.--. Port: 8848
: | \ | : ,--.--. ,---. / / | / / ' Pid: 2771
| : ' '; | / \ / \. ; ,. :| : /`./ Console: http://10.25.84.163:8848/nacos/index.html
' ' ;. ;.--. .-. | / / '' | |: :| : ;_
| | | \ | \__\/: . .. ' / ' | .; : \ \ `. https://nacos.io
' : | ; .' ," .--.; |' ; :__| : | `----. \
| | '`--' / / ,. |' | '.'|\ \ / / /`--' /
' : | ; : .' \ : : `----' '--'. /
; |.' | , .-./\ \ / `--'---'
'---' `--`---' `----'
2020-03-03 17:59:25,257 INFO The server IP list of Nacos is [10.25.84.163:8848, 10.25.84.164:8848, 10.25.84.165:8848]
2020-03-03 17:59:26,275 INFO Nacos is starting...

可以看到nacos已经成功启动

登录nacos控制台,地址:http://10.25.84.165:8848/naocs

nacos-login.png

默认用户名/密码为:nacos/nacos,登录进去查看集群节点

nacos-CANDIDATE.png
此时只有一个节点,状态是CANDIDATE,即候选中,我们依次把剩下的两台机器上的nacos服务启动

nacos-cluster.png

此时,集群节点已全部启动,可以看到主节点已经选举出来

2.7、关闭服务器

我们现在来把主节点,即10.25.84.164节点服务关闭

1
2
3
[root@localhost nacos]# ./bin/shutdown.sh
The nacosServer(16341) is running...
Send shutdown request to nacosServer(16341) OK

再次查看集群节点,此时会重新选取主节点,如下10.25.84.163节点被选取为主节点

nacos-shutdown.png