前置
准备3台服务器:nacos-server1、nacos-server2、nacos-server3
3台服务器安装好jdk,配置好JAVA_HOME
1. 下载
下载 nacos-server-2.0.3.tar.gz
方式一:官网 Releases · alibaba/nacos · GitHub
方式二:百度网盘下载
链接:百度网盘 请输入提取码
提取码:p772
2. 上传到服务器
上传到第一台服务器 nacos-server1 /opt目录下
3. 解压
nacos-server1执行
解压到/opt目录下
tar -zxvf nacos-server-2.0.3.tar.gz -C /opt
4. 配置数据库
4.1准备好mysql数据库
4.2创建一个新的数据库
创建新数据库nacos
4.3执行nacos建库脚本
在nacos安装目录conf文件夹下找到nacos-mysql.sql,在mysql数据库nacos执行
5. 修改nacos配置文件
在nacos-server1执行
在nacos安装目录conf下找到application.properties文件,编辑,找到如下内容
修改为实际的数据库信息后如下
注意:如果mysql不是安装在本地,mysql用户必须设置允许外部访问
在nacos安装目录conf下找到cluster.conf.example文件,将其重命名为cluster.conf,修改cluster.conf文件,将其中的默认的ip信息删除,将nacos集群中每一台nacos实例的ip添加进去。
nacos-server1ip:8848
nacos-server2ip:8848
nacos-server3ip:8848
6. 复制
nacos-server1执行
将nacos安装目录拷贝到另外两台服务器
scp -r /opt/nacos root@nacos-server2:/opt/
scp -r /opt/nacos root@nacos-server3:/opt/
7. 关闭防火墙
nacos-server1、nacos-server2、nacos-server3执行
# 集群通信端口 7848
firewall-cmd --add-port=7848/tcp --permanent
# 8848 主端口,客户端、OpenAPI所使用的HTTP端口
firewall-cmd --add-port=8848/tcp --permanent
# 9848 客户端gRPC请求服务端口,用户客户端向服务端发起连接和请求
firewall-cmd --add-port=9848/tcp --permanent
# 9849 服务端gRPC端口,用于服务间同步等
firewall-cmd --add-port=9849/tcp --permanent
# 重新加载防火墙
firewall-cmd --reload;
#查看防火墙开发的端口
firewall-cmd --list-ports
8. 启动
nacos-server1、nacos-server2、nacos-server3执行
注意:需要先安装jdk并配置JAVA_HOME环境变量才可以启动nacos
cd /opt/nacos;
./bin/startup.sh
如上图所示,启动日志在/opt/nacos/logs/start.out文件中
9. 访问
浏览器访问下面任意一个地址都可以:
http://nacos-server1ip:8848/nacos
http://nacos-server2ip:8848/nacos
http://nacos-server3ip:8848/nacos
账号:nacos/nacos
10. 配置自启动
11. 配置nginx负载均衡
注意:nginx需要包含stream模块,rpm安装的默认已包含,源码安装的需要指定
在nginx.conf文件http模块增加如下内容
upstream nacos_upstream {
server nacos-server1ip:8848;
server nacos-server2ip:8848;
server nacos-server3ip:8848;
}
server {
listen 18848;
server_name localhost;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://nacos_upstream;
proxy_read_timeout 7200s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
stream {
upstream nacos_grpc1_stream{
server nacos-server1:9848;
server nacos-server2:9848;
server nacos-server3:9848;
}
server {
listen 19848 so_keepalive=on;
tcp_nodelay on;
proxy_pass nacos_grpc1_stream;
}
}
端口号说明
18848 主端口
主端口,客户端、OpenAPI所使用的HTTP端口
这里使用18848端口来代理的8848端口,如果nginx和nacos没在同一台服务器上 ,依然可以使用8848端口
19848
客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求,主端口+1000
这里使用19848端口来代理的9848端口,如果nginx和nacos没在同一台服务器上 ,依然可以使用9848端口
防火墙配置
nginx所在服务器执行
# 主端口,客户端、OpenAPI所使用的HTTP端口
firewall-cmd --add-port=18848/tcp --permanent
# 9848 客户端gRPC请求服务端口,用户客户端向服务端发起连接和请求
firewall-cmd --add-port=19848/tcp --permanent
# 重新加载防火墙
firewall-cmd --reload;
微服务配置
注意:微服务bootstrap配置文件中的server-addr要根据nginx服务器ip和配置文件中的端口号来配置
比如nginx ip为192.168.110.192 nacos代理端口为 18848,则示例配置为
spring:
application:
name: sky-product
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 192.168.110.192:18848
config:
# 配置中心地址
server-addr: ${spring.cloud.nacos.discovery.server-addr}