微信公众号:PersistentCoder 关注可了解更多的教程。问题或建议,请公众号留言;
一、环境初始化二、安装nacos三、配置alb和域名证书四、java服务访问
nacos是一个开源的分布式配置和服务发现系统,由阿里巴巴集团开发和维护。它提供了服务注册、服务发现和动态配置管理等功能,为云原生应用和微服务架构提供了基础设施支持。是一个功能强大的服务注册与发现、动态配置管理的系统,可以帮助开发人员更好地构建和管理微服务架构。 nacos集群至少3个节点,访问频率预计与业务机器交互频率不会很高,所以不需要很高的配置.
准备三台机器,并初始化环境,按需开放8848端口。
yum install -y java-1.8.0-openjdk-devel
#/etc/profile环境变量
# jdk 8
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-xxx
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
# 保存后,source生效
source /etc/profile
如果想自己打包还需要安装git和maven等工具。
三个节点分别下载nacos-server安装包。
mkdir -p /usr/local/nacos
cd /usr/local/nacos
wget https://github.com/alibaba/nacos/releases/download/{version}/nacos-server-{version}.tar.gz
tar -xvf nacos-server-{version}.tar.gz
如果是源码安装,使用git拉取源码,然后用maven命令本地编译打包即可。
修改集群配置,在conf目录添加集群配置文件cluster.conf,三个节点配置一样:
内网ip1:8848
内网ip2:8848
内网ip3:8848
修改application.properties
spring.datasource.platform=mysql
spring.sql.init.platform=mysql
db.num=1
db.url.0=jdbc:mysql://host:port/nacos?useUnicode=true&characterEncoding=utf8
db.user.0=xxx
db.password.0=xxx
nacos.core.auth.enabled=true
nacos.core.auth.server.identity.key=xxx
nacos.core.auth.server.identity.value=xxx
nacos.core.auth.plugin.nacos.token.secret.key=xxx
下载数据库schema脚本并到对应数据库实例执行初始化
https://github.com/alibaba/nacos/blob/master/distribution/conf/mysql-schema.sql
到3个节点的nacos/bin目录执行启动命令:
sh startup.sh
如果遇到启动时报错,没有数据库选择,那么需要在application.propertis中jdbc连接添加:
&allowPublicKeyRetrieval=true
创建nacos目标群组,8848端口并注册三个节点
创建alb,http请求转发到nacos目标组
业务应用的访问不走公网,可以通过内网nlb或者内网域名结合nginx实现转发规则。
java服务使用配置平台,会通过tcp请求nacos,那么一般情况不需要通过公网访问。
生成内网nlb或者配置内网域名:
nacos-nlb-xxx.amazonaws.com
#或者
nacos.intranet.xxx
springboot配置文件添加nacos配置:
nacos:
config:
server-addr: nacos-nlb-xxx.amazonaws.com
namespace: test
username: nacos
password: xxxxxx
然后代码里边就可以基于@NacosPropertySource结合@NacosValue配置使用相关配置能力了。
@NacosPropertySource(groupId = "xxx",dataId = "123",autoRefreshed = true)
public class NacosDemo {
@NacosValue(value = "${test.url:默认值}",autoRefreshed = true)
private String url;
//...省略...
}
本文分享自 PersistentCoder 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!