一、什么是 Nacos?
Nacos 是阿里巴巴的新开源项目,其核心定位是 “一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台”,它支持几乎所有主流类型的“服务”的发现、配置和管理。
二、单体部署
配置文件/data/nacos/init.d/custom.properties内容如下
management.endpoints.web.exposure.include=*
docker run -d -p 8848:8848 -e MODE=standalone -v /data/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties -v /data/nacos/logs:/home/nacos/logs --restart always --name nacos nacos/nacos-server
三、群集部署
整体架构为:Nginx + 3 x Nacos + MySQL
高可用MySQL使用主从复制结构 https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql
docker run -d
-p 8848:8848
--name nacos-1
-e MODE=cluster
-e PREFER_HOST_MODE=ip
-e SPRING_DATASOURCE_PLATFORM=mysql
-e NACOS_SERVER_IP=192.168.87.133
-e NACOS_SERVERS=192.168.87.133:8848 192.168.87.135:8848 192.168.87.139:8848
-e MYSQL_MASTER_SERVICE_HOST=192.168.1.30
-e MYSQL_MASTER_SERVICE_PORT=3306
-e MYSQL_MASTER_SERVICE_DB_NAME=nacos
-e MYSQL_MASTER_SERVICE_USER=root
-e MYSQL_MASTER_SERVICE_PASSWORD=123456
-e MYSQL_SLAVE_SERVICE_HOST=192.168.1.30
-e MYSQL_SLAVE_SERVICE_PORT=3307
-e JVM_XMS=512m
-e JVM_XMX=512m
-e JVM_XMN=256m
-e JVM_MS=32m
-e JVM_MMS=80m
-v /data/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties
-v /data/nacos/logs:/home/nacos/logs
--restart=always
nacos/nacos-server
其对应关系为:
192.168.87.133 对应 nacos-1
192.168.87.135 对应 nacos-2
192.168.87.139 对应 nacos-3
四、访问Nacos UI界面
这里使用133服务器页面进行展示下,
访问http://192.168.87.133:8848/nacos
,进入登录页面,默认的用户名与密码都是nacos
我这里还原的sql是平时测试用的,这里打下码,我们的关注点在 集群管理 > 节点列表 这里
这里我们看到Nacos集群各节点已经正常了,LEADER与FOLLOWER已经选出,一切正常了
五、配置Nginx
除了Nacos集群配置外,我们在Spring Boot或Spring Cloud项目中使用的时候,只能指定一个URL指向Nacos服务端,这里使用Nginx进行代理负载均衡
如果可以的话,生产环境最佳实践是使用一个域名指向Nginx,之后就算换Nginx主机,客户端也无需修改配置文件,只需要使用域名指向一个新的Nginx的IP
upstream nacos-cluster
{
server 192.168.87.133:8848;
server 192.168.87.139:8848;
server 192.168.87.135:8848;
}
server
{
listen 8848;
location /
{
proxy_pass http://nacos-cluster;
}
}
启动Nginx,使用代码进行测试连接当前的Nginx所在主机IP:8848
这里已经可以看到服务正常注册到集群中了
注:文章中是按照3台虚拟机部署的,其实在一台机器上部署也可以,把ip换成一样,端口设不一样就行,根据自身情况调整