如何在Ubuntu的Linux系统上搭建nacos集群

  1. 官方给出的集群部署架构图
    1. 集群部署说明 (nacos.io)
    2. 3个或3个以上nacos节点才能构成集群
  2. 当前示例中包含3个nacos节点,同时一个负载均衡器代理3个nacos,本示例中负载均衡器可使用的是nginx
    1. 准备并安装好正常运行的nginx,本示例略
    2. 准备并安装好正常运行的MySQL数据库,本示例略
    3. 3个nacos节点地址信息
      1. 节点ipport
        nacos1192.168.xxx.xxx8841
        nacos2192.168.xxx.xxx18841
        nacos3192.168.xxx.xxx28841
      2. 根据自己的实际情况设置,端口建议不要设置为连续的,防止nacos启动时有可能存在端口冲突,最好不同nacos的节点的端口相差有一定的步数,步数大于1002以上
  3. 开始搭建nacos集群
    1. 下载nacos安装包
      1. https://github.com/alibaba/nacos/releases
      2. 本示例下载的压缩包为:nacos-server-2.3.0.tar.gz
    2. 通过ssh远程工具将压缩包上传到Linux服务器中,然后再解压
      1. tar -zxvf nacos-server-2.3.0.tar.gz
    3. 初始化nacos的数据库脚本
      1. 在解压的文件中的conf文件夹中找到mysql-schema.sql,这里是nacos建立数据库的相关SQL数据,使用数据库管理工具新建一个数据库名称为nacos的数据库,并将当前mysql-schema.sql的sql文件在nacos数据库中执行,结果如下所示
    4. 回到Linux服务中,进入nacos的conf目录,将配置文件cluster.conf.example,重命名为cluster.conf
      1. mv cluster.conf.example cluster.conf
    5. 将配置文件cluster.conf修改为以下信息,其中ip地址修改为自己的服务器ip地址,端口设定为自己设定的nacos的服务端口
      1. #
        # Copyright 1999-2021 Alibaba Group Holding Ltd.
        #
        # Licensed under the Apache License, Version 2.0 (the "License");
        # you may not use this file except in compliance with the License.
        # You may obtain a copy of the License at
        #
        #      http://www.apache.org/licenses/LICENSE-2.0
        #
        # Unless required by applicable law or agreed to in writing, software
        # distributed under the License is distributed on an "AS IS" BASIS,
        # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        # See the License for the specific language governing permissions and
        # limitations under the License.
        #
        
        #it is ip
        #example
        192.168.xxx.xxx:8841
        192.168.xxx.xxx:18841
        192.168.xxx.xxx:28841
        
    6. 修改配置文件application.properties,添加数据库配置、开启鉴权等相关信息
      1. ### 是否开启鉴权功能
        ### If turn on auth system:
        nacos.core.auth.enabled=true
         
        ### 配置自定义身份识别的key(不可为空)和value(不可为空)
        ### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
        ### The two properties is the white list for auth and used by identity the request from other server.
        nacos.core.auth.server.identity.key=exampleNacos
        nacos.core.auth.server.identity.value=exampleNacos
         
        ### 默认鉴权插件用于生成用户登陆临时accessToken所使用的密钥,使用默认值有安全风险
        ### 自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符。 Base64 在线编码解码: https://base64.us/
        ### The default token (Base64 String):
        nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
        
        # mysql数据库配置信息
        ### If use MySQL as datasource:
        ### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
        # spring.datasource.platform=mysql
        # 初始化使用的数据库为MySQL
        spring.sql.init.platform=mysql
        
        # 数据库连接数量
        ### Count of DB:
        db.num=1
        
        ### Connect URL of DB:
        # 连接mysql的url
        db.url.0=jdbc:mysql://192.168.xxx.xxx:3333/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
        # 连接mysql的用户
        db.user.0=root
        # 连接mysql的密码
        db.password.0=123456
        
    7. 将解压之后的nacos的文件复制3份,分别为nacos1、nacos2、nacos3
      1. cp -rf nacos ./nacos1
        cp -rf nacos ./nacos2
        cp -rf nacos ./nacos3
    8. 分别修改nacos的application.properties,将里面的server.port修改为指定的端口
      1. nacos1
        1. ### Default web server port:
          server.port=8841
      2. nacos2
        1. ### Default web server port:
          server.port=18841
      3. nacos3
        1. ### Default web server port:
          server.port=28841
    9. 分别给nacos1、nacos2、nacos3配置jdk环境,修改startup.sh文件
      1. # 配置JDK环境,要求JDK 1.8+
        export JAVA_HOME=/usr/local/project/openjdk-8
        export JRE_HOME=$JAVA_HOME/jre
        export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
        export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
        
    10. 然后分别启动nacos1、nacos2、nacos3的节点,启动脚本文件为startup.sh
      1. /usr/local/project/nacos-group/nacos1/bin/startup.sh
        /usr/local/project/nacos-group/nacos2/bin/startup.sh
        /usr/local/project/nacos-group/nacos3/bin/startup.sh
    11. 访问地址http://192.168.xxx.xxx:8841/nacos/,输入默认账号密码:nacos/nacos登录可到达nacos控制台,三个节点状态都是up则说明启动成功
      1. 同时如果都启动成功,所有节点的端口的nacos的控制台都可以正常访问
  4. 配置nginx的反向代理
    1. 默认端口占用情况
      1. 端口与主端口的偏移量描述
        88480主端口,客户端、控制台及OpenAPI所使用的HTTP端口
        98481000客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求
        98491001服务端gRPC请求服务端端口,用于服务间同步等
        7848-1000Jraft请求服务端端口,用于处理服务端间的Raft相关请求
      2. 使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。 9849和7848端口为服务端之间的通信端口,请勿暴露到外部网络环境和客户端测。
    2. 根据主端口偏移量,可以计算出客户端gRPC请求服务端端口:
      1. 8841+1000=9841
      2. 18841+1000=19841
      3. 28841+1000=29841
      4. nginx监听的是80端口,则80+1000=1080
    3. 找到nginx的配置文件conf/nginx.conf
    4. 修改conf/nginx.conf的配置文件信息,添加以下配置
      1. 在http块内添加
        1.     # upstream指令可以定义一组服务器
              upstream nacos-cluster {
                  server 192.168.xxx.xxx:8841;
                  server 192.168.xxx.xxx:18841;
                  server 192.168.xxx.xxx:28841;
              }
      2. 在server块中添加
        1.         location /nacos {
                      # 反向代理配置,将请求转发到指定的服务
                      proxy_pass http://nacos-cluster;
                  }
      3. 在stream块用于做nacos的TCP转发
        1. # stream块用于做nacos的TCP转发
          stream {
          
              # upstream指令可以定义一组服务器
              upstream nacos-cluster {
                  server 192.168.xxx.xxx:9841;
                  server 192.168.xxx.xxx:19841;
                  server 192.168.xxx.xxx:29841;
              }
          
              server {
                  # 80+1000=1080
                  listen 1080;
                  proxy_connect_timeout 30s;
                  proxy_timeout 5m;
                  # 反向代理配置,将请求转发到指定的服务
                  proxy_pass nacos-cluster;
              }
          
          }
    5. 启动nginx
      1. sudo /usr/local/project/nginx/sbin/nginx
      2. nginx监听的是80端口,所以需要管理员权限启动nginx
      3. 如果nginx启动报错类似于:nginx: [emerg] unknown directive "stream" in /usr/local/project/nginx/conf/nginx.conf:159,解决方案请参考作者当前博客链接:nginx启动报错nginx: [emerg] unknown directive “stream“ in /usr/local/project/nginx/conf/nginx.conf:159-CSDN博客
  5. 浏览器访问nginx监听的端口,访问nacos,当前示例访问地址为http://192.168.xxx.xxx/nacos/
    1. 显示可以正常访问
  6. 项目中连接nacos实现服务注册和服务发现
    1. server:
        port: 18080
      spring:
        application:
          #应用的名称
          name: nacos-user-service
        cloud:
          nacos:
            # Nacos Server 启动监听的ip地址和端口
            server-addr: 192.168.163.100:80
            discovery:
              # nacos开启鉴权之后的用户名
              username: nacos
              # nacos开启鉴权之后的用户登录密码
              password: nacos
              # 配置服务实例的集群名称
              cluster-name: GD
  7. 生产环境优化建议
    1. 实际部署时,我们最好给反向代理的nginx服务器设置一个域名,这样后续如果有服务器迁移,nacos的客户端也无需更改配置
    2.  Nacos的各个节点应该部署到多个不同的服务器上,这样可以做到容灾和隔离

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/245231.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

