Nacos2.2.3
安装Java
这些微服务都依赖Java,所以首先需要安装Java。
下载并解压Nacos
接下来,我们将下载并解压Nacos。首先,访问Nacos的Github发布页面(https://github.com/alibaba/nacos/releases)并下载最新版本的Nacos。或者,你也可以在终端中使用wget
命令下载。例如,要下载2.2.3版本的Nacos,你可以使用以下命令:
wget https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz
下载完成后,使用tar
命令解压下载的文件:
tar -xzf nacos-server-2.2.3.tar.gz
启动Nacos服务器
解压完成后,进入Nacos的目录,然后启动Nacos服务器:
cd nacos/bin
./startup.sh -m standalone
在这里,-m standalone
选项表示我们将在单机模式下启动Nacos。
现在,Nacos应该已经在你的机器上成功运行。你可以通过访问http://localhost:8848/nacos
来访问Nacos的Web界面,用户名和密码默认都是nacos
。
修改配置
这只是在本地运行Nacos的基本步骤。在生产环境中,你可能需要额外的配置,例如修改默认的用户名和密码、设置集群模式等。你可以访问Nacos的官方文档(https://nacos.io/zh-cn/docs/what-is-nacos.html)获取更多信息。
修改端口号
Nacos 默认的端口号是 8848。如果你需要修改这个端口号,你可以修改 Nacos 的配置文件来实现。配置文件是在 Nacos 的安装目录下的 conf
文件夹中的 application.properties
文件。你可以在这个文件中找到 server.port
这一行,然后将其后面的值修改为你需要的端口号。
例如,如果你希望将端口号修改为 8011,你可以修改这一行为:
server.port=8011
修改完成后,你需要重启 Nacos 服务器来使改动生效。
修改数据库
Nacos默认使用内嵌的H2数据库作为存储配置,但在生产环境中,我们通常会将Nacos配置为使用MySQL数据库。以下是修改Nacos的数据库配置的步骤:
创建数据库
在MySQL服务器中创建一个新的数据库,例如,我们创建一个名为nacos_config
的数据库:
CREATE DATABASE nacos_config;
初始化数据库
你需要从Nacos的源码中获取数据库的初始化脚本。初始化脚本位于Nacos源码的distribution/conf
目录下,文件名为mysql.sql
。将此脚本运行在你刚刚创建的数据库中。
修改Nacos的配置文件
Nacos的配置文件位于其安装目录下的conf
文件夹中,文件名为application.properties
。你需要在这个文件中指定你的数据库配置:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=username
db.password=password
在上述配置中,将db.url.0
中的IP地址、端口号和数据库名修改为你的实际MySQL服务器和数据库名,将db.user
和db.password
修改为你的MySQL用户名和密码。
重启Nacos服务器
配置修改完成后,你需要重启Nacos服务器来使改动生效。
停止Nacos服务器
首先,你需要找到Nacos服务器的进程ID,然后使用kill
命令来停止它。你可以使用以下命令来找到Nacos服务器的进程ID:
ps -ef | grep nacos | grep -v grep
这个命令应该会返回一个或多个包含"nacos"的进程。你需要找到Nacos服务器的进程ID,它应该是命令返回结果中的第二列。然后,你可以使用以下命令来停止Nacos服务器:
kill -9 <Nacos进程ID>
在这里,<Nacos进程ID>
需要替换为你实际的Nacos服务器的进程ID。
启动Nacos服务器
然后,你可以使用以下命令来重新启动Nacos服务器:
sh /path/to/nacos/bin/startup.sh -m standalone
在这里,/path/to/nacos/需要替换为你实际的Nacos的安装路径。
修改账号密码
开启鉴权
此部分内容参考官方文档: https://nacos.io/zh-cn/docs/v2/guide/user/auth.html
按照官方文档配置启动,默认是不需要登录的,这样会导致配置中心对外直接暴露。而启用鉴权之后,需要在使用用户名和密码登录之后,才能正常使用nacos。
开启鉴权之前,application.properties中的配置信息为:
### If turn on auth system: nacos.core.auth.enabled=false
开启鉴权之后,application.properties中的配置信息为:
### If turn on auth system:
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
自定义密钥
开启鉴权之后,你可以自定义用于生成JWT令牌的密钥,application.properties中的配置信息为:
注意:
- 文档中提供的密钥为公开密钥,在实际部署时请更换为其他密钥内容,防止密钥泄漏导致安全风险。
- 在2.2.0.1版本后,社区发布版本将移除以文档如下值作为默认值,需要自行填充,否则无法启动节点。
- 密钥需要保持节点间一致,长时间不一致可能导致403 invalid token错误。
### The default token(Base64 String): nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
### 2.1.0 版本后 nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符。
在线base64工具: https://uutool.cn/base64-encode/
注意:鉴权开关是修改之后立马生效的,不需要重启服务端。动态修改token.secret.key
时,请确保token是有效的,如果修改成无效值,会导致后续无法登录,请求访问异常。
开启Token缓存功能
服务端自2.2.1版本后,默认鉴权插件模块支持token缓存功能
无论是客户端SDK还是OpenAPI,在调用login接口获取accessToken之后,携带accessToken访问服务端,服务端解析Token进行鉴权。解析的动作比较耗时,如果想要提升接口的性能,可以考虑开启缓存Token的功能,用字符串比较代替Token解析。
开启方式
nacos.core.auth.plugin.nacos.token.cache.enable=true
注意事项
在开启Token缓存功能之前,服务端对每一个携带用户名密码访问login接口的请求都会生成新的token,接口的返回值中的tokenTtl字段跟服务端配置文件中设置的值相等,配置如下:
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
在开启Token缓存功能之后,服务端对每一个携带用户名密码访问login接口的请求,会先检查缓存中是否存在该用户名对应的token。若不存在,生成新的Token,插入缓存再返回;若存在,返回该token,此时tokenTtl字段的值为配置文件中设置的值减去该Token在缓存中存留的时长。 如果Token在缓存中存留的时长超过配置文件设置的值的90%,当login接口收到请求时,尽管缓存中存在该用户名对应的Token,服务端会重新生成Token返回给请求方,并更新缓存。因此,最差情况下,请求方收到的tokenTtl只有配置文件设置的值的10%。
开启服务身份识别功能
### 开启鉴权
nacos.core.auth.enabled=true
### 关闭使用user-agent判断服务端请求并放行鉴权的功能
nacos.core.auth.enable.userAgentAuthWhite=false
### 配置自定义身份识别的key(不可为空)和value(不可为空)
nacos.core.auth.server.identity.key=example
nacos.core.auth.server.identity.value=example
** 注意 ** 所有集群均需要配置相同的server.identity
信息,否则可能导致服务端之间数据不一致或无法删除实例等问题。
修改nacos用户密码
Nacos 默认的用户名和密码是 nacos/nacos
。你可以通过修改数据库来改变这个用户名和密码。Nacos 的用户信息是存储在 nacos_config
数据库的 users
表中的。
你需要首先登录到你的 MySQL 数据库,然后执行以下 SQL 语句来修改密码:
UPDATE users SET password_hash = '$2a$10$EuWPZHzz32dJN7j8Zz/JZ.jlfn98yBaYVJlS7ak2i.bZ5.6nBX1NK' WHERE username = 'nacos';
这将会将密码修改为 new_password。这个哈希值是通过 bcrypt 算法加密的,所以如果你需要修改密码,你需要生成一个新的哈希值。你可以在网上找到一些在线的 bcrypt 哈希生成器来帮助你生成新的哈希值。
例如: https://www.bejson.com/encrypt/bcrpyt_encode/
同样,修改完成后,你需要重启 Nacos 服务器来使改动生效。
Sentinel Dashboard
下载并运行 Sentinel Dashboard
你可以从 Sentinel 的 GitHub 仓库下载预编译的 Sentinel Dashboard JAR 文件。在终端中运行以下命令来下载和启动 Sentinel Dashboard:
wget https://github.com/alibaba/Sentinel/releases/download/2.0.0-alpha/sentinel-dashboard-2.0.0-alpha-preview.jar
java -jar sentinel-dashboard-2.0.0-alpha-preview.jar
这将会启动 Sentinel Dashboard,并在 8080 端口监听请求。
访问 Sentinel Dashboard
打开浏览器并访问 http://localhost:8080
,你应该能看到 Sentinel Dashboard 的登录界面。默认的用户名和密码都是 "sentinel"。
修改配置
修改端口
Sentinel Dashboard 默认在8080端口运行。如果你想修改这个端口,你可以在启动 Sentinel Dashboard 时传递 server.port
参数。例如,如果你想把端口改为 8021,你可以使用以下命令:
java -Dserver.port=8021 -jar sentinel-dashboard-2.0.0-alpha-preview.jar
修改用户名和密码
Sentinel Dashboard 默认的用户名和密码都是 "sentinel"。你可以通过设置 spring.security.user.name
和 spring.security.user.password
参数来修改用户名和密码。例如,如果你想把用户名改为 "admin",密码改为 "123456",你可以使用以下命令:
java -Dspring.security.user.name=admin -Dspring.security.user.password=123456 -jar sentinel-dashboard-2.0.0-alpha-preview.jar
注意,密码应该至少包含6个字符。
如果你同时想修改端口和用户名/密码,你可以在一个命令中传递所有参数,例如:
java -Dserver.port=8021 -Dsentinel.dashboard.auth.username=LS2eBE8gbkFJ6z -Dsentinel.dashboard.auth.password=LpH9XZR8gHnE2j -jar sentinel-dashboard-2.0.0-alpha-preview.jar
这样,Sentinel Dashboard 就会在 8021 端口上启动,用户名和密码会被设置为 "admin" 和 "123456"。
一般我们需要后台运行
nohup java -Dserver.port=8021 -Dsentinel.dashboard.auth.username=LS2eBE8gbkFJ6z -Dsentinel.dashboard.auth.password=LpH9XZR8gHnE2j -jar sentinel-dashboard-2.0.0-alpha-preview.jar &
Seata
下载并解压Seata
首先,访问Seata的Github发布页面(https://github.com/seata/seata/releases)并下载你需要的版本的Seata,即1.6.1版本。或者,你也可以在终端中使用wget
命令下载。例如,要下载1.6.1版本的Seata,你可以使用以下命令:
wget https://github.com/seata/seata/releases/download/v1.6.1/seata-server-1.6.1.tar.gz
下载完成后,使用tar
命令解压下载的文件:
tar -xzf seata-server-1.6.1.tar.gz
启动Seata服务器
解压完成后,进入Seata的目录,然后启动Seata服务器:
cd seata/bin
bash seata-server.sh -p 8032 -h 127.0.0.1
这里用-p指定端口,-h指定面板的ip
RocketMQ
下载并解压RocketMQ
首先,访问RocketMQ的Github发布页面(https://github.com/apache/rocketmq/releases)并下载你需要的版本的RocketMQ,即5.1.1版本。或者,你也可以在终端中使用wget
命令下载。例如,要下载5.1.1版本的RocketMQ,你可以使用以下命令:
wget https://archive.apache.org/dist/rocketmq/5.1.1/rocketmq-all-5.1.1-bin-release.zip
下载完成后,使用unzip命令解压下载的文件(如果你的系统中没有unzip,你可以通过sudo apt install unzip来安装):
unzip rocketmq-all-5.1.1-bin-release.zip
启动RocketMQ服务器
解压完成后,进入RocketMQ的目录,然后启动RocketMQ的名称服务器和代理服务器:
cd rocketmq-all-5.1.1-bin-release
nohup sh bin/mqnamesrv &
nohup sh bin/mqbroker -n localhost:8041 &
下载并解压RocketMQ Dashboard
你可以访问RocketMQ Dashboard的Github发布页面(https://github.com/apache/rocketmq-dashboard/releases),下载你需要的版本,即1.0.0版本的jar文件。或者,你也可以使用wget
在终端中下载:
wget https://github.com/apache/rocketmq-dashboard/archive/refs/tags/rocketmq-dashboard-1.0.0.zip
下载完成后,使用unzip命令解压下载的文件
unzip rocketmq-dashboard-rocketmq-dashboard-1.0.0.zip
编译并运行 RocketMQ Dashboard
解压完成后,进入解压后的目录,然后使用 Maven 编译并运行 RocketMQ Dashboard:
cd rocketmq-dashboard-1.0.0
mvn clean package -Dmaven.test.skip=true
安装的过程可能比较久,等安装完了我们就可以运行了
nohup java -jar target/rocketmq-dashboard-*.jar &
修改端口
RocketMQ-Dashboard 使用 Spring Boot 开发,端口默认为 8080。如果要修改默认的端口号,你可以通过修改配置文件来完成。
在 RocketMQ-Dashboard 项目的 src/main/resources
目录下,你可以找到一个名为 application.properties
的配置文件,你可以在这个文件中找到相关的配置项。
修改这个文件,增加或者修改下列行,例如我们这里修改为8042:
server.port=8042
配置rocketmq地址
如果不配置rocketmq名称服务器的话,面板可能无法连接到导致无法正常使用
还是上面的配置文件,修改下列行,比如我们这里改为本地的8041
rocketmq.config.namesrvAddr=127.0.0.1:8041
不过修改了配置记得要重新用maven打包,重启服务才能生效哦