部署架构图

- 实际生产环境中不同节点部署在不同机器上。
- 在此只做演示练习,在同一台机器上进行部署,分配不同的端口。
|-----------|------|---|
| 节点目录 | 端口 | |
| nacos8818 | 8818 | |
| nacos8828 | 8828 | |
| nacos8838 | 8838 | |
从之前的单机部署,先复制一个节点8818
#创建存放集群节点的目录
mkdir nacos_cluster
复制
cp -r nacos8848/ nacos_cluster/nacos8818
持久化改造
nacos自带嵌入式的derby数据库作为存储,多节点集群部署存在一致性问题,解决方案为:采用集中存储方式--mysql
1.nacos/conf 目录下找到nacos-mysql.sql文件
2.执行脚本

准备一个mysql数据库,用于执行脚本 mysql-seata
docker run -d \
-p 3336:3306 \
-v /mysql/conf:/etc/mysql/conf.d \
-v /mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql-demo \
mysql:8.0.30
执行脚本

执行完,生成如下12个表

修改mysql配置
nacos/conf目录下找到 application.properties

注释放开、修改


先·改造单台nacos集群模式
修改堆内存大小配置(内存够用可不用配置)
/bin目录下的startup.sh修改
:set nu (93行修改)


修改cluster.conf配置
类似
192.168.6.100:8818
192.168.6.100:8828
192.168.6.100:8838

再·复制其他节点
上面所有配置修改完成后,复制另外2个节点并修改端口
#复制节点
cp -r nacos8818/ nacos8828/
cp -r nacos8818/ nacos8838/
#修改端口 (8828/8838)
vim nacos8828/conf/application.properties
vim nacos8838/conf/application.properties

启动三台机器
./nacos8818/bin/startup.sh
./nacos8828/bin/startup.sh
./nacos8838/bin/startup.sh
查看进程
ps -ef |grep nacos

任意节点访问nacos

部署了3个节点,多出一个内网ip+端口,修复见末尾部分
nginx 负载均衡
准备一个nginx
# 拉取镜像并启动
docker run -d --name=nginx6666 -p 6666:6666 -v nginx_conf:/etc/nginx -v nginx_html:/usr/share/nginx/html -v nginx_logs:/var/log/nginx nginx
找到配置文件nginx.conf
docker volume ls
docker inspect nginx_conf


修改配置
upstream nacoscluster{
server 8.160.170.126:8818;
server 8.160.170.126:8828;
server 8.160.170.126:8838;
}
server{
listen 6666;
server_name 8.160.170.126;
location / {
proxy_pass http://nacoscluster;
}
# 其他配置
docker restart nginx
访问
http://8.160.170.126:6666/nacos
提示错误:
ERR_UNSAFE_PORT
Chrome/Edge 浏览器默认把 6666 标记为不安全端口,直接拦截访问,不会发起网络请求。 参考浏览器黑名单端口列表:6666 在里面(历史上木马常用端口)。
调整其他端口
docker run -d --name=nginx8088 -p 8088:8088 -p 80:80 -v nginx_conf:/etc/nginx -v nginx_html:/usr/share/nginx/html -v nginx_logs:/var/log/nginx nginx
同步修改配置后启动,浏览器访问
upstream nacoscluster{
server 8.160.170.126:8818;
server 8.160.170.126:8828;
server 8.160.170.126:8838;
}
server{
listen 8088;
server_name 8.160.170.126;
location / {
proxy_pass http://nacoscluster;
}
# 其他配置

可能遇到的问题
启动报错

--cluster.conf忘记配置,./startup.sh启动会报错上面的错误
集群节点多了 内网+端口
部署了3个节点,上面多出了一个,是内网ip+端口,需要在application. 增加配置
Specify local server's IP:
nacos.inetutils.ip-address=公网ip
nacos.server.ip=公网ip

/conf下的cluster.conf确认是否自动添加了内网ip
需要删除自动添加的内网ip
删除 protocol的内容rm -rf nacos8818/data/protocol
rm -rf nacos8828/data/protocol
rm -rf nacos8838/data/protocol
修改后重新启动nacos
ps -ef|grep nacos
kill 368 471 32447
./nacos8818/bin/startup.sh
./nacos8828/bin/startup.sh
./nacos8838/bin/startup.sh
最终实现只有3个节点了

部署了3个节点,上面多出了一个,是内网ip+端口,需要在application. 增加配置
Specify local server's IP:
nacos.inetutils.ip-address=公网ip
nacos.server.ip=公网ip

/conf下的cluster.conf确认是否自动添加了内网ip
需要删除自动添加的内网ip
删除 protocol的内容rm -rf nacos8818/data/protocol
rm -rf nacos8828/data/protocol
rm -rf nacos8838/data/protocol
修改后重新启动nacos
ps -ef|grep nacos
kill 368 471 32447
./nacos8818/bin/startup.sh
./nacos8828/bin/startup.sh
./nacos8838/bin/startup.sh
最终实现只有3个节点了

端口黑名单
浏览器限制,直接阻止请求(6666)

参考浏览器黑名单端口列表:6666 在里面(历史上木马常用端口)。
- 开发环境推荐端口:3000-3999(前端框架默认)、5000-5999(后端 API)、8000-8999(测试环境)、9000-9999(工具服务)。
- 绝对避开:上表中的所有端口,尤其是 6665-6669、6000、10080 这些开发中容易误用的。