文章目录
什么是 Nacos
Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
-
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
-
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos 生态图
集群部署架构图
因此开源的时候推荐用户把所有服务列表放到一个vip下面,然后挂到一个域名下面
-
http://ip1:port/openAPI 直连ip模式,机器挂则需要修改ip才可以使用。
-
http://SLB:port/openAPI 挂载SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),直连SLB即可,下面挂server真实ip,可读性不好。
-
http://nacos.com:port/openAPI 域名 + SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),可读性好,而且换ip方便,推荐模式
依赖包下载地址
https://github.com/alibaba/nacos/
[root@abcdocker ~]#wget https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz
环境说明
这里我使用一台节点创建3台集群
IP | 端口 |
---|---|
192.168.0.10 | 8845 |
192.168.0.10 | 8836 |
192.168.0.10 | 8847 |
数据库安装
此处略过了,自行安装数据库
JDK安装
wget https://d.frps.cn/file/tools/jdk/jdk-8u231-linux-x64.tar.gz
mkdir /usr/java
tar zxvf jdk-8u231-linux-x64.tar.gz -C /usr/java
ln -s /usr/java/jdk1.8.0_231/ /usr/java/jdk
cat > /etc/profile.d/java_home.sh << EOF
# set java environment
export JAVA_HOME=/usr/java/jdk
export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/jre/lib/rt.jar
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
source /etc/profile
配置修改
首先解压配置文件
[root@abcdocker nacos]# tar xf nacos-server-2.2.3.tar.gz
因为我们是在一台机器上配置,所以需要调整安装目录
复制多套目录出来
[root@abcdocker nacos]# cp -r nacos nacos_8845
[root@abcdocker nacos]# cp -r nacos nacos_8836
[root@abcdocker nacos]# cp -r nacos nacos_8847
- 首先修改JDK路径
我们需要在nacos_884(5,6,7)/bin/startup.sh脚本中修改JDK环境目录
vim nacos_884(5,6,7)/bin/startup.sh
#注释以下配置
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/opt/taobao/java
#[ ! -e "$JAVA_HOME/bin/java" ] && unset JAVA_HOME
#新增配置
JAVA_HOME=/usr/java/jdk
所有节点都需要修改
- 修改application.properties配置文件
接下来需要在nacos_884(5,6,7)/conf/application.properties
文件中修改对应的数据库连接信息
# vim conf/application.properties
#默认jdbc是注释的,我们自行添加就可以了
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=nacos@123
- spring.datasource.platform 数据源使用mysql
- db.url.0 jdbc连接地址,IP 地址 和库 自行修改,这里我使用 nacos库
- db.user.0 用户名
- db.password.0 密码
jdbc添加完毕,下面修改端口号
- nacos_8845 端口号为 8845
- nacos_8846 端口号为 8836
- nacos_8847 端口号为 8847
相关对应目录 配置自行修改
server.port=8845
- 修改cluster.conf集群配置文件
我这里IP都是同一个,IP我就写192.168.0.10,实际情况可以自己写对应IP
cd nacos_8845/46/47
cat >conf/cluster.conf<<EOF
192.168.0.10:8845
192.168.0.10:8836
192.168.0.10:8847
EOF
#3台nacos_8845,36,47文件相同
数据库执行初始化SQL
接下来我们需要连接mysql,创建nacos数据库
#创建数据库
CREATE DATABASE nacos DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
#nacos连接用户和密码,需要根据前面配置文件对应
create user 'nacos'@'%' identified by 'nacos@123';
grant all privileges on nacos.* to 'nacos'@'%' identified by "nacos@123";
导入nacos表结构
表结构文件在conf/mysql-schema.sql
use nacos;
source /root/nacos/nacos_8845/conf/mysql-schema.sql;
#后面的路径需要根据你nacos存放路径来修改,3套 集群导入一次即可
查看nacos表
mysql> show tables;
+----------------------+
| Tables_in_nacos |
+----------------------+
| config_info |
| config_info_aggr |
| config_info_beta |
| config_info_tag |
| config_tags_relation |
| group_capacity |
| his_config_info |
| permissions |
| roles |
| tenant_capacity |
| tenant_info |
| users |
+----------------------+
12 rows in set (0.00 sec)
限制JMX
我这里机器采用8G内存,如果内存过小可以根据下面的配置修改
[root@abcdocker ~]# free -mh
total used free shared buff/cache available
Mem: 7.5G 675M 6.3G 8.9M 558M 6.7G
Swap: 3.9G 0B 3.9G
如果我们想对nacos JMX添加限制,可以在bin/startup.sh中进行修改
例如修改内容
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
编辑bin/startup.sh
if [[ "${MODE}" == "standalone" ]]; then
JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
else
if [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; then
JAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"
fi
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
fi
此处jmx请根据实际的使用情况进行新增修改
启动nacos服务
nacos已经配置好启动脚本,找到对应的目录执行startup.sh
即可
cd nacos_8845 && ./bin/startup.sh
cd nacos_8836 && ./bin/startup.sh
cd nacos_8847 && ./bin/startup.sh
#需要进入到对应目录,否则配置会在当前目录创建
查看日志是否启动成功
[root@abcdocker nacos]# cat /root/nacos/nacos_8847/logs/start.out
/usr/java/jdk/bin/java -Djava.ext.dirs=/usr/java/jdk/jre/lib/ext:/usr/java/jdk/lib/ext -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/root/nacos/nacos_8845/logs/java_heapdump.hprof -XX:-UseLargePages -Dnacos.member.list= -Xloggc:/root/nacos/nacos_8845/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/root/nacos/nacos_8845/plugins,/root/nacos/nacos_8845/plugins/health,/root/nacos/nacos_8845/plugins/cmdb,/root/nacos/nacos_8845/plugins/selector -Dnacos.home=/root/nacos/nacos_8845 -jar /root/nacos/nacos_8845/target/nacos-server.jar --spring.config.additional-location=file:/root/nacos/nacos_8845/conf/ --logging.config=/root/nacos/nacos_8845/conf/nacos-logback.xml --server.max-http-header-size=524288
,--.
,--.'|
,--,: : | Nacos 2.2.3
,`--.'`| ' : ,---. Running in cluster mode, All function modules
| : : | | ' ,'\ .--.--. Port: 8845
: | \ | : ,--.--. ,---. / / | / / ' Pid: 8057
| : ' '; | / \ / \. ; ,. :| : /`./ Console: http://192.168.0.10:8845/nacos/index.html
' ' ;. ;.--. .-. | / / '' | |: :| : ;_
| | | \ | \__\/: . .. ' / ' | .; : \ \ `. https://nacos.io
' : | ; .' ," .--.; |' ; :__| : | `----. \
| | '`--' / / ,. |' | '.'|\ \ / / /`--' /
' : | ; : .' \ : : `----' '--'. /
; |.' | , .-./\ \ / `--'---'
'---' `--`---' `----'
2023-11-01 14:19:29,997 INFO The server IP list of Nacos is [127.0.0.1:8845, 127.0.0.1:8836, 127.0.0.1:8847, 192.168.0.10:8845]
2023-11-01 14:19:31,001 INFO Nacos is starting...
2023-11-01 14:19:32,002 INFO Nacos is starting...
2023-11-01 14:19:33,002 INFO Nacos is starting...
2023-11-01 14:19:34,008 INFO Nacos is starting...
2023-11-01 14:19:35,009 INFO Nacos is starting...
2023-11-01 14:19:36,020 INFO Nacos is starting...
2023-11-01 14:19:37,023 INFO Nacos is starting...
2023-11-01 14:19:38,023 INFO Nacos is starting...
2023-11-01 14:19:39,024 INFO Nacos is starting...
2023-11-01 14:19:40,025 INFO Nacos is starting...
2023-11-01 14:19:41,028 INFO Nacos is starting...
2023-11-01 14:19:42,031 INFO Nacos is starting...
2023-11-01 14:19:43,041 INFO Nacos is starting...
2023-11-01 14:19:44,043 INFO Nacos is starting...
2023-11-01 14:19:44,533 INFO Nacos started successfully in cluster mode. use external storage
服务验证
- curl
首先我们通过 curl对应的端口检查服务是否是200
[root@abcdocker nacos]# curl 127.0.01:8836/nacos -I
HTTP/1.1 302
Location: http://127.0.01:8836/nacos/
Transfer-Encoding: chunked
Date: Wed, 01 Nov 2023 06:34:35 GMT
[root@abcdocker nacos]# curl 127.0.01:8845/nacos -I
HTTP/1.1 302
Location: http://127.0.01:8845/nacos/
Transfer-Encoding: chunked
Date: Wed, 01 Nov 2023 06:34:45 GMT
[root@abcdocker nacos]# curl 127.0.01:8847/nacos -I
HTTP/1.1 302
Location: http://127.0.01:8847/nacos/
Transfer-Encoding: chunked
Date: Wed, 01 Nov 2023 06:34:50 GMT
使用APISIX代理后端
创建上游服务
创建路由
选择刚刚创建的上游服务
访问测试
访问: 配置的域名https://nacos.frps.cn/nacos/