简介
什么是 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节点的地址
代码语言:txt复制nacos1 120.222.333.444:8848
nacos2 121.222.333.444:8848
nacos3 123.222.333.444:8848
三、Nacos集群搭建步骤
代码语言:txt复制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配置反向代理
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;
}
}
代码语言:txt复制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;
}
}
代码语言:java复制完整配置文件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