Nacos 集群搭建文档

释放双眼,带上耳机,听听看~!
Nacos是 Dynamic Naming and Configuration Service的首字母简称,相较之下,它更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。本次采用单台虚拟机及APISIX作为代理配置高可用
🤖 由 ChatGPT 生成的文章摘要

什么是 Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

  • Nacos 致力于帮助您发现、配置和管理微服务。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方便,推荐模式

Nacos 集群搭建文档

依赖包下载地址
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

所有节点都需要修改

Nacos 集群搭建文档

  • 修改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

Nacos 集群搭建文档

  • 修改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 集群搭建文档

查看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代理后端

创建上游服务

Nacos 集群搭建文档

Nacos 集群搭建文档

Nacos 集群搭建文档

创建路由

Nacos 集群搭建文档

Nacos 集群搭建文档

选择刚刚创建的上游服务

Nacos 集群搭建文档

访问测试

访问: 配置的域名https://nacos.frps.cn/nacos/

Nacos 集群搭建文档

Nacos 集群搭建文档

给TA打赏
共{{data.count}}人
人已打赏
Linux

Centos8配置网络yum源

2023-9-19 15:06:19

Linux

麒麟构建Docker Nginx镜像

2023-11-7 16:01:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索