本文记录的是centos7 下安装及集群配置
Nacos 是集服务注册及配置中心一体的, 是阿里巴巴的springCloud Alibb Nacos
Nacos = springCloud config + Eureka 的集合
Nacos 中文网站:https://nacos.io/zh-cn/docs/deployment.html
Nacos 下载地址:/alibaba/nacos/releases
下载 如图所示的版本, 上传至 centos7,
上传后 解压:
tar -zxvfnacos-server-2.0.3.tar.gz
解压后的目录:
conf目录下:
将 nacos-mysql.sql 中的脚本去mysql中执行, 目的是将在nacos页面创建的配置文件持久化保存至数据库, 集群下访问同一个数据库,防止出现数据不一致问题。 也将配置可以保存至svn等。
修改配置文件: 修改 application.properties
vim application.properties
port 端口号, 集群中要修改, A 服务器8847, B 服务器 8848
mysql 的连接地址,按照自己本地的mysql连接地址,用户名密码修改。集群配置时,mysql数据库连接地址要一致, mysql数据库也可以做集群,主备容灾。
集群设置
修改配置文件: 进入 conf 文件夹, 修改 cluster.conf.example 为 cluster.conf
命令:
mv cluster.conf.example cluster.conf
编辑 cluster.conf
vi cluste.conf
添加两台部署了nacos的服务器ip, 记得在 application.properties文件中修改端口号
如下配置,两台服务器是写一样的
防火墙设置端口开放:
A 服务器8847, B 服务器 8848A 服务器 放开端口 (9848需要看 nacos/log/nacos.log中报出来的端口是哪一个就放哪一个)firewall-cmd --zone=public --add-port=9848/tcp --permanentfirewall-cmd --zone=public --add-port=8847/tcp --permanent防火墙重新加载firewall-cmd --reload查看已放开的端口firewall-cmd --zone=public --list-portsB 服务器 放开端口 (9849需要看 nacos/log/nacos.log中报出来的端口是哪一个就放哪一个)firewall-cmd --zone=public --add-port=9849/tcp --permanentfirewall-cmd --zone=public --add-port=8848/tcp --permanent防火墙重新加载firewall-cmd --reload查看已放开的端口firewall-cmd --zone=public --list-ports
出现如下错误就是防火墙没有放开端口
启动: 进入 nacos/bin目录
以集群方式启动./bin/startup.sh -m cluster单机方式情启动./bin/startup.sh -m standalone
如下 success 就是集群启动成功
集群访问: nacos 集群代理可以通过 lvs. nginx 负载代理集群。
浏览器输入: 页面登录帐号密码 nacos/nacos
http://192.168.10.129:8848/nacos
如下 集群节点出现两个就是集群部署成功
配置中心: 点击右边加号添加配置
写入如下 开发环境的配置信息 dev开发环境, prod生产环境
代码引入及使用:
依赖:
<properties><piler.source>8</piler.source><piler.target>8</piler.target></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 服务注册与发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.1.4.RELEASE</version></dependency><!-- 配置中心 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.1.4.RELEASE</version></dependency></dependencies>
使用配置中心时, springboot的文件需要使用 bootstrap.yml, 因为 bootstrap 优先于application
bootstrap.yml 配置
spring:cloud:nacos:discovery:server-addr: 192.168.10.129:8848 服务注册发现地址 地址可通过nginx,lvs 负载代理config:server-addr: 192.168.10.129:8848 配置中心地址 地址可通过nginx,lvs 负载代理file-extension: yaml 配置中心文件的默认后缀application:name: memberprofiles: 版本控制 如 dev, prodactive: devserver:port: 8802test: 配置中心覆盖的配置port: 8002
测试代码
注意此注解:
@RefreshScope // 刷新配置,如配置中心修改了test.port, 代码中实时更新,不用重启服务
import org.springframework.beans.factory.annotation.Value;import org.springframework.cloud.context.config.annotation.RefreshScope;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/*** @author tangjiandong* @version 1.0* @description:* @date 08月12日 17:11*/@RestController@RefreshScope // 刷新配置,如配置中心修改了test.port, 代码中实时更新,不用重启public class TestController {@Value("${test.port}")private String port;@RequestMapping("/index")public String index(){return "member1: " + port;}}
启动服务并访问:
配置中心修改配置:
服务中会有线程更新配置
页面刷新时,配置已更新
查看mysql数据库的配置:可以看到配置已经存库
服务注册发现: 查看服务名,