Nacos2.0.3集群搭建

集群搭建

前置条件

  • JDK 1.8
  • MySQL 5.7.29
  • Nacos 2.0.3

搭建过程

  1. 将Nacos安装包上传至三个服务器,本次搭建使用三个端口来模拟三个不同的主机
  2. 解压: tar -zvxf nacos-server-2.0.3.tar.gz
  3. Nacos持久化,首先确保服务器已经安装MySQL(Nacos持久化要求MySQL版本在5.6.5以上),如果不持久化,会造成Nacos重启后,配置文件丢失,无法持久化
    1. 首先在MySQL中新建一个数据库(nacos_config)

    2. nacos的脚本存放位置: nacos/conf/nacos-mysql.sql
      Nacos2.0.3集群搭建_第1张图片

    3. 将nacos脚本导入到新建的数据库中,导入成功后如下。

Nacos2.0.3集群搭建_第2张图片

  1. 修改Nacos的配置文件,配置mysql持久化,位置位于nacos/conf/application.properties
    Nacos2.0.3集群搭建_第3张图片


将数据连接改为mysql ,配置数据库的连接驱动,账号密码等

Nacos2.0.3集群搭建_第4张图片

### If use MySQL as datasource:
spring.datasource.platform=mysql

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

### Connect URL of DB:
db.url.0=jdbc:mysql://你的数据库ip:3306/nacos_dev?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user.0=用户名
db.password.0=密码
  1. 配置cluster.conf
    1. 确定好三个端口号(注意三个端口不要连着,下面会说原因)

    2. 把conf文件下cluster.conf.example文件重命名,去掉.example cp cluster.conf.example cluster.conf
      Nacos2.0.3集群搭建_第5张图片

    3. 修改文件内容,vim cluster.conf,注意:这个IP不能写127.0.0.1,必须是Linux命令hostname -i能够识别的IP
      Nacos2.0.3集群搭建_第6张图片

XX.XXX.XXX.XX:XXXX # 节点1
XX.XXX.XXX.XX:XXXX # 节点2
XX.XXX.XXX.XX:XXXX # 节点3

  1. 将nacos复制三份,在nacos/conf/application.properties中修改端口号(端口号不要连着)
    Nacos2.0.3集群搭建_第7张图片

  2. 启动服务:三台服务器依次启动。

    1. 进入nacos/bin
    2. 执行 ./startup.sh

nginx 反向代理

  • nacos2.x有个大坑,现在即使是搭建nacos集群成功了,但是java程序注册服务进nacos集群中,启动时报错Connection is unregistered.或Client not connected,current status:STARTING.
  • 原因如下:一个nacos启动默认端口是8848,那么nacos同时也会启动9848这个grpc端口。 grpc端口 (9848)= 启动端口(8848) + 1000,同理我nacos集群启动了三个nacos 端口分别为8847,8852,8858,那么这三个nacos也会启动 9847,9852,9858.,因为我们已经用nginx代理服务器的8848反向代理 三个nacos 端口分别为8847,8852,8858。但是我们还没有 代理三个nacos端口9847,9852,9858.
  • 我采用的解决办法是,用nginx代理他的grpc端口,但是因为Nginx对于gRPC不适合长连接的操作。所以更好的解决方法为:用nginx来带来nacos的8848端口,用haproxy来代理9848的grpc端口。本文没有实现,想实现可以参考https://blog.csdn.net/qq_39009944/article/details/123634837?spm=1001.2014.3001.5502

Nacos2.0.3集群搭建_第8张图片



# nacos服务器grpc相关地址和端口,需要nginx已经有stream模块
stream {
  upstream nacos-server-grpc {
    server 127.0.0.1:9847;
    server 127.0.0.1:9852;
    server 127.0.0.1:9858;
  }
  server {
    listen 9888;
    proxy_pass nacos-server-grpc;
  }
}


http {
  upstream cluster {
    server 127.0.0.1:8847;
    server 127.0.0.1:8852;
    server 127.0.0.1:8858;
  }

  server {
    listen       8888;
    server_name  localhost;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    location / {
      #root   html;
      #index  index.html index.htm;
      proxy_pass http://cluster;
    }
  }

Nginx 相关命令:
启动nginx命令(指定配置文件启动)
nginx/sbin/nginx -c /nginx/conf/nginx.conf
关闭
nginx/sbin/nginx -s stop
重启
nginx/sbin/nginx -s reload

启动效果

Nacos2.0.3集群搭建_第9张图片

问题总结

集群配置连续端口时端口占用问题

Nacos2.0.3集群搭建_第10张图片


顺序启动8848则连带启动9848与9849端口。再启动8849则需连带启动9849与9850,9849端口冲突。

解决未授权访问漏洞

修改application.properties配置项

### If turn on auth system:
nacos.core.auth.enabled=true

Nacos2.0.3集群搭建_第11张图片

  • 这样修改后项目连接中需要增加访问的账号密码

你可能感兴趣的:(分布式,nacos集群)