Nacos(二)Linux部署Nacos集群环境(兼容Nacos1.x与2.x)

《Linux部署Nacos-2.0.3单机环境》
《Docker部署Nacos-2.0.3单机环境》
《Docker部署Nacos-2.0.3集群环境》
《SpringCloud整合Nacos2.x使用》

前言

具体搭建那个版本的Nacos,最好根据需要整合的SpringCloud版本来决定。
版本对应参考:组件版本关系
在这里插入图片描述

对比1.x版本

Nacos1.x的搭建方式和2.x的方式,基本一致,相比1.X新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成(分别偏移了1000和1001),nacos默认的端口为8848,偏移后的新增端口为9848与9849

端口与主端口的偏移量描述
98481000客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求
98491001服务端gRPC请求服务端端口,用于服务间同步等

在集群环境下,Nacos2.x为了兼容1.x的平滑升级,开启了双写功能,需要在集群搭建完成后,关闭双写功能。

1、搭建单机环境

首先按照单机环境的流程成功,需要进行配置mysql环境配置application.properties配置startup.sh,参考《Linux部署Nacos-2.0.3单机环境》完成搭建的搭建并且成功运行。

2、配置集群

配置nacos集群,至少需要三个节点。

如果是在不同服务器上搭建:

  • 可以先在某一台上,完成单机环境的配置然后拷贝到其他服务器,再完成后续的集群配置
  • 直接在每台服务器上进行单机的环境部署,然后再完成后续的集群配置。

如果是在同服务器上搭建:

  • 在通过一个服务上部署集群,进行测试时,可以将完成单机环境的配置然后拷贝多份,比如分为:nacos1、nacos2、nacos3,并且修改不同的端口。

部署流程如下:

节点及端口分为:nacos1(8848、9848、9849)、nacos2(8858、9858、9859)、nacos3(8868、9868、9869)

  • 1、搭建单机环境:
    /opt/cloud/nacos-cluster(手动创建)目录下,部署一个nacos单机环境,并且修改nacos的名称为nacos1,保证nacos1搭建成功。

  • 2、复制文件
    将搭建好的nacos1复制为nacos2nacos3

  • 3、修改集群cluster.conf
    分别进入到nacos1、nacos2、nacos3的配置目录中,将cluster.conf.example 修改为 cluster.conf并且修改里面的配置。

    # 分别进入到nacos1、nacos2、nacos3的配置目录
    cd /opt/cloud/nacos-cluster/nacos1[nacos2/nacos3]/conf
    
    # 修改nacos1、nacos2、nacos3中的配置文件名称
    mv cluster.conf.example cluster.conf
    
    # 分别修改nacos1、nacos2、nacos3中cluster.conf的配置
    vim cluster.conf
    
    # nacos1、nacos2、nacos3配置内容均如下,每个nacos均要配置集群中的所有节点[至少3个]
    111.229.160.175:8848
    111.229.160.175:8858
    111.229.160.175:8868
    

    在这里插入图片描述

  • 4、修改application.properties
    分别进入到nacos1、nacos2、nacos3的配置目录中,修改application.properties配置中的端口。

    	# 分别进入到nacos1、nacos2、nacos3的配置目录
    	cd /opt/cloud/nacos-cluster/nacos1[nacos2/nacos3]/conf
    	
    	# 分别修改nacos1、nacos2、nacos3中application.properties的配置
        vim application.properties
        
    	# 端口依次修改为8848、8858、8868
    	server.port=8848[8858/8868]
    	
    	# 集群模式下,使用的LVS的DR模式作的nacos的vip,这样三个节点上面都有这个vip以及这个节点自己的ip
    	# 导致nacos把这个vip也当作一个节点了。
    	# 修改nacos.inetutils.ip-address=为当前服务器的ip
    	nacos.inetutils.ip-address=111.229.160.175
    

    在这里插入图片描述

  • 5、修改JVM内存
    集群环境下,JVM内存默认为2g,如果资源不足或者资源有余,可以进行JVM内存修改。

    # 分别进入到nacos1、nacos2、nacos3的bin目录
    cd /opt/cloud/nacos-cluster/nacos1[nacos2/nacos3]/bin
    
    # 分别修改nacos1、nacos2、nacos3中application.properties的配置
    vim startup.sh
    	    
    # 依次修改JVM,如下配置
    JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    

    在这里插入图片描述

文档中进行了在本机如何配置集群环境,如果在不同服务器上配置集群环境,那么可以不需要修改端口的步骤,只进行cluster.conf文件配置即可。

3、启动、停止集群节点

操作命令:

# 以内部数据源方式启动,依次启动
sh startup.sh

# 停止
sh shutdown.sh

成功启动任何一个节点:

启动日志:
在这里插入图片描述
登录测试:

通过:http://112.14.15.16:8848、8858、8868/nacos,成功访问nacos则表示搭建成功。
默认账户:nacos
默认密码:nacos,为了安全在第一次进入到nacos以后最好修改一次密码。
在这里插入图片描述
控制台节点信息:
在这里插入图片描述

