linux部署nacos集群,虚拟ip的方式,官方推荐

一、官方说明

官方文档链接,官方推荐,采用第三种

在这里插入图片描述

二、部署安装

1、准备3台服务器,并且安装jdk,jdk安装教程

2、下载nacos安装包,下载地址

  • Windows 下载 .zip 包
  • Linux / Unix / Mac 下载 .tar.gz 包。

3、解压三台服务器上的nacos安装包,放在/usr/local/nacos下
在这里插入图片描述
在这里插入图片描述

4、首先需要知道Nacos有个默认的内嵌数据库,是derby,但是我们需要换成mysql,方便我们后面管理,然后需要搭建一个Mysql,没有搭建Mysql的可以看下我的教程,Linux安装Mysql教程

在 conf 目录下,提供了 MySQL 数据库初始化脚本 mysql-schema.sql。
我们可以根据自己的需要,创建一个库。例如说,创建一个 nacos-example 库。然后,使用该脚本进行数据库的初始化。最终表结构,如下图所示:
在这里插入图片描述

5、修改 application.properties,以mysql方式持久化,这里需要注意的是,集群模式必须配自己的独立ip

nacos.inetutils.ip-address=192.168.3.44

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=your password

为什么要设置nacos.inetutils.ip-address?
**分析:**正常情况下,上面的步骤就可以安装成功了,三台服务器上的nacos可以对外提供服务,彼此间可以通信。但是,通常在生产环境下的服务器是多网卡的,
使用 ip addr 命令查看linux主机的网卡。
在这里插入图片描述

  • 第一个lo网络ip是回路ip,127.0.0.1,这个是标配
  • 第二个enp0s3网络设备,ip是10.0.2.15,这个是因为我的服务器网络使用了双网卡:桥接+HostOnly模式。正常的服务器是没有的。
  • 第三个enp0s8就是本服务器真正的使用到提供服务的网络ip,如:192.168.3.44。
  • 第四个网络设备是因为我在这台虚拟机上安装过docker,所以有一个docker0的网络设备。

**问题:**解决网卡获取的不是我们希望绑定的网卡的问题:当我们配置完成之后,使用startup.sh命令启动。发现集群节点列表中并没有任何记录。而且后台服务日志报错,内容如下:
在这里插入图片描述
通过日志我们看到nacos程序自动获取的是10.0.2.15这个ip,而我们期望nacos绑定的是192.168.3.x的ip。

6、复制一份集群配置文件

cp cluster.conf.example cluster.conf

在这里插入图片描述

7、 启动 Nacos 服务

sh nacos/bin/startup.sh

8、再对另外两台服务器进行上述操作并启动后,至此集群部署已完成
在这里插入图片描述
在这里插入图片描述
注意点:在开通端口的时候要额外开通其他端口,
在nacos客户端升级为2.x版本后,新增了gRPC的通信方式,新增了两个端口。这两个端口在nacos原先的端口上(默认8848),进行一定偏移量自动生成。

端口与主端口的偏移量描述:
9848:客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求
9849:服务端gRPC请求服务端端口,用于服务间同步等
7848:Nacos 集群通信端口,用于Nacos 集群间进行选举,检测等

三、nacos集群负载均衡

修改 Nginx 配置文件 nginx.conf如下:

http {
 
    include       mime.types;
 
    default_type  application/octet-stream;
 
    sendfile        on;
 
    keepalive_timeout  65;
 
    #nacos集群负载均衡
    upstream nacos-cluster {
        server 192.168.3.44:8848;
        server 192.168.3.45:8848;
        server 192.168.3.46:8848;
    }
 
    server {
        listen       8848;
        server_name  192.168.3.1;
        location / {
            #root   html;
            #index  index.html index.htm;
            proxy_pass http://nacos-cluster;
        }
 
        error_page   500 502 503 504  /50x.html;
 
        location = /50x.html {
            root   html;
        }
    }
}

由于nacos2.0以后新增了tcp通信端口,要在原端口号的基础上+1000来做通信。所以我们也需要在stream代码段中配置对应的tcp通信端口号(集群的端口是8848,那也要+1000和+1001,也就是9848、9849)
Nginx配置nacos TCP转发配置(需要nginx支持stream模块不然会报错):

#配置nacos TCP转发
stream {
    upstream nacos1 {
        server 192.168.3.44:9848;
        server 192.168.3.45:9848;
        server 192.168.3.46:9848;
    }
 
    server {
        listen 9848;
        proxy_pass nacos1;
    }
 
    upstream nacos2 {
        server 192.168.3.44:9849;
        server 192.168.3.45:9849;
        server 192.168.3.46:9849;
    }
 
    server {
        listen 9849;
        proxy_pass nacos2;
    }
}

重启nginx,至此全文end

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值