Nacos默认自带的是嵌入式数据库derby,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。
为了更好的管理和配置,需要从derby迁移到mysql,操作步骤如下:
1、在Mysql数据库上新建nacos_config数据库,执行nacos\conf\mysql-schema.sql文件,生成表结构。
2、nacos\conf目录下,找到application.properties,修改配置
重新启动Nacos,新的配置记录会保存在Mysql数据库中。
Nacos官方集群配置
第一步,先搭建三个Nacos,复制出nacos/conf下的的集群配置文件cluster.conf,
172.17.209.37:8846
172.17.209.37:8848
172.17.209.37:8850
第二步,启动三个不同端口的伪集群,有两种做法。
方法①是:编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口;调用命令 ./startup.sh -p 8846
、./startup.sh -p 8848
、./startup.sh -p 8850
的方式启动,:
但博主测试了Nacos 2.1.1 和 2.2.2 两个版本,都不支持此种方式。
方法②:复制nacos文件夹分别为nacos_8846、nacos_8848、nacos_8850,分别修改conf/application.properties的端口号,分别启动Nacos,测试搭建成功。如果是生产环境集群,一台服务器上部署一台nacos实例,不需要这么操作。
第三步,在安装好的nginx中,配置Nacos信息,修改nginx.conf
#gzip on;
upstream cluster{
server 172.17.209.37:8846;
server 172.17.209.37:8848;
server 172.17.209.37:8850;
}
server {
listen 1111;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# root html;
# index index.html index.htm;
proxy_pass http://cluster;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
启动nginx,访问http://182.92.122.196:1111/nacos/index.html,成功加载。
在项目cloud-alibaba-config-nacos-client中,配置nginx信息,启动测试,可以成功获取到配置信息。
server:
port: 6088
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: 182.92.122.196:1111
config:
server-addr: 182.92.122.196:1111
file-extension: yaml
group: SWC_GROUP
端口不能是连续的。
如果我们部署三个nacos实例,端口号分别为:8848/8849/8850,在nacos2.0以上的版本是运行不起来的,为什么呢?因为这样会导致端口冲突。
nacos2.0之后,nacos会占用四个端口,如果伪集群采用的端口是连号方式,会导致端口被占用。
nacos端口:8848-nacos默认端口;
raft协议端口:7848-raft port,即raft协议端口;
grpc协议两个端口:9848-grpc协议端口(nacos端口+1000),9849-grpc协议端口(nacos+1001)
连号的情况下,上一个端口号对应的grpc协议的端口之一(+1001)就会和下一个端口号对应的grpc协议(+1000)端口冲突。
如果服务器内存比较小的话,启动nacos实例的时候可能会出现内存不足或无法分配内存的情况,
下面是我遇到的情况,这是Nacos启动默认jvm配置,参数设置比较大