成功启动所有节点:
在这里插入图片描述
集群搭建成功后,数据会进行同步;访问任意一个节点,都可以看到所有的服务列表、配置列表等数据

4、关闭双写

如果成功启动集群并且稳定运行后,需要关闭双写,否则SpringCloud无法连接进集群,会抛出异常:

Nacos cluster is running with 1.X mode, can’t accept gRPC request temporarily. Please check the server status or close Double write to force open 2.0 mode. Detail https://nacos.io/en-us/docs/2.0.0-upgrading.html.

当集群中最后一个节点也升级到2.0.X版本时,集群会开始进行升级检测。每个节点会对该节点的服务信息和实例信息进行校验,并检测是否还有未完成的双写任务。

当该节点的服务信息和实例信息已经核对成功,并且没有双写任务存在时,该节点会判定自己已经做好升级准备,并修改自己的状态且通知其他Nacos节点。每台节点是否完成升级准备可以从控制台的集群管理中元数据信息中看到"readyToUpgrade": false/true

当集群中所有节点均判定为准备完毕时。Nacos集群中的节点会进行升级切换,自动升级到Nacos2.0的处理逻辑。

参考官网文档:https://nacos.io/zh-cn/docs/2.0.0-upgrading.html

在这里插入图片描述

  • 正常模式关闭双写:

    分别在集群服务器上运行以下语句,8848为对应nacos的端口:

    curl -X PUT 'localhost:8848/nacos/v1/ns/operator/switches?entry=doubleWriteEnabled&value=false'
    
  • 鉴权模式关闭双写:

    如果nacos开启了鉴权,则需要获取accessToken,分别在集群服务器上执行以下步骤:

    1、使用用户名和密码登陆nacos:

    curl -X POST '127.0.0.1:8848/nacos/v1/auth/login' -d 'username=nacos&password=nacos'
    

    2、若用户名和密码正确,返回信息如下:

    {"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYwNTYyOTE2Nn0.2TogGhhr11_vLEjqKko1HJHUJEmsPuCxkur-CfNojDo","tokenTtl":18000,"globalAdmin":true}
    

    3、加上accessToken关闭双写:

    curl -X PUT 'localhost:8848/nacos/v1/ns/operator/switches?accessToken=实际的token值&entry=doubleWriteEnabled&value=false'
    

5、配置自启服务

自启服务需要手动配置JAVA_HOME路径路径,修改 /bin/startup.sh文件

查询jdk配置:

#1、查询jdk配置
echo $JAVA_HOME
# 2、结果
/usr/local/java/jdk1.8.0_131

修改为指定jdk:

# 修改配置
vim start.sh

# 内容
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/local/java/jdk1.8.0_131

在这里插入图片描述

创建自启服务:

vim /usr/lib/systemd/system/nacos.service

加入内容:

[Unit]
Description=nacos
After=network.target

[Service]
Type=forking
# 单节点方式启动,填写实际路径
# ExecStart=/opt/cloud/nacos/bin/startup.sh -m standalone
# 集群方式启动-外部数据源启动,填写实际路径
ExecStart=/opt/cloud/nacos/bin/startup.sh

ExecStop=/opt/module/nacos/bin/shutdown.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target

加入自启:

systemctl daemon-reload
systemctl enable nacos.service

操作命令:

# 启动
systemctl start  nacos

# 停止
systemctl stop  nacos

6、配置nginx映射

由于是集群配置,存在多个服务端控制台,我们可以通过任意一个控制台看到所有节点信息,为了减少节点的访问量,想要访问不同的节点需要输入不同的ip:port

通过nginx做负载均衡,向外暴漏一个统一的地址,目的有两个:

  • 为了单个节点的减轻压力和方便操作
  • 在SpringCloud整合,server-addr配置一个统一的入口路径

ngxin配置内容如下:

  ....
  ....
  upstream nacos-proxy {
     server 111.229.160.175:8848 weight=1;
     server 111.229.160.175:8858 weight=1;
     server 111.229.160.175:8868 weight=1;
  }

  server {
	....
	location /nacos {
          proxy_pass         http://nacos-proxy;
      	  port_in_redirect   on;
      	  proxy_redirect     off;    
          proxy_set_header   Host             $host;  
          proxy_set_header   X-Real-IP        $remote_addr;
          proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
          proxy_set_header   Upgrade $http_upgrade;
          proxy_set_header   Connection "upgrade";
   	}
   ....
   }

效果:
在这里插入图片描述

7、SpringCloud连接集群

spring:
  cloud:
    nacos:
      discovery: 
      	#连接nacos集群前,配置好nginx负载均衡,直接连接nginx的ip+port即可,80端口可以忽略
        server-addr: 162.14.115.18
        ......
评论 4 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

一恍过去

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值