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安装
centos7安装nacos_第1张图片

如果部署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. 可能报错,见文章下方:

centos7安装nacos_第2张图片

  1. 编译结果如下 编译过程很慢,请耐心等待,编译好的在百度网盘,直接下载
    centos7安装nacos_第3张图片

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

  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 standalone

 Windows 启动命令 (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 [email protected]:/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 [email protected]:/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" ]]; then
    JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
    JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
else
    if [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; then
        JAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"
    fi
    JAVA_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" ]]; then
    JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
    JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
else
    if [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; then
        JAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"
    fi
    JAVA_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-provider
  cloud:
    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 去掉

你可能感兴趣的:(nacos,运维)