注册中心 Nacos(集群部署)

本次集群部署使用的组件:
nacos-server 2.2.1
nginx 1.18.0

一、集群请求流程

一般使用nacos集群时,会在前端与后端之间采用nginx中间层作一个负载均衡,然后根据nacos集群中注册的服务,具体调用对应服务。


二、nginx安装

# 更新索引
sudo apt update
# 安装nginx
sudo apt install nginx
# 查看nginx版本
nginx -v
# 启动nginx
sudo systemctl start nginx
# 停止nginx
sudo systemctl stop nginx
# 重启nginx
sudo systemctl restart nginx

# 安装curl命令
sudo apt install curl
# 使用curl命令访问服务
curl http://127.0.0.1

三、nacos 数据源切换

nacos默认注册信息的数据是存在内存中的,为了保证集群中不同nacos实例的数据一致性,建议是使用mysql数据库作为注册信息数据源。
进入nacos配置文件目录conf/application.properties

#使用外置mysql数据源
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconn
ect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

四、nacos服务集群配置

  1. 重命名配置文件cluster.conf.examplecluster.conf
mv cluster.conf.example cluster.conf
  1. cluster.conf文件中添加集群节点信息(这里因为是单机模拟集群部署,所以需要修改端口,同时新版本的Nacos会占用四个连续的端口用于RPC调用,所以端口间隔最少为4)
  1. 修改bin/startup.sh文件关于集群JVM参数,因为虚拟机分配的内存比较小,所以为了保证正常集群部署,所以改小一下配置参数,内存足够的可以忽略这一步
-Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m
  1. 将nacos复制为三个服务
cp -r nacos nacos8848 nacos8858 nacos8868
  1. 分别修改对应conf/application.properties文件中的服务端口
  1. 分别启动nacos服务,观察nacos控制台,表明nacos集群部署成功

五、nginx配置

虽然nacos的集群部署已经完成,但是我们的订单服务配置文件中不可以直接配置其中一个nacos服务,这样就回到了单机模式了。所以我们需要通过一个nginx服务将订单服务的请求分发到不同nacos节点上。

  1. /etc/nginx/nginx.conf文件中添加Nacos集群服务代理
 upstream nacoscluster {
      server 127.0.0.1:8848;
      server 127.0.0.1:8858;
      server 127.0.0.1:8868;
}
server {
      listen 8847;
      server_name localhost;

      location /nacos/{
               proxy_pass http://nacoscluster/nacos/;
      }
}

由于nacos需要占用端口供gRPC调用使用,端口是基于服务端口+1000,所以还需在ngnix中将gRPC端口暴露出来

# nacos的grpc协议配置
stream {

       # 负载均衡配置(TCP长连接配置)
       upstream nacoscluster-tcp{
         server 127.0.0.1:9848;
         server 127.0.0.1:9858;
         server 127.0.0.1:9868;
        }
       server {

         listen 9847;

         proxy_pass nacoscluster-tcp;

        }
}

  1. 启动nginx服务
# 启动nginx服务
sudo systemctl start nginx
# 停止nginx服务
sudo systemctl stop nginx
# 重启nginx服务
sudo systemctl restart nginx
  1. 请求nginx代理的nacos服务地址,代理成功

六、微服务配置

  1. 订单以及库存服务application.yml文件中server-addr修改为nginx服务地址
  1. 通过nginx代理地址,正常访问Nacos控制台,同时订单和库存服务均正确注册
  1. 请求订单服务[http://localhost:8020/order/add](http://localhost:8020/order/add),调用库存服务正常
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容