centos7安装nacos

版本选择

Nacos 1.X 是老版本,将来会停止维护。 建议您使用2.X版本。 请移步到 Nacos2.X相关文档.

您可以在Nacos的release notes中找到每个版本支持的功能的介绍,当前推荐的稳定版本为2.1.1。
https://nacos.io/zh-cn/docs/quick-start.html

https://github.com/alibaba/nacos/releases

解决 Nacos 国内下载速度缓慢的问题

方案 1. 选择相应的版本源码下载

由于各种已知的原因(不可抗力),在国内下载的速度太慢了,记录分享下解决方案。

整体思路:使用国内的 Gitee 上的镜像传送门下载源码、进行本地编译

因为nacos需要依赖java,所以需要提前安装好jdk,官方推荐jdk8,按照要求安装即可,具体安装可以参考:
Linux环境JDK安装
在这里插入图片描述

如果部署nacos集群的话,需要通过nginx做集群的负载均衡,nginx的安装可以参考:Centos7 安装nginx

nacos的持久化使用的是MySQL
上面基础环境奠定了以后开始做nacos集群的安装和部署工作。

下载

https://github.com/alibaba/nacos/releases

特别提醒:

这里有个坑需要规避,进入这个下载地址后,不要直接点击后面的zip或者tar.gz下载,
需要点击对应版本号,进入详情页面,拉到底部下载,下载的包名是nacos-server-2.0.3.tar.gz。
如果直接点击后面的zip或者tar.gz下载,下载的包是nacos-2.0.2.tar.gz,这个不是编译好的安装包。

上传nacos安装包到服务器上

2.2 解压编译

  1. 解压下载的压缩包,
  2. 进入到 Nacos 文件夹,进行编译 命令如下: mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
  3. 可能报错,见文章下方:

在这里插入图片描述

  1. 编译结果如下 编译过程很慢,请耐心等待,编译好的在百度网盘,直接下载
    在这里插入图片描述

这里可以看到已经编译成功了,并且打好的包的位置也打印出来了。

  1. 启动验证
    4.1 解压 这里把上面的 nacos-server.zip 复制到服务器验证。
unzip nacos-server-$version.zip 
或者 
tar -xvf nacos-server-$version.tar.gz cd nacos/bin

4.2

启动服务器 Linux/Unix/Mac 启动命令 (standalone 代表着单机模式运行,非集群模式):sh startup.sh -m standalone 如果您使用的是 ubuntu 系统,或者运行脚本报错提示 [[符号找不到,可尝试如下运行:bash startup.sh -m standaloneWindows 启动命令 (standalone 代表着单机模式运行,非集群模式): cmd startup.cmd -m standalone 

4.3 登录 nacos 服务控制台验证 在浏览器输入:
http://ip:8848/nacos
用户名 / 密码默认为:nacos/nacos

bin 直接安装

https://blog.csdn.net/millery22/article/details/125564078?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-125564078-blog-122182282.235%5Ev38%5Epc_relevant_sort_base2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-125564078-blog-122182282.235%5Ev38%5Epc_relevant_sort_base2&utm_relevant_index=2

上传nacos安装包到服务器上

可以通过scp命令将nacos安装包上传到服务器上,命令如下:

scp D:\\nacos-server-2.0.3.tar.gz root@192.168.75.130:/usr/local

解压nacos安装包:

tar -xvf nacos-server-2.0.3.tar.gz

将名称改为nacos-8840

mv nacos nacos-8840

持久化数据库配置

进入nacos-8840/cnof目录下,将Connect URL of DB修改为如下内容:

spring.datasource.platform=mysql
jdbc.DriverClassName=com.mysql.cj.jdbc.Driver ## 如果使用数据库是MySQL8,需要加上此驱动名,否则不用加
db.num=1
db.url.0=jdbc:mysql://192.168.75.128:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai
db.user.0=root
db.password.0=123456

将nacos-8840/conf目录下的nacos-mysql.sql文件复制到数据库所在的服务器内,创建名为nacos_config数据库,并在数据库内执行sql脚本文件;

## 复制文件到数据库所在服务器
scp nacos-mysql.sql root@192.168.75.128:/usr/local
## 创建数据库并执行脚本
mysql -uroot -p123456
create datasource nacos_config
use nacos_config
source /usr/local/nacos-mysql.sql

修改集群配置
将nacos-8840/conf目录下的cluster.conf.example文件复制一份并重命名为cluster.conf,修改其内容如下:

## 复制并重命名
cp cluster.conf.example cluster.conf
## 修改内容,将文件内最后三行换成现有的集群ip和端口,如果超过3台依次向后加即可
vim cluster.conf
## 修改后如下:
192.168.75.130:8840
192.168.75.130:8850
192.168.75.130:8860

修改application.properties文件,将server-port修改为8840;

### Default web context path:
server.servlet.contextPath=/nacos
### Default web server port:
server.port=8840

配置优化点
这个优化点在你的服务器性能较好的情况下,可以不做,我是在单台虚拟机里面部署三个nacos服务,资源紧张,修改一下此配置更放心,进入nacos-8840/bin目录,找到startup.sh文件,将文件中java堆栈的配置修改小一点,这里修改成128m,修改内容JAVA_OPT=“${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m”,具体修改如下:

## 修改前的内容
if [[ "${MODE}" == "standalone" ]]; thenJAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
elseif [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; thenJAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"fiJAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
fi
## 修改后的内容
if [[ "${MODE}" == "standalone" ]]; thenJAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
elseif [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; thenJAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"fiJAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
fi

复制集群节点
上面已经完成端口为8840节点的配置,接下来将nacos-8840复制两份出来,并重命名:

cp -R nacos-8840 nacos-8850
cp -R nacos-8840 nacos-8860

修改8850和8860节点的配置,很简单,将application.properties文件中的server-port做对应的修改即可。
启动集群服务
分别执行三个节点的startup.sh命令:

# 在/usr/local目录下执行
./nacos-8840/bin/startup.sh
./nacos-8850/bin/startup.sh
./nacos-8860/bin/startup.sh

检查节点是否已经启动成功:

netstat -ano | grep 8840
netstat -ano | grep 8850
netstat -ano | grep 8860

配置nginx负载均衡
主要配置负载和监听,配置内容如下:

## 在http下配置负载
upstream nacoscluster {        server 127.0.0.1:8840;server 127.0.0.1:8850;server 127.0.0.1:8860;
}
http{## 在server内配置监听server {listen       8848;     ## 监听8848端口                 server_name  localhost;                                        #charset koi8-r;                                                        #access_log  logs/host.access.log  main;                                      location / {                            #root   html;                       #index  index.html index.htm;       proxy_pass http://nacoscluster;   ## 代理到负载上      }}
}
stream {upstream nacosgrpc {server 127.0.0.1:9840;server 127.0.0.1:9850;server 127.0.0.1:9860;}server {listen 9848; # 这里监听的端口是和http内监听的端口对应+1000得到的(8848+1000)proxy_pass nacosgrpc;}
}

配置完成后启动或者重启nginx即可。
访问nacos页面
在浏览器中输入:http://192.168.75.130:8848/nacos,会弹出登录页面,默认用户名和密码都是nacos,到此集群部署大功告成。

存在的坑点

官方解释

nacos2.0版本相比1.x新增了gRPC的通信方式,因此需要增加两个端口,新增端口在配置的主端口(server.port)基础上,进行一定的偏移量自动生成。偏移规则:

端口 与主端口偏移量 描述
9848 1000 客户端gRPC请求服务端端口,用于客户端服务发起连接和请求
9849 1001 客户端gRPC请求服务端端口,用于服务间同步等

改动引起的变化说明

因为这个改动,在一台机器上部署nacos集群时,不能将运行端口设置为连续端口,比如:8840、8841、8842,否则会发生端口冲突。

运行在8840端口nacos服务实际上会占用8840、8940、8941三个端口;

运行在8841端口nacos服务实际上会占用8841、8941、8942三个端口;

运行在8842端口nacos服务实际上会占用8842、8942、8943三个端口。

另一个问题

在官方文档中,还有一个很重要的说明,是加粗的内容:
使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。
正常Nacos都是使用集群的模式,需要使用nginx做转发,这里就需要在nginx配置文件中增加一些配置,如果继续使用nacos 1.x的配置,在启动项目的时候会出现报错。详细说明如下。

代码中nacos的配置信息

spring:application:name: nacos-payment-providercloud:nacos:discovery:server-addr: 192.168.75.130:8848

这个配置是在nacos 1.x的时候是没有问题的,但是如果你nacos更新到了2.x,也没有修改nginx配置文件中grpc的转发,这里就会出现启动项目报错问题。报错信息:Request nacos server failed。这里提到,但是这里没有需要修改的,需要修改的在nginx内。

nginx需要做的修改
首先是要求你的nginx中包含stream模块,如何检查你的nginx是否安装了stream模块呢,用下面的命令:

/usr/local/nginx/sbin/ningx -V

打印出来的信息如下:

nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

看下面的config arguments信息,如果包含–with-stream,那么就没有问题,stream模块已经包含在内。我这里就是没有这个模块,需要安装。采用我这种模式安装,首先注意一定要把nginx内的配置文件备份一下。

# 第一步,注意这里的--prefix=/usr/local/nginx根据你的实际情形来
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream
# 第二步make && make install

知道为啥让你备份了吧,这两步执行相当于重新装了一下。安装好以后,执行/usr/local/nginx/sbin/ningx -V命令,输出的结果就有–with-stream啦。
到现在就可以修改nginx的配置啦,其实在上面的安装过程已经体现了,在这里重点再提一下。配置内容如下。需要注意的是stream需要在http外,和http同级。

stream {upstream nacosgrpc {server 127.0.0.1:9840;server 127.0.0.1:9850;server 127.0.0.1:9860;}server {listen 9848; # 这里监听的端口是和http内监听的端口对应+1000得到的(8848+1000)proxy_pass nacosgrpc;}
}

源码安装

MAVEN - 如果没有License头会报错(apache-rat-plugin):Too man错误描述

Failed to execute goal org.apache.rat:apache-rat-plugin:0.13:check (rat-check) on project atlas-webapp: 
Too many files with unapproved license: 6 See RAT report

错误原因

由于添加了apache-rat-plugin插件,所以项目中新添加的文件如果没有加上License头,会在检查时报错。

解决方案

方案一 不推荐

在每个新添加的文件中,加上License头。

/** Licensed to the Apache Software Foundation (ASF) under one or more* contributor license agreements.  See the NOTICE file distributed with* this work for additional information regarding copyright ownership.* The ASF licenses this file to You 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.*/

方案二

文件打包时跳过检查,添加: -Drat.skip=true

mvn clean package -Drat.skip=true -DskipTests -Denforcer.skip=true -Pdist,embedded-hbase-solr

方案三 采用

将项目中的插件:apache-rat-plugin 去掉

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习中XGBoost算法调参技巧

本文将详细解释XGBoost中十个最常用超参数的介绍,功能和值范围,及如何使用Optuna进行超参数调优。 对于XGBoost来说,默认的超参数是可以正常运行的,但是如果你想获得最佳的效果,那么就需要自行调整一些超参数来匹配你…

消息队列前世今生 字节跳动 Kafka #创作活动

消息队列前世今生 1.1 案例一: 系统崩溃 首先大家跟着我想象一下下面的这个的场景, 看到新出的游戏机,太贵了买不起,这个时候你突然想到,今天抖音直播搞活动,打开抖音搜索,找到直播间以后&am…

基于HarmonyOS ArkUI实现七夕壁纸轮播

七夕情人节,为了Ta,你打算用什么方式表达爱?是包包、鲜花、美酒、巧克力,还是一封充满爱意的短信?作为程序员,以代码之名,表达爱。本节将演示如何在基于HarmonyOS ArkUI的SwiperController、Ima…

qt信号槽同步问题

目录 信号槽: 注意事项: 具体例子: 线程安全问题的例子: 信号槽: 在Qt编程中,信号(Signal)和槽(Slot)是一种用于在对象之间进行通信的机制。信号用于发出…

ubuntu22安装和部署Kettle8.2

前提 kettle是纯java编写的etl开源工具,目前kettle7和kettle8都需要java8或者以上才能正常运行。所以运行kettle前先检查java环境是否正确配置,java版本是否是8或者以上。 kettle安装 1、创建kettle目录,并将kettle的zip包解压到kettle目…

推荐前 6 名 JavaScript 和 HTML5 游戏引擎

推荐:使用 NSDT场景编辑器 助你快速搭建3D应用场景 事实是,自从引入JavaScript WebGL API以来,现代浏览器具有直观的功能,使它们能够渲染更复杂和复杂的2D和3D图形,而无需依赖第三方插件。 你可以用纯粹的JavaScript开…

使用ffmpeg将WebM文件转换为MP4文件的简单应用程序

tiktok网上下载的short视频是webm格式的,有些程序无法处理该程序,比如roop程序,本文介绍了如何使用wxPython库创建一个简单的GUI应用程序,用于将WebM文件转换为MP4文件。这个应用程序使用Python编写,通过调用FFmpeg命令…

研磨设计模式day13组合模式

目录 场景 不用模式实现 代码实现 有何问题 解决方案 代码改造 组合模式优缺点 思考 何时选用 场景 不用模式实现 代码实现 叶子对象 package day14组合模式;/*** 叶子对象*/ public class Leaf {/*** 叶子对象的名字*/private String name "";/**…

第十四课:采用 Qt 开发翻页/分页/多页窗体组件

功能描述:采用 Qt 开发一个翻页/分页/多页的窗体组件,封装为 QWidget 的子类,在你的应用程序中可直接使用。 一、最终演示效果 本次制作的翻页/分页/多页窗体组件是基于 Qt 开发,整个程序封装成 PageWidget 类,继承于…

5G NR:协议 - PDCCH信道

1、基本概念 不同于LTE中的控制信道包括PCFICH、PHICH和PDCCH,在5G NR中,控制信道仅包括PDCCH(Physical Downlink Control Channel),负责物理层各种关键控制信息的传递,PDCCH中传递的下行控制信息&#xff…

507页XX市应急管理局智慧矿山煤矿数字化矿山技术解决方案

导读:原文《507页XX市应急管理局智慧矿山煤矿数字化矿山技术解决方案》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 部分内容: 第一章 项…

Git基础教程-常用命令整理:学会Git使用方法和错误解决

目录 一、了解Git的基本概念 二、Git的安装和配置 Git的安装 Git的配置 用户信息 文本编辑器 差异分析工具 查看配置信息 三、Git的基本操作 基本原理 基本操作命令 基本操作示例 场景一:创建新仓库 场景二:拉取并编辑远程仓库 四、常见问…

ModaHub魔搭社区:将图像数据添加至Milvus Cloud向量数据库中

将图像数据添加至向量数据库中 图像分割裁剪完成后,我们就可以将其添加至 Milvus Cloud 向量数据库中了。为了方便上手,本项目中使用了 Milvus Lite 版本,可以在 notebook 中运行 Milvus 实例。接下来,使用 PyMilvus 连接至 Milvus Lite 提供的默认服务器。 这一步骤中,…

量化:pandas基础

文章目录 简介Series构造 DataFrame构造列的查改增删填充默认值用loc与iloc取数据条件选择 简介 pandas是 Python 的核心数据分析支持库,提供了快速、灵活、明确的数据结构。 pandas主要的两种数据结构为Series和DataFrame,分别用于处理一维和二维数据。…

掌握C/C++协程编程,轻松驾驭并发编程世界

一、引言 协程的定义和背景 协程(Coroutine),又称为微线程或者轻量级线程,是一种用户态的、可在单个线程中并发执行的程序组件。协程可以看作是一个更轻量级的线程,由程序员主动控制调度。它们拥有自己的寄存器上下文…

常见API架构介绍

常见API架构介绍 两个服务间进行接口调用,通过调用API的形式进行交互,这是常见CS架构实现的模式,客户端通过调用API即可使用服务端提供的服务。相较于SPI这种模式,就是服务端只规定服务接口,但具体实现交由第三方或者自…

https 的ssl证书过期处理解决方案(lighthttpd)

更换证书:lighthttpd 配置文件位置:/opt/vmware/etc/lighttpd/lighttpd.conf (配置文件的最底部 G快速来到底部) 方案一:阿里云申请免费的证书 这里公司内网环境没有配置域名,可以创建一个临时域名&…

【JS真好玩】自动打字机效果

目录 一、前言二、布局分析三、总体样式四、中间部分五、底部5.1 div5.2 label5.3 input 六、JS让它动起来6.1定时器6.2 字符串处理6.2.1 slice6.2.2 splice6.3.3 split 七、总结 一、前言 大家好,今天实现一个自动打字机效果,旨在实现一些网上很小的de…

uniapp国际化npm install vue-i18n报错

npm install vue-i18n //npmyarn add vue-i18n //yarn在vue2环境下,默认安装 npm install vue-i18n 的版本是 vue-i18n9.1.9,所以报错。 npm view vue-i18n versions --json 用以上命令查看版本: vue2建议5.0版本 npm install vue-i1…

python可视化matplotlib——绘制正弦和余弦

这是一个使用matplotlib库绘制正弦和余弦函数曲线的代码示例。代码中导入了需要的库,并设置了x轴和y轴的标签字体为华文楷体。然后,使用numpy生成一组x轴上的值t,并使用正弦函数生成对应的y轴值s,再使用余弦函数生成对应的y轴值z。…