USB2.0 Spec 中文篇

体系简介 线缆 USB 是一种支持热拔插的高速串行传输总线,使用一对(两根)差分信号来传输数据,半双工。要求使用屏蔽双绞线。 供电 USB 支持 “总线供电” 和 “自供电” 两种供电模式。在总线供电方式下,设备最多可…

等保二级测评国家收费标准是多少?

随着信息化的快速发展,网络安全问题日益突出,等保测评作为网络安全领域的重要环节,越来越受到企业和政府的重视。然而,很多人在进行等保测评时,对于等保二级测评的费用标准并不清楚。本文将详细介绍等保二级测评的国家…

自动化测试基础篇:Selenium 框架设计(POM)

【导语】Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。本文介绍selenium的框架设计。 自动化测试框架 1.什么是自动化测试框架 简单来说,自动化测试框架就是由一些标准,协议&#…

一、win10+yolov8+anaconda环境部署

1、安装anaconda (1)打开aonconda下载地址:https://www.anaconda.com/download,点击download下载。 2、下载完成后,双击打开,点击Next,I Agree,选择just me; 3、勾选…

计算机组成原理-ATT格式vsIntel格式

文章目录 AT&T格式 vs lntel格式 x86汇编语言是lntel格式,还有一种汇编语言格式是AT&T AT&T格式 vs lntel格式 lntel格式中取主存地址内容未指明长度默认为32位,对应下图中第四行右边的指令 百分号 美元符号 小括号 可用于计算机结构体数组…

lwIP 细节之六:connected、sent、poll 回调函数是何时调用的

使用 lwIP 协议栈进行 TCP 裸机编程,其本质就是编写协议栈指定的各种回调函数。将你的应用逻辑封装成函数,注册到协议栈,在适当的时候,由协议栈自动调用,所以称为回调。 注:除非特别说明,以下内…

MATLAB 最小二乘空间直线拟合 (37)

MATLAB 最小二乘空间直线拟合 (37) 一、算法介绍二、算法实现1.代码一、算法介绍 对于空间中的这样一组点:大致呈直线分布,散乱分布在直线左右, 我们可采用最小二乘方法拟合直线,使用下面的代码可以得到图中的结果。(其中图片中的点解释和具体的实现代码如下所示) C++…

档案馆数字化建设实施方案

档案馆数字化建设实施方案主要包括以下几个方面的内容: 1. 目标与规划:明确数字化建设的目标和规划,确定数字化建设的优先领域和重点工作,制定长期和短期的发展规划。 2. 技术设施建设:建设专久智能数字化档案管理系统…

LSTM和GRU的介绍以及Pytorch源码解析

介绍一下LSTM模型的结构以及源码,用作自己复习的材料。 LSTM模型所对应的源码在:\PyTorch\Lib\site-packages\torch\nn\modules\RNN.py文件中。 上次上一篇文章介绍了RNN序列模型,但是RNN模型存在比较严重的梯度爆炸和梯度消失问题。 本文…

【TwinCAT学习笔记 1】TwinCAT开发环境搭建

写在前面 作为技术开发人员,开启任何一项开发工作之前,首先都要搭建好开发环境,所谓磨刀不误砍材工,一定要有耐心,一次不行卸载再装。我曾遇到过一个学生,仅搭建环境就用了两周,这个过程也是一…

数据寻址-偏移寻址(硬核)

目录 一. 基址寻址二. 变址寻址三. 相对寻址四. 硬件如何实现数的"比较" \quad \quad \quad \quad \quad \quad \quad 一. 基址寻址 \quad A就是偏移量 有的用通用寄存器来代替BR专用寄存器的功能 其中 R 0 R_0 R0​的位数是由通用寄存器的总数来判断的, 比如通用寄存…

社交网络分析1:起源发展、不同领域的应用、核心概念

社交网络分析1:社交网络相关定义和概念 写在最前面关于课程 社交网络、社交网络分析社交网络发展阶段(自己感兴趣)1. 社交网络的起源2. 社交网络的演变3. 社交网络的成熟4. 发展阶段补充和展望 2023社交大变革(自己感兴趣的点&…

安装spaCy及语言包下载安装

文章目录 1. spaCy的安装1.1 安装spaCy包方式1 : 通过pip / conda命令安装方式2 : 通过离线导入 1.2 安装语言模型方式1 : 通过pip / conda命令安装方式2 : 通过离线导入 2. 常见问题a. 版本问题 3. 参考文档 关注公众号:『AI学习星球』 回复:遥感图像语…

【Spring】04 国际化

文章目录 1. 定义2. Spring 的支持1) MessageSource接口2) ResourceBundleMessageSource 3. 配置国际化1)配置MessageSource Bean2)创建资源文件3)在Bean中使用国际化消息 4. 使用占位符和参数结语 Spring 为我们提供了…

橘子学K8S01之容器中所谓的隔离

我们一直都在说容器就是一个沙盒,沙盒技术顾名思义就是像一个集装箱一样,把应用(服务,进程之类的)装起来的技术,这样每个进程在自己的沙盒中和其他的沙盒隔离开来,每个沙盒之间存在一个边界使得他们互不干扰&#xff0…

【动手学深度学习】(十三)深度学习硬件

文章目录 一、CPU和GPU二、更多的芯片1.DSP:数字信号处理2.可编程阵列(FPGA)3.AI ASIC 三、单机多卡并行 一、CPU和GPU 提升CPU利用率 在计算ab之前,需要准备数据 主内存->L3->L2->L1->寄存器(数据只有进入寄存器才可以参与运算) 提升空间和时间的内存…

Linux基本开发工具

编译器和自动化构建工具 一、编译器——gcc、g1. 安装 gcc/g2. 使用3. 链接库4. 拓展命令:od/file/ldd/readelf 二、自动化构建项目——make、makefile1. 介绍2. 使用例子touch——change file timestampsstat——display file or file system status修改时间 .PHON…

Java入门学习笔记二

一、抽象类 当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的行为方式,那么这些方法都有具体的方法体。 分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是功…

国家开放大学 湖南开放大学形成性考核 平时作业 统一资料

试卷代号:1258 房屋建筑混凝土结构设计 参考试题 一、单项选择题(每小题2分,共计40分) 1.( )是将框架结构中的部分跨间布置剪力墙或把剪力墙结构的部分剪力墙抽掉改为框架承重。 A.梁板结构体系 B.框…

区块链的可拓展性研究【05】闪电网络

1.闪电网络:闪电网络是一种基于比特币区块链的 Layer2 扩容方案,它通过建立一个双向支付通道网络,实现了快速、低成本的小额支付。闪电网络的交易速度非常快,可以达到每秒数万笔交易,而且交易费用非常低,几…