Nacos2.1.0 - 外网服务器上的集群部署

2022-12-19 22:54:13 浏览数 (1)

简介

什么是 Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

新版本部署

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

image-1660726302719image-1660726302719

一、部署架构图

image-1660723639109image-1660723639109

其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。使用nginx作为负载均衡器。

二、Nacos节点的地址

代码语言:txt复制
nacos1 120.222.333.444:8848
nacos2 121.222.333.444:8848
nacos3 123.222.333.444:8848

三、Nacos集群搭建步骤

1.下载Nacos2.1.0 。 官网地址 下载地址

2.把压缩包上传到服务器中解压,并进入nacos目录中tar -zxvf nacos-server-2.1.0.tar.gz cd nacos 3.进入Nacos的conf目录,找到cluster.conf.example和application.properties

3.1 在application.properties文件最下面添加如下代码

db.num=1 db.url.0=jdbc:mysql://IP:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=root db.password.0=root在3个nacos中分别添加该配置,注意区分IP地址,如果这里填写的是外网地址,则cluster.conf也全部填写外网地址,否则就必须都填写内网地址(填写内网地址必须保证是同一个账号下的服务器资源)Specify local server's IP:nacos.inetutils.ip-address=120.222.333.444

> 2.将cluster.conf.example复制为cluster.conf文件,并在cluster.conf中作如下的配置,这里使用的是外网地址,内网地址不做演示120.222.333.444:8848 121.222.333.444:8848 123.222.333.444:8848

启动Nacos4.1 进入bin目录启动nacos

启动

./startup.sh

关闭

./shutdown.sh

在启动之前可以调整nacos的配置

vim startup.sh

部分配置文件cygwin=false darwin=false os400=false case "`uname`" in CYGWIN*) cygwin=true;; Darwin*) darwin=true;; OS400*) os400=true;; esac error_exit () { echo "ERROR: $1 !!" exit 1 } [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/opt/taobao/java [ ! -e "$JAVA_HOME/bin/java" ] && unset JAVA_HOMEif -z "$JAVA_HOME" ; then if $darwin; thenif [ -x '/usr/libexec/java_home' ] ; then export JAVA_HOME=`/usr/libexec/java_home` elif [ -d "/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home" ]; then export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home" fi else JAVA_PATH=dirname $(readlink -f $(which javac)) if "x$JAVA_PATH" != "x" ; then export JAVA_HOME=dirname $JAVA_PATH 2>/dev/null fi fi if -z "$JAVA_HOME" ; then error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better!" fi fiexport SERVER="nacos-server" export MODE="cluster" export FUNCTION_MODE="all" export MEMBER_LIST="" export EMBEDDED_STORAGE="" while getopts ":m:f:s:c:p:" opt do case $opt in m) MODE=$OPTARG;; f) FUNCTION_MODE=$OPTARG;; s) SERVER=$OPTARG;; c) MEMBER_LIST=$OPTARG;; p) EMBEDDED_STORAGE=$OPTARG;; ?) echo "Unknown parameter" exit 1;; esac doneexport JAVA_HOME export JAVA="$JAVA_HOME/bin/java" export BASE_DIR=cd $(dirname $0)/..; pwd export CUSTOM_SEARCH_LOCATIONS=file:${BASE_DIR}/conf/#===========================================================================================JVM Configuration#=========================================================================================== 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#在该位置修改启动时占用的内存 #默认是-server -Xms1g -Xmx2g -Xmn1g JAVA_OPT="${JAVA_OPT} -server -Xms500m -Xmx1000m -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>> 启动完成可以查看是否启动成功

http://120.222.333.444:8848/nacos

http://121.222.333.444:8848/nacos

http://123.222.333.444:8848/nacos

5.配置nginx负载均衡和TCP转发Nginx 服务器地址 : 120.222.333.444

5.1配置反向代理

代码语言:txt复制
http {
	gzip  on;
	# weight 权重 
	upstream nacos{
        server 120.222.333.444:8848 weight=5;
        server 120.222.333.444:8848 weight=2;
        server 120.222.333.444:8848 weight=1;
	} 
    	server {
    	listen	8888;
        server_name  localhost;
	}
    	location / {
        proxy_set_header Host $http_host;
        proxy_pass http://nacos;
        }
}

5.2 配置TCP转发

代码语言:txt复制
stream {
	#客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求
    upstream nacosGrpc {
        server 120.222.333.444:9848 weight=5;
        server 121.222.333.444:9848 weight=2;
        server 121.222.333.444:9848 weight=1;
    }

    server {
        listen 9888;
        proxy_pass nacosGrpc;
    }
	
}

完整配置文件stream { #客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求 upstream nacosGrpc { server 120.222.333.444:9848 weight=5; server 121.222.333.444:9848 weight=2; server 122.222.333.444:9848 weight=1; }server { listen 9888; proxy_pass nacosGrpc; }}events { worker_connections 1024; }http { gzip on;# weight 权重 upstream nacos{ server 120.222.333.444:8848 weight=5; server 120.222.333.444:8848 weight=2; server 120.222.333.444:8848 weight=1; } server { listen 8888; server_name localhost; } location / { proxy_set_header Host $http_host; proxy_pass http://nacos; }}

7.访问 访问 http://120.222.333.444:8888/nacos 看到Nacos的登录页,即可正常使用Nacos

7.连接

代码语言:java复制
spring:
  cloud:
    nacos:
     # nacos地址
      server-addr: 120.222.333.444:8888

0 人点赞