前言
Nacos是Alibaba提供的服务的注册中心,它除了提供服务的注册发现之外,还支持动态配置服务等服务。并且拥有生态社区活跃,与SpringCloud Alibaba,开源免费等特点,备受开发者的青睐。
环境准备
环境:CentOS 7
Nacos版本:2.0.3
介绍
Nacos提供四个主要功能:
- 服务注册和发现:
当服务用@EnableDiscoveryClient注解后,在服务启动时,会将服务注册到Nacos,在我们调用服务的时候,可以从Nacos去获取服务的地址。实现服务的注册和发现。 - 动态配置管理:
日新月异的业务需求,使得我们难免会遇到服务启动时更新配置的情况。为了解决这个问题,Nacos提供了在服务运行时可更新配置文件,这使得配置更加灵活和敏捷。 - 动态DNS服务:
Nacos提供多种负载均衡策略,流控,DNS解析服务,灵活的路由策略等。他可以轻松帮我们实现基于DNS的服务发现。 - 服务和元数据管理
Nacos提供的服务仪表板,可以轻松有效的帮我们管理服务元数据,服务运行信息和各项指标分析数据。
更多介绍请移驾官网:https://nacos.io/zh-cn/docs/what-is-nacos.html
部署模式
Nacos的部署模式有:
- 单机模式 :用于测试,单机试用。
- 集群模式 : 用于生产环境,集群模式可以确保高可用。
- 多集群模式 : 用于数据中心等数据量极大的场景。
单机模式部署
单机模式部署不需要用到Msql,部署简单,成本最低。但是安全性也相对较低。可以通过源码和发行包两种方式获取
源码
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
发行包
1.下载Nacos发行包:我们可以直接去官网下载对应的安装包,或者用wget直接下载。
wget https://github.com/alibaba/nacos/releases/download/2.0.3/nacos-server-2.0.3.zip
2.解压Nacos发行包:
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin
3.启动Nacos:
sh startup.sh -m standalone
4.查看本机网卡:
ifconfig
5.访问Nacos:
网址:ip:8848/nacos
账号:nacos
密码:nacos
注意点:
问题1: 本文nacos 是在虚拟机安装的,虚拟机里的浏览器能访问,但是脱离虚拟机,到外部服务器就不能访问,请在虚拟机里执行如下命令即可。
iptables -I INPUT -p tcp --dport 8848 -j ACCEPT
或者将端口添加到防火墙,请参考:https://blog.csdn.net/weixin_42022380/article/details/120929206
问题2: nacos与JDK11不兼容,所以启动会报错找不到主类,这种情况可以降低jdk版本到1.8或者修改nacos启动类
Under nacos/bin/startup.sh
JAVA_ OPT_ EXT_ FIX configuration will cause JDK11 error
please replace nacos/bin/startup.sh
x JAVA_ OPT_ EXT_ FIX="-Djava.ext.dirs=${JAVA_ HOME}/jre/lib/ext:${JAVA_ HOME}/lib/ext"
√ JAVA_ OPT="${JAVA_ OPT} -Djava.ext.dirs=${JAVA_ HOME}/jre/lib/ext:${JAVA_ HOME}/lib/ext"
x echo "$JAVA $JAVA_ OPT_ EXT_ FIX ${JAVA_ OPT}"
√ echo "$JAVA ${JAVA_ OPT}"
x echo "$JAVA $JAVA_ OPT_ EXT_ FIX ${JAVA_ OPT}" > ${BASE_ DIR}/logs/start.out 2>&1 &
x nohup "$JAVA" "$JAVA_ OPT_ EXT_ FIX" ${JAVA_ OPT} nacos.nacos >> ${BASE_ DIR}/logs/start.out 2>&1 &
√ echo "$JAVA ${JAVA_ OPT}" > ${BASE_ DIR}/logs/start.out 2>&1 &
√ nohup $JAVA ${JAVA_ OPT} nacos.nacos >> ${BASE_ DIR}/logs/start.out 2>&1 &
问题3: 如何设置nacos服务自启动?
第一步:编写Nacos服务脚本:
vim /lib/systemd/system/nacos.service
第二步:
[Unit]
Description=nacos
After=network.target
[Service]
Type=forking
#改成自己的jdk路径,因为服务脚本的环境和系统环境变量不能共享,所以还得设置才能生效。
Environment="JAVA_HOME=/opt/local/java/jdk-11.0.12"
# nacos启动停止路径
ExecStart=/opt/local/nacos/bin/startup.sh -m standalone #standalone 是单机,默认是集群cluster
ExecReload=/opt/local/nacos/bin/shutdown.sh
ExecStop=/opt/local/nacos/bin/shutdown.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
第三步:
#重新加载服务
systemctl daemon-reload
#启用服务
systemctl enable nacos.service
#启动服务
systemctl start nacos.service