nacos集群搭建

 

官方文档提供了一个Nacos集群的架构图,当我们访问Nacos时,首先会经过SLB,也就是负载均衡,通常是一个nginx,通过nginx来进行分发到具体的Nacos服务器上面。

我们需要给不同的服务器进行部署Nacos,我们这里演示的是一个伪的集群,在一台服务器上面搭建三个Nacos。

1. 环境准备

请确保是在环境中安装使用:

  1. 64 bit OS Linux/Unix/Mac,推荐使用Linux系统。
  2. 64 bit JDK 1.8+;下载.配置
  3. Maven 3.2.x+;下载.配置
  4. 3个或3个以上Nacos节点才能构成集群。

2. Nocas下载:https://github.com/alibaba/nacos/releases

将下载好的安装包上传到linux服务器上并进行解压

[root@VM-8-14-centos nacos]# tar -zxvf nacos-server-1.4.1.tar.gz 

[root@VM-8-14-centos nacos]# ll
drwxr-xr-x 5 root root     4096 Jun  7 20:39 nacos
-rw-r--r-- 1 root root 79052411 Jun  7 20:39 nacos-server-1.4.1.tar.gz

# 将解压后的nacos目录改一个名字,并复制三份,目录名结尾加一个端口
[root@VM-8-14-centos nacos]# mv nacos nacos8849
[root@VM-8-14-centos nacos]# cp -r nacos8849/ nacos8850
[root@VM-8-14-centos nacos]# cp -r nacos8849/ nacos8851
[root@VM-8-14-centos nacos]# ll
drwxr-xr-x 5 root root     4096 Jun  7 20:39 nacos8849
drwxr-xr-x 5 root root     4096 Jun  7 20:50 nacos8850
drwxr-xr-x 5 root root     4096 Jun  7 20:50 nacos8851
-rw-r--r-- 1 root root 79052411 Jun  7 20:39 nacos-server-1.4.1.tar.gz

配置集群配置文件

在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,请每行配置成ip:port。

 

# 创建cluster.conf文件
[root@VM-8-14-centos conf]# vim cluster.conf
# 输入以下内容,如果是真实的生产环境就配置各个服务器的ip和端口
114.132.75.63:8849
114.132.75.63:8850
114.132.75.63:8851

确定数据源

为什么需要将数据源配置成mysql数据库嘞?

这是因为nacos默认的数据源是使用的内置数据源,是存在内存中的,那么我们启动nacos集群的时候内存中的数据肯定就不能共享了,到时候我们的数据进行注册的话就会注册到各自的Nacos服务器中,这也就会造成数据不一致。为了保证数据一致性就需要将数据源改为数据库。

我们首先需要安装好数据库,然后创建一个数据库,然后执行安装包中提供的sql脚本,这个sql脚本只是一些建表语句,所以需要我们先创建一个数据库,需要注意mysql需要使用5.7+以上的版本,如果用低版本的mysql在执行sql脚本的时候可能会报错

 执行完sql脚本之后,编辑conf/application.properties文件,修改的内容如下图所示

修改启动脚本

我们还需要修改bin/startup.sh 启动脚本,因为如果是以集群的方式启动,Nacos默认占用的内存是2G,如果服务器的内存足够大可以不进行修改。

[root@VM-8-14-centos nacos8849]# vim bin/startup.sh 

 修改完成之后就可以启动了

[root@VM-8-14-centos nacos8849]# bin/startup.sh 

启动完成后,最后一行日志提示可以让我们去查看日志文件

 现在就可以在Nacos管理界面进行查看集群管理了,因为我现在只是启动了一台Nacos,所以其他两台是down

 然后再将刚刚修改的三个地方在另外两个nacos目录中也进行相应的修改。并启动这三个nacos。现在随便访问一个nacos的管理界面都可以看到

启动完成之后有一个问题,我们的服务应该如何写,Nacos Client到底写这三个Nacos服务中的哪一个嘞?

其实我们写任何一个都不行,因为这样就又像是单机了,其实我还需要安装一个nginx,用nginx来进行负载均衡,我们使用nginx代理的一个地址。

在nginx的配置文件nginx.conf进行如下的修改

    # 定义一个upstream,然后定义别名,再定义要进行负载均衡的ip
    upstream nacoscluster {
        server 127.0.0.1:8849;
        server 127.0.0.1:8850;
        server 127.0.0.1:8851;
    }

    server {
        listen       8847;  
        server_name  localhost; 
        
        # 这里判断的uri是因为nacos服务启动的conf/application.peoperties配置文件中指定的一个默认访问前缀,如下图所示
        location /nacos/ {
            proxy_pass    http://nacoscluster/nacos/;
        }
    }

 然后在nacos client中的配置文件写nginx的代理地址

server:
  port: 8084


spring:
  application:
    name: stock-service
  cloud:
    nacos:
      # 指定Nacos服务的地址
      server-addr: 114.132.75.63:8847
      discovery:
        username: nacos
        password: nacos
        namespace: public

nacos是支持多数据中心的,我们是多集群,我们可以如下所示的参数来进行设置,如果是单集群就没必要设置了

 这里的集群对应的是服务实例详情页面中最下方的集群。

 

posted @ 2023-08-22 09:09  剑阁丶神灯  阅读(129)  评论(0编辑  收藏  举报