zl程序教程

您现在的位置是:首页 >  Java

当前栏目

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

2023-02-18 16:43:34 时间

简介

什么是 Nacos

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

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

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

新版本部署

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

一、部署架构图

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

二、Nacos节点的地址

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
  1. 启动Nacos

4.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_HOME

if [ -z "$JAVA_HOME" ]; then
  if $darwin; then

    if [ -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
fi

export 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
done

export 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配置反向代理

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转发

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.连接

spring:
  cloud:
    nacos:
     # nacos地址
      server-addr: 120.222.333.444:8888