官方提供了三种部署架构:
http://ip1:port/openAPI 直连ip模式,机器挂则需要修改ip才可以使用。
http://VIP:port/openAPI 挂载VIP模式,直连vip即可,下面挂server真实ip,可读性不好。
http://nacos.com:port/openAPI 域名 + VIP模式,可读性好,而且换ip方便,推荐模式
Nacos需要3个或3个以上节点才能构成集群,现准备以下三台linux机器:
每台机器需配置JDK1.8+版本
下载地址:https://github.com/alibaba/nacos/releases
本文版本:截止当前时间稳定版本1.1.4
tar -xvf nacos-server-$version.tar.gz
解压后文件目录结构:
.
├── 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
集群配置文件为nacos的解压目录nacos/conf下的cluster.conf
,但我们解压出来的目录下只有cluster.conf.example
文件,这是个示例,我们修改下文件名可直接用
mv cluster.conf.example cluster.conf
编辑cluster.conf
,每行配置ip:port
# ip:port
10.25.84.163:8848
10.25.84.164:8848
10.25.84.165:8848
nacos为什么要配置MySQL?
Nacos的单节点,即standalone模式下,数据默认存储到内嵌的数据库derby中。如果是集群环境,nacos数据存储没有使用分布式算法解决一致性性问题,而是采用比较常规的集中化存储,而且目前支持MySQL。从部署和硬件投入,相比consul、zookeeper、etcd这些采用分布式一致性算法的中间件就稍显不足了。
理解后,我们开始配置:
第一步:初始化MySQL数据库
新建一个数据库,库名自定义,如nacos,执行nacos/conf目录下的nacos-mysql.sql
脚本,初始化表结构
第二步:application.properties添加数据库配置
编辑nacos/conf目录下的application.properties文件,添加mysql配置
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
注:生产使用建议至少主备模式,或者采用高可用数据库。
执行nacos/bin目录下的启动脚本startup.sh
,启动其中一台,如10.25.84.165
[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
查看启动日志:
[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/nacos
,登录进去查看集群节点
此时只有一个节点,状态是CANDIDATE,即候选中,我们依次把剩下的两台机器上的nacos服务启动
此时,集群节点已全部启动,可以看到主节点已经选举出来
我们现在来把主节点,即10.25.84.164节点服务关闭
[root@localhost nacos]# ./bin/shutdown.sh
The nacosServer(16341) is running...
Send shutdown request to nacosServer(16341) OK
再次查看集群节点,此时会重新选取主节点,如下10.25.84.163节点被选取为主节点