前面学习了单机模式下的启动, 今天尝试下集群部署.
生产环境中部署 nacos 肯定是使用集群模式 cluster 保证高可用.
官方文档的集群部署推荐使用 VIP + 域名模式, 把所有服务列表放到一个 vip 下面, 然后挂到一个域名下面.
三种部署方式
官方推荐, nacos 集群一般有 3 种方式, 三种部署方式在访问形式的区别如下,
- http://ip1:port/openAPI 直连 ip 模式, 机器挂则需要修改 ip 才可以使用
- http://VIP:port/openAPI http://vip:port/openAPI 挂载 VIP 模式, 直连 vip 即可, 下面挂 server 真实 ip, 可读性不好
http://nacos.com:port/openAPI 域名 + VIP 模式, 可读性好, 而且换 ip 方便, 推荐模式
官方建议至少 3 个或 3 个以上的节点来实现集群模式.
修改启动端口
程序启动默认占用的端口是 8848, 我们可以对端口进行修改, 打开 conf 文件下的 application.properties, 修改启动端口.
现在演示使用单机伪集群模式, 所以通过修改端口的方式来部署这 3 个实例, 端口分别为: 8848,8858,8868.
配置集群配置文件
在 nacos 的解压目录 nacos / 的 conf 目录下, 配置文件 cluster.conf, 请每行配置成 ip:port.(请配置 3 个或 3 个以上节点)
- # ip:port
- 58.18.17.155:8848
- 58.18.17.155:8858
- 58.18.17.155:8868
配置 MySQL 数据库
生产使用建议至少主备模式, 或者采用高可用数据库.
初始化 MySQL 数据库
sql 语句源文件在 distribution/conf / 目录下的 nacos-MySQL.sql, 在本地初始化对应的数据库.
添加数据库配置
配置文件在 nacos 的 conf 目录下的 application.properties, 添加以下配置
- db.num=1
- db.url.0=jdbc:MySQL://58.18.17.155:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
- db.user=root
- db.password=root
db.num 为数据库实例数量 如果有多个数据库实例通过 db.url.0,db.url.1..... 指定不同的数据库链接.
启动服务器
默认的没有参数模式, 就是集群模式, 启动命令:
sh startup.sh
关闭服务器, 可以直接执行
sh shutdown.sh
配置 Nginx 服务
修改 conf/nginx.conf 配置
- upstream nacos {
- server 58.18.17.155:8848;
- server 58.18.17.155:8858;
- server 58.18.17.155:8868;
- }
- server {
- listen 80;
- server_name test.nacos.com;
- location / {
- proxy_pass http://nacos;
- }
- }
配置域名 test.nacos.com 绑定 VIP
服务注册和配置
服务注册
curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080
服务发现
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instances?serviceName=nacos.naming.serviceName
发布配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld
获取配置
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
集群管理
3 个节点都正常启动之后, 可以分别登录 各个 web 界面查看 集群的节点, 健康状态:
- http://58.18.17.155:8848/nacos/#/clusterManagement?dataId=&group=&appName=&namespace=&serverId=
- http://58.18.17.155:8858/nacos/#/clusterManagement?dataId=&group=&appName=&namespace=&serverId=
- http://58.18.17.155:8868/nacos/#/clusterManagement?dataId=&group=&appName=&namespace=&serverId=
来源: https://www.cnblogs.com/binyue/p/12219027.html