《Linux部署Nacos-2.3.x集群环境》
《Docker部署Nacos-2.3.x单机环境》
《Docker部署Nacos-2.3.x集群环境》
目录
- 1、下载安装
- 2、配置mysql环境
- 3、修改配置
- 3.1 application.properties
- 3.2 startup.sh
- 4、启动、关闭
- 5、配置自启服务
- 6、控制台介绍
1、下载安装
下载nacos:
本次搭建的版本为:nacos-2.3.0
下载地址:https://nacos.io/download/nacos-server,下载nacos-server-2.3.0.zip
将下载好的nacos-server-2.3.0.zip
上传到服务器的/opt/cloud
(手动创建)目录下。
解压nacos:
# 进入目录
cd /opt/cloud# 解压命令
unzip nacos-server-2.3.0.zip
解压后得到nacos
文件夹
2、配置mysql环境
-
创建数据库,比如:
nacos
-
创建表:创建表需要获取相应的sql语句。
-
方式一:进入
/opt/cloud/nacos/conf
下,查找nacos-mysql.sql
文件
-
方式二:从
github
获取语句,地址:https://github.com/alibaba/nacos/blob/master/distribution/conf/mysql-schema.sql
-
-
效果:
3、修改配置
注意:默认防火墙需要开发8848、9848、9849三个端口
nacos默认的端口为8848
,由于Nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加2个端口
。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成(分别偏移了1000和1001
)
端口 | 与主端口的偏移量 | 描述 |
---|---|---|
9848 | 1000 | 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求 |
9849 | 1001 | 服务端gRPC请求服务端端口,用于服务间同步等 |
比如:nacos主端口为8858,那么新增的gRPC端口为9858和9859。
3.1 application.properties
修改:
vim /opt/cloud/nacos/conf/application.properties
内容如下:
### If 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=Asia/Shanghai
### 数据库的账户密码
db.user=root
db.password=123456### 开启登录验证
nacos.core.auth.enabled=true
nacos.core.auth.server.identity.key=nacos #任意值
nacos.core.auth.server.identity.value=nacos #任意值
# 自定义指定生成JWT的密钥,使用BASE64进行编码,编码前的key长度必须不小于32个字符
nacos.core.auth.plugin.nacos.token.secret.key=
nacos.core.auth.plugin.nacos.token.secret.key生成步骤:
1、使用openssl rand -hex 32
获取密钥值
2、将密钥值再进行base编码
访问:https://base64.us/,输入密钥进行base64编码
3.2 startup.sh
在startup.sh
中主要根据当前服务器的配置修改JVM大小,比如:修改为1G
或者更大或者更小。
修改:
vim /opt/cloud/nacos/bin/startup.sh
内容如下:
JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn512m"
4、启动、关闭
启动:
cd /opt/cloud/nacos/bin
sh startup.sh -m standalone
停止:
cd /opt/cloud/nacos/bin
sh shutdown.sh
测试:
通过:http://112.14.15.16:8848/nacos,成功访问nacos则表示搭建成功。
默认账户:nacos
默认密码:nacos,为了安全在第一次进入到nacos以后最好修改一次密码。
5、配置自启服务
自启服务需要手动配置JAVA_HOME
路径路径,修改 /bin/startup.sh
文件
查询jdk配置:
#1、查询jdk配置
echo $JAVA_HOME
# 2、结果
/usr/local/java/jdk1.8.0_131
修改为指定jdk:
# 修改配置
vim start.sh# 内容
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/local/java/jdk1.8.0_131
创建自启服务:
vim /usr/lib/systemd/system/nacos.service
加入内容:
[Unit]
Description=nacos
After=network.target[Service]
Type=forking
# 单节点方式启动,填写实际路径
ExecStart=/opt/cloud/nacos/bin/startup.sh -m standalone
# 集群方式启动-外部数据源启动,填写实际路径
# ExecStart=/opt/cloud/nacos/bin/startup.shExecStop=/opt/module/nacos/bin/shutdown.sh
PrivateTmp=true[Install]
WantedBy=multi-user.target
加入自启:
systemctl daemon-reload
systemctl enable nacos.service
操作命令:
# 启动
systemctl start nacos# 停止
systemctl stop nacos
6、控制台介绍
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 端。
命名空间管理