centos7安装nacos

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

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

1.1 依次点击 1、2、3 选中我们的最新稳定版本 1.4.0
1.2 点击下载 ZIP、或者 clone 也行,这里都可以

2. 本地编译

2.1 预备环境准备
2.2 解压编译

3. 启动验证

3.1 解压
3.2 启动服务器
3.3 登录 nacos 服务控制台验证

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

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

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

如果部署nacos集群的话,需要通过nginx做集群的负载均衡,nginx的安装可以参考:nginx基础学习(一):linux环境下nginx的安装和配置文件的初步认识

nacos的持久化使用的是MySQL,如果需要了解MySQL安装可以参考以下两篇文章,分别是MySQL5.7和MySQL8的安装方法。

CentOS7环境下离线安装MySQL5.7数据库
CentOS7环境下离线安装MySQL8.0.28数据库
上面基础环境奠定了以后开始做nacos集群的安装和部署工作。

下载nacos

根据官方推荐,目前推荐使用2.0.3稳定版本。下载地址:nacos在github上的下载地址。

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安装包到服务器上
可以通过scp命令将nacos安装包上传到服务器上,命令如下:

推荐选用 Linux/Unix/Mac。 64 bit JDK 1.8+;下载 & 配置。 Maven 3.2.x+;下载 & 配置。
2.2 解压编译 1. 解压下载的压缩包,如下图: 在这里插入图片描述 2. 进入到 Nacos 文件夹,进行编译 命令如下: mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
在这里插入图片描述

  1. 编译结果如下 编译过程很慢,请耐心等待,文末也会给大家放上编译好的直接下载,伸手党必备

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

  1. 启动验证 3.1 解压 这里把上面的 nacos-server.zip 复制到服务器验证。

unzip nacos-server- v e r s i o n . z i p 或者 t a r − x v f n a c o s − s e r v e r − version.zip 或者 tar -xvf nacos-server- version.zip或者tarxvfnacosserverversion.tar.gz cd nacos/bin 3.2 启动服务器 Linux/Unix/Mac 启动命令 (standalone 代表着单机模式运行,非集群模式): sh startup.sh -m standalone 如果您使用的是 ubuntu 系统,或者运行脚本报错提示 [[符号找不到,可尝试如下运行:

bash startup.sh -m standalone Windows 启动命令 (standalone 代表着单机模式运行,非集群模式): cmd startup.cmd -m standalone 3.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;}
}

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

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

相关文章

k8s service (三)

K8s service (三) LoadBalancer类型的Service LoadBalancer和NodePort其实是同一种方式,目的都是向外暴露一个端口,区别在于LoadBalancer会在集群的外部再来做一个负载均衡设备,而这个设备需要外部环境支持的,外部服务发送到这…

excel 分组排序

excel中会遇到对不同分组数据进行排序,比如对于不同班级里的学生按照分数高低进行升序排序,可以采用如下公式 SUMPRODUCT((A$2:A$12A2)*(C$2:C$12>C2))1 如果需要 进行降序排序,将公式中的大于号替换为小于号即可

Cinema 4D软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Cinema 4D(简称C4D)是由德国Maxon Computer公司开发的一款三维动画渲染和建模软件,广泛应用于影视、广告、工业设计等领域。C4D因其高效率、易用性和强大的功能而受到广大设计师和艺术家的青睐…

vue 实现word文档页面内预览docx-preview 和 vue-office

1.先下载引入 npm i docx-preview --save import { renderAsync } from docx-preview;2.使用 fetch(url) .then((response) > {let docData response.blob(); //将文件转换成bolb形式//选择要渲染的元素let childRef document.getElementsByClassName("childRef&qu…

npm下载最后会卡顿很长时间

npm下载最后会卡顿很长时间 这几天在使用npm下载东西时会出现,快结束了,但是进度条就是卡在那,要等好久才能下载完 解决办法 换阿里云的源 更换源:npm config set registry https://registry.npmmirror.com/ 查看源&#xff…

SQL Server软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 SQL Server是一种关系型数据库管理系统,由美国微软公司开发。它被设计用于存储、管理和查询数据,被广泛应用于企业级应用、数据仓库和电子商务等场景。 以下是SQL Server软件的主要特点和功能&#xff1…

【PHP】PHP基本语法

1、PHP标记 当解析一个文件时&#xff0c;PHP 会寻找起始和结束标记&#xff0c;也就是 <?php 和 ?>&#xff0c;告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去&#xff0c;而任何起始和结束标记之外的部分都会被 PHP…

Pytorch-day07-模型保存与读取

PyTorch 模型保存&读取 模型存储模型单卡存储&多卡存储模型单卡读取&多卡读取 1、模型存储 PyTorch存储模型主要采用pkl&#xff0c;pt&#xff0c;pth三种格式,就使用层面来说没有区别PyTorch模型主要包含两个部分&#xff1a;模型结构和权重。其中模型是继承n…

spring cloud整合spring boot,整合nacos、gateway、open-feign等组件

补充&#xff1a; 想看具体详情的可以看我的github链接&#xff1a;codeking01/platform-parent: spring cloud整合spring boot、nacos、gateway、open feign等组件 (github.com) 由于我升级了jdk17&#xff0c;所以用上了spring boot 3.0.2了。 踩坑无数&#xff0c;一堆无用文…

通过C实现sqlite3操作,导入电子词典

#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sqlite3.h> int main(int argc, const char *argv[]) {//创建并打开一个数据库sqlite3 *db NULL;if(sqlite3_open("./dict.db",&db) ! SQLITE_OK){printf("…

宠物小程序开发

在当今社会&#xff0c;宠物已成为许多人生活中不可或缺的一部分。宠物市场的持续增长为创业者提供了巨大的商机。然而&#xff0c;作为一个创业者&#xff0c;要在竞争激烈的宠物市场中脱颖而出并不容易。因此&#xff0c;开发一个专属于自己的宠物小程序成为了解决这一难题的…

jdk 03.stream

01.集合处理数据的弊端 当我们在需要对集合中的元素进行操作的时候&#xff0c;除了必需的添加&#xff0c;删除&#xff0c;获取外&#xff0c;最典型的操作就是集合遍历 package com.bobo.jdk.stream; import java.util.ArrayList; import java.util.Arrays; import java.ut…

测试框架pytest教程(10)自定义命令行-pytest_addoption

pytest_addoption pytest_addoption是pytest插件系统中的一个钩子函数&#xff0c;用于向pytest添加自定义命令行选项。 在pytest中&#xff0c;可以使用命令行选项来控制测试的行为和配置。pytest_addoption钩子函数允许您在运行pytest时添加自定义的命令行选项&#xff0c;…

中国芯,寻找新赛道迫在眉睫

北京华兴万邦管理咨询有限公司 商瑞 陈皓 近期国内半导体行业的热点可以用两个“有点多”来描述&#xff0c;一个是中国芯群体中上市公司股价闪崩的有点多&#xff0c;另一个是行业和企业的活动有点多。前者说明了许多国内芯片设计企业&#xff08;fabless商业模式&#xff09;…

Ubuntu20 安装 libreoffice

1 更新apt-get sudo apt-get update2 安装jdk 查看jdk安装情况 Command java not found, but can be installed with:sudo apt install default-jre # version 2:1.11-72, or sudo apt install openjdk-11-jre-headless # version 11.0.138-0ubuntu1~20.04 sud…

在Jupyter Notebook中添加Anaconda环境(内核)

在使用前我们先要搞清楚一些事&#xff1a; 我们在安装anaconda的时候它就内置了Jupyter Notebook&#xff0c;这个jupyter初始只有base一个内核&#xff08;显示为Python3&#xff09; 此后其实我们就不需要重复安装完整的jupyter notebook了&#xff0c;只要按需为其添加新的…

【hibernate validator】(五)分组约束

首发博客地址 https://blog.zysicyj.top/ 一、请求组 1. 人组 package org.hibernate.validator.referenceguide.chapter05;public class Person { NotNull private String name; public Person(String name) { this.name name; } // getters and sette…

基于寄生捕食算法优化的BP神经网络(预测应用) - 附代码

基于寄生捕食算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于寄生捕食算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.寄生捕食优化BP神经网络2.1 BP神经网络参数设置2.2 寄生捕食算法应用 4.测试结果&#xff1a;5…

服务器和普通电脑有何区别?43.248.189.x

简单来讲&#xff0c;服务器和电脑的功能是一样的&#xff0c;我们也可以把服务器称之为电脑&#xff08;PC机&#xff09;&#xff0c;只是服务器对稳定性与安全性以及处理器数据能力有更高要求&#xff0c;比如我们每天浏览一个网站&#xff0c;发现这个网站每天24小时都能访…

【ASP.NET】LIS实验室信息管理系统源码

LIS系统&#xff0c;即实验室信息管理系统&#xff0c;是一种基于互联网技术的医疗行业管理软件&#xff0c;它可以帮助实验室进行样本管理、检测流程管理、结果报告等一系列工作&#xff0c; 提高实验室工作效率和质量。 一、LIS系统的功能 1. 样本管理 LIS系统可以帮助实验…