重启3377微服务,再次访问可以发现获取到的配置信息即为 dev 命名空间下TEST_GROUP组的配置信息。
4. Nacos集群和持久化配置 4.1 官网说明官网
官网集群部署架构图
开源的时候推荐用户把所有服务列表放到一个vip下面,然后挂到一个域名下面
:port/openAPI 直连ip模式,机器挂则需要修改ip才可以使用。
:port/openAPI 挂载SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),直连SLB即可,下面挂server真实ip,可读性不好。
:port/openAPI 域名 + SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),可读性好,而且换ip方便,推荐模式
VIP:即虚拟IP,即Nginx
上图翻译一下就是
4.2 Nacos持久化配置解释默认Nacos使用嵌入式数据库实现数据的存储,所以,如果启动多个默认配置下的Nacos节点,数据储存是存在一致性问题的。Nacos默认自带的嵌入式数据库为derby。
为了解决这个问题,Nacos采用了 集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。
单机模式支持MySQL,在0.7版本之前,在单机模式时Nacos使用嵌入式数据库实现数据的储存,不方便观察数据的基本情况。0.7版本增加了支持MySQL数据源能力,具体的操作步骤如下。
derby到mysql切换配置步骤:
安装数据库,版本要求:5.6.6+
nacos-server-1.1.4\nacos\conf目录下找到sql脚本(nacos-mysql.sql),初始化MySQL数据库nacos_config,数据库初始化文件:nacos-mysql.sql
nacos-server-1.1.4\nacos\conf目录下找到application.properties,修改conf/application.properties文件,增加支持MySQL数据源配置(目前只支持MySQL),添加MySQL数据源的url,用户名和密码。
# 如果是Mysql5.+ spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://mpolaris.top:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC db.user=root db.password=123456 # 如果是Mysql8.+ spring.datasource.platform=mysql jdbc.DriverClassName=com.mysql.cj.jdbc.Driver db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?serverTimezone=GMT%2B8&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user= root db.password= 123456启动Nacos,可以看到是个全新的空记录界面,以前是记录进derby。
4.4 Linux版Nacos+MySQL生产环境配置需要一个Nginx,三个Nacos注册中心,一个Mysql
Nacos下载Linux版,下载地址,nacos-server-1.1.4.tar.gz,解压后安装
集群配置步骤
Linux服务器上MySQL数据库配置(按照4.3配置)
application.properties配置(按照4.3配置)
Linux服务器上Nacos的集群配置cluster.conf
梳理出三台Nacos机器的不同服务端口号(3333,4444,5555)
复制出cluster.conf
cd /opt/nacos/conf cp cluster.conf.example cluster.conf修改内容
注意:这个IP不能写127.0.0.1,必须是Linux命令hostname -i 能够识别的IP
# it is ip # example # 这里我填的是自己的私网ip 172.20.xxx.xxx:3333 172.20.xxx.xxx:4444 172.20.xxx.xxx:5555编辑Nacos的启动脚本startup.sh(先备份),使它能够接受不同的启动端口
/mynacos/nacos/bin 目录下有startup.sh
怎样改?
# 平时单机版的启动,都是./startup.sh即可 # 但是集群启动,我们希望可以类似其他软件的shell命令,传递不同的端口号启动不同的nacos实例。 # 例如:命令 ./startup.sh -p 3333 表示启动端口号为3333的nacos服务器实例 vim ./startup.sh # 修改第57行开始增加p export SERVER="nacos-server" export MODE="cluster" export FUNCTION_MODE="all" while getopts ":m:f:s:p:" opt do case $opt in m) MODE=$OPTARG;; f) FUNCTION_MODE=$OPTARG;; s) SERVER=$OPTARG;; p) PORT=$OPTARG;; ?) echo "Unknown parameter" exit 1;; esac done # 修改第134行,增加 - Dserver.port=${PORT} nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1