Nacos最新2.x集群安装

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

Nacos安装使用

Nacos是阿里开源的一款微服务注册中心,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

文档地址:https://nacos.io/zh-cn/docs/what-is-nacos.html

官方依赖:

  1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
  2. 64 bit JDK 1.8+;下载 & 配置

下载安装

可以从github下载最新的release版本:

下载地址:https://github.com/alibaba/nacos/releases

github上下载比较慢:https://ghproxy.com/https://github.com/alibaba/nacos/releases/download/2.0.3/nacos-server-2.0.3.tar.gz

下载完成之后得到nacos-server-2.0.3.zip,解压之后就可以运行了。

单机启动

Windows启动命令(standalone代表着单机模式运行,非集群模式,直接双击是集群模式):

startup.cmd -m standalone

启动后可以查看图形界面的控制台:

http://localhost:8848/nacos/#/login

默认用户名和密码:nacos/nacos,密码在登录之后可以修改,已经集成了用户相关管理。

注意这里默认情况下是使用内嵌的derby数据库,可以在data/derby-data看到数据文件。

image-20211222141358932

配置MySQL数据库

nacos支持使用MySQL数据库,可以使用MySQL数据库代替内嵌的derby数据库。

  1. 安装MySQL数据库
  2. 新建一个MySQL数据库账户:nacos/12345678
  3. 初始化mysql数据库nacos,数据库初始化文件:nacos-mysql.sql
  4. 配置application.properties

配置文件application.properties中,把MySQL相关配置注释放开,并根据实际情况配置:

### use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=nacos
db.password=12345678

再次启动就可以了。

随便新建一个配置项做测试,可以在config_info表中看到数据了:

image-20201127112044046

集群启动

nacos可以以集群启动,3个或3个以上Nacos节点才能构成集群。

集群配置

这里以单机不同端口启动测试,复制nacos目录3份,分别修改对应的application.properties文件中的端口为8851、8861、8871

server.port=8851

复制cluster.conf.example为cluster.conf,并配置IP和端口。

10.181.10.242:8851
10.181.10.242:8861
10.181.10.242:8871

集群启动

配置完成之后,分别启动,不用带参数了,默认就以集群模式启动,可以编写一个bat文件:

start call nacos8851/bin/startup.cmd
start call nacos8861/bin/startup.cmd
start call nacos8871/bin/startup.cmd

启动完成之后可以通过任何一个端口的节点访问,登录后可以看到集群节点状态,表示已经配置好了:

image-20211222141628500

官方推荐集群部署后使用VIP或者域名访问,不过也可以使用直连模式:

配置完成之后,就可以在相关项目中使用了。

spring:
  cloud:
    nacos:
      server-addr: 10.181.10.242:8851,10.181.10.242:8861,10.181.10.242:8871

注意cluster端口

# 端口规则
server.port(默认8848)
raft port: ${server.port} - 1000
grpc port: ${server.port} + 1000
grpc port for server: ${server.port} + 1001

单机集群启动的时候不能使用连续的端口了,会报错:

Caused by: java.net.BindException: Address already in use: bind
    at java.base/sun.nio.ch.Net.bind0(Native Method)
    at java.base/sun.nio.ch.Net.bind(Net.java:455)
    at java.base/sun.nio.ch.Net.bind(Net.java:447)
    at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:227)

安全性配置

默认情况下nacos没有配置安全性,添加用户和角色之后也没用,集群下需要每个节点都要添加。

启用安全性

需要在nacos目录下的application.properties中先配置好启用安全性

# nacos.core.auth.enabled=false
nacos.core.auth.enabled=true

然后启动nacos服务器,现在添加用户就可以了。

配置权限

新建用户:

image-20211223152117640

绑定角色:

image-20211223152025255

给角色配置权限,配置读写权限才可以,注册中心是要有写入操作,配置中心也需要修改配置项:

image-20211223152156801

客户端使用

springboot项目中需要配置用户名和密码才能访问了,否则会有403错误

spring:
  cloud:
    nacos:
      server-addr: 10.181.10.242:8851,10.181.10.242:8861,10.181.10.242:8871
      username: dev
      password: 123456

Nginx配置负载均衡

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

端口 与主端口的偏移量 描述
9848 1000 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求
9849 1001 服务端gRPC请求服务端端口,用于服务间同步等

使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。

图片来源于nacos官网:

image

先检查nginx是否有stream模块,输出中包含:--with-stream

nginx -V
nginx version: nginx/1.21.0
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=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'

配置http模块

在nginx的http下面配置http协议相关的地址和端口:

http {
    # nacos服务器http相关地址和端口
    upstream nacos-server {
        server 10.181.10.242:8851;
        server 10.181.10.242:8861;
        server 10.181.10.242:8871;
    }
    server {
        listen 8848;
        location / {
            proxy_pass http://nacos-server/;
        }
    }
}

另外需要配置grpc,需要nginx有stream模块支持

配置grpc

# nacos服务器grpc相关地址和端口,需要nginx已经有stream模块
stream {
    upstream nacos-server-grpc {
        server 10.181.10.242:9851;
        server 10.181.10.242:9861;
        server 10.181.10.242:9871;
    }
    server {
        listen 9848;
        proxy_pass nacos-server-grpc;
    }
}

配置后重启nginx

sudo nginx -s reload

应用配置

spring:
  cloud:
    nacos:
      server-addr: 10.181.10.xxx:8848

然后就可以正常使用了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容