目录
《Docker部署Nacos-2.0.3集群环境》
《Linux部署Nacos-2.0.3单机环境》
《Linux部署Nacos-2.0.3集群环境》
《SpringCloud整合Nacos2.x使用》
前言
具体搭建那个版本的Nacos,最好根据需要整合的SpringCloud版本来决定。
版本对应参考:组件版本关系
对比1.x版本
Nacos1.x的搭建方式和2.x的方式,基本一致,相比1.X新增了gRPC的通信方式,因此需要增加2个端口
。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成(分别偏移了1000和1001
),nacos默认的端口为8848
,偏移后的新增端口为9848与9849
。
端口 | 与主端口的偏移量 | 描述 |
---|---|---|
9848 | 1000 | 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求 |
9849 | 1001 | 服务端gRPC请求服务端端口,用于服务间同步等 |
1、拉取镜像
拉取时最好指定版本,在git查看相应版本: https://github.com/nacos-group/nacos-docker
注意:1.3.2以上版本,已支持mysql8
拉取镜像:
docker pull nacos/nacos-server:2.0.3
2、配置mysql环境
-
创建数据库,比如:
nacos
-
创建表:从
github
获取建表语句,地址:https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql -
效果:
3、方式一:启动容器(无需挂载配置)
该方式会导致容器运行后修改启动参数比较麻烦,并且还需要重启docker服务
代价较高,需要修改config.v2.json
文件,参考:《Docker修改启动参数》
如果服务器配置有可能发生改变,不推荐该方式
启动命令如下:
docker run \
--name nacos-server -d \
--privileged=true \
--restart=always \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.1.100 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=nacos \
-e MYSQL_SERVICE_PASSWORD=nacos \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
nacos/nacos-server:2.0.3
4、方式二:配置启动Nacos(推荐)
4.1 创建挂载目录
mkdir -p /root/docker/cloud/nacos
4.2 拷贝容器目录
先不进行任何配置直接启动一个nacos
容器,然后将容器中的data、conf、log、bin
拷贝到/root/docker/cloud/nacos
目录下。
直接启动:
docker run --name nacos-server -d nacos/nacos-server:2.0.3
拷贝目录:
docker cp nacos-server:/home/nacos/conf /root/docker/cloud/nacos/
docker cp nacos-server:/home/nacos/logs /root/docker/cloud/nacos/
docker cp nacos-server:/home/nacos/bin /root/docker/cloud/nacos/
docker cp nacos-server:/home/nacos/data /root/docker/cloud/nacos/
删除容器:
docker stop nacos-server
docker rm nacos-server
目的是:为了进行挂载启动,以后修改配置文件、查看日志时更加方便。
4.3 配置application.properties
在application.properties
文件中,我们直接将原有采用环境变量
方式的配置根据实际情况进行修改。
修改:
vim /root/docker/cloud/nacos/conf/application.properties
修改内容如下:
# 端口
server.port=8848
spring.datasource.platform=mysql
# 数据库数量,如果mysql配置了主从就设置为 2
db.num=1
# mysql连接
db.url.0=jdbc:mysql://192.168.0.111:3306/db-nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
# 如果db.num=1,则将db.url.1屏蔽;反之则配置db.url.1
#db.url.1=
# mysql用户名
db.user=root
# mysql密码
db.password=123456
4.4 配置docker-startup.sh
在startup.sh
中主要根据当前服务器的配置修改JVM大小,比如:修改为1G
或者更大或者更小。
修改:
vim /root/docker/cloud/nacos/bin/docker-startup.sh
内容如下:
JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn512m"
4.5 挂载启动容器
docker run \
--name nacos-server -d \
--privileged=true \
--restart=always \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v /root/docker/cloud/nacos/logs:/home/nacos/logs \
-v /root/docker/cloud/nacos/data:/home/nacos/data \
-v /root/docker/cloud/nacos/conf:/home/nacos/conf \
-v /root/docker/cloud/nacos/bin:/home/nacos/bin \
nacos/nacos-server:2.0.3
测试:
通过:http://192.168.0.111:8848/nacos,成功访问nacos则表示搭建成功。
默认账户:nacos
默认密码:nacos,为了安全在第一次进入到nacos以后最好修改一次密码。
4.6 容器参数介绍
参数说明:
参数名称 | 参数描述 | 参数值选择 |
---|---|---|
MODE | cluster模式/standalone模式 | cluster/standalone default cluster |
NACOS_SERVERS | nacos cluster地址 | eg. ip1,ip2,ip3 |
PREFER_HOST_MODE | 是否支持hostname | hostname/ip default ip |
NACOS_SERVER_PORT | nacos服务器端口 | default 8848 |
NACOS_SERVER_IP | 多网卡下的自定义nacos服务器IP | |
SPRING_DATASOURCE_PLATFORM | standalone 支持 mysql | mysql / empty default empty |
MYSQL_MASTER_SERVICE_HOST | mysql 主节点host | |
MYSQL_MASTER_SERVICE_PORT | mysql 主节点端口 | default : 3306 |
MYSQL_MASTER_SERVICE_DB_NAME | mysql 主节点数据库 | |
MYSQL_MASTER_SERVICE_USER | 数据库用户名 | |
MYSQL_MASTER_SERVICE_PASSWORD | 数据库密码 | |
MYSQL_SLAVE_SERVICE_HOST | mysql从节点host | |
MYSQL_SLAVE_SERVICE_PORT | mysql从节点端口 | default :3306 |
MYSQL_DATABASE_NUM | 数据库数量 | default :2 |
JVM_XMS | -Xms | default :2g |
JVM_XMX | -Xmx | default :2g |
JVM_XMN | -Xmn | default :1g |
JVM_MS | -XX:MetaspaceSize | default :128m |
JVM_MMS | -XX:MaxMetaspaceSize | default :320m |
NACOS_DEBUG | 开启远程调试 | y/n default :n |
TOMCAT_ACCESSLOG_ENABLED | server.tomcat.accesslog.enabled | default :false |
4、控制台介绍
Nacos 控制台主要旨在于增强对于服务列表,健康状态管理,服务治理,分布式配置管理等方面的管控能力,包括下列常用操作:
-
服务管理
- 服务列表及服务健康状态展示
- 服务元数据存储及编辑
- 服务流量权重的调整
- 服务优雅上下线
-
配置管理
-
命名空间
-
登录管理
服务管理
开发者或者运维人员往往需要在服务注册后,通过友好的界面来查看服务的注册情况,包括当前系统注册的所有服务和每个服务的详情。并在有权限控制的情况下,进行服务的一些配置的编辑操作。Nacos在这个版本开放的控制台的服务发现部分,主要就是提供用户一个基本的运维页面,能够查看、编辑当前注册的服务。
服务列表管理
服务列表帮助用户以统一的视图管理其所有的微服务以及服务健康状态。整体界面布局是左上角有服务的搜索框和搜索按钮,页面中央是服务列表的展示。服务列表主要展示服务名、集群数目、实例数目、健康实例数目和详情按钮五个栏目。
在服务列表页面点击详情,可以看到服务的详情。可以查看服务、集群和实例的基本信息。
服务流量权重支持及流量保护
Nacos 为用户提供了流量权重控制的能力,同时开放了服务流量的阈值保护,以帮助用户更好的保护服务服务提供者集群不被意外打垮。如下图所以,可以点击实例的编辑按钮,修改实例的权重。如果想增加实 例的流量,可以将权重调大,如果不想实例接收流量,则可以将权重设为0。
服务元数据管理
Nacos提供多个维度的服务元数据的暴露,帮助用户存储自定义的信息。这些信息都是以K-V的数据结构存储,在控制台上,会以k1=v1,k2=v2这样的格式展示。类似的,编辑元数据可以通过相同的格式进行。例如服务的元数据编辑,首先点击服务详情页右上角的“编辑服务”按钮,然后在元数据输入框输入:version=1.0,env=prod。
点击确认,就可以在服务详情页面,看到服务的元数据已经更新了。
在这里插入图片描述
服务优雅上下线
Nacos还提供服务实例的上下线操作,在服务详情页面,可以点击实例的“上线”或者“下线”按钮,被下线的实例,将不会包含在健康的实例列表里。
配置管理
Nacos支持基于Namespace和Group的配置分组管理,以便用户更灵活的根据自己的需要按照环境或者应用、模块等分组管理微服务以及Spring的大量配置,在配置管理中主要提供了配置历史版本、回滚、订阅者查询等核心管理能力。
多配置格式编辑器
Nacos支持 YAML、Properties、TEXT、JSON、XML、HTML 等常见配置格式在线编辑、语法高亮、格式校验,帮助用户高效编辑的同时大幅降低格式错误带来的风险。
Nacos支持配置标签的能力,帮助用户更好、更灵活的做到基于标签的配置分类及管理。同时支持用户对配置及其变更进行描述,方面多人或者跨团队协作管理配置。
监听者查询
Nacos提供配置订阅者即监听者查询能力,同时提供客户端当前配置的MD5校验值,以便帮助用户更好的检查配置变更是否推送到 Client 端。
命名空间管理