欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Nacos高可用集群配置

时间:2023-06-14
0 准备 0.1 环境

Nacos集群和数据库均部署在阿里云ECS服务器上。
版本:

nacos:1.4.2mysql:8nginx:1.20.2 1 配置Nacos集群 1.1 配置Mysql数据库 1.1.1 安装Mysql数据库

安装过程略。
参考:Mysql安装教程

配置数据库。
创建一个数据库名为nacos。下载好nacos-server安装包(地址在1.2节),使用nacos/conf/nacos-mysql.sql文件初始化数据库。创建结果如下

1.2 搭建集群(三个节点)

创建三个集群,分别是本地ip下的8848,8849,8850端口。

重要提醒!!:如果你使用的是nacos 2.x版本,因为nacos2.x版本使用新的通信协议,除了设置的8848端口,还会默认占用9848(8848+1000)和9849(8848+1001)。即:设置端口号为x,实际占用的还有x+1000和x+1001两个端口。所以,如果使用nacos2.x版本搭建集群,请设置端口为8848,8858,8868三个端口(举例)以避免端口冲突。

首先下载nacos-server-1.4.2安装包:地址

版本说明:
目前的最新版已经到2.0.3。一开始在本地单机模式运行的时候也使用该版本。但在集群配置时总是出现意外错误。因此这里改成2.0.3版本

解压安装包:

tar -zxvf nacos-server-1.4.2.tar.gz

将安装包移动至/usr/local目录下

mv -r nacos /usr/local/

修改nacos/conf/application.properties文件(相关配置已经在文档里给出,这里只需要解开注释即可):

#*************** Spring Boot Related Configurations ***************#### Default web context path:server.servlet.contextPath=/nacos### Default web server port:server.port=8848#*************** Network Related Configurations ***************#### If prefer hostname over ip for Nacos server addresses in cluster.conf:# nacos.inetutils.prefer-hostname-over-ip=false### Specify local server's IP:# nacos.inetutils.ip-address=#*************** Config Module Related Configurations ***************#### If use MySQL as datasource:spring.datasource.platform=mysql### Count of DB:db.num=1### Connect URL of DB:db.url.0=jdbc:mysql://172.18.77.41:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTCdb.user.0=rootdb.password.0=123456### Connection pool configuration: hikariCPdb.pool.config.connectionTimeout=30000db.pool.config.validationTimeout=10000db.pool.config.maximumPoolSize=20db.pool.config.minimumIdle=2

注意的点:

相关配置解开注释即可db.url.0需要配置好数据库的ip地址。使用ECS服务器的应该写成内网或者公网ip地址设置好数据库的用户名和密码

创建cluster.conf文件

# 在conf文件夹下执行cp cluster.conf.example cluster.conf

修改cluster.conf文件,定义集群中的节点信息

172.18.77.41:8848172.18.77.41:8849172.18.77.41:8850

注意:这个地址应该为eth0地址,此处为ECS的内网地址。

修改启动文件nacos/bin/startup.sh
**重要!!**观察代码可以发现,默认集群模式启动时,分配的内存为-Xms2g -Xmx2g -Xmn1g,如此开启三个节点会很快耗尽内存。我的ECS只有1个g的内存,ECS上启动一个节点就会导致卡死。这里建议修改为-Xms64m -Xmx64m -Xmn40m。

我设置过-Xmn=32m,后来报错是Tomcat启动错误。

#===========================================================================================# JVM Configuration#===========================================================================================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 -Xms64m -Xmx64m -Xmn40m -XX:metaspaceSize=128m -XX:MaxmetaspaceSize=320m" JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumponOutOfMemoryError -XX:HeapDumpPath=${base_DIR}/logs/java_heapdump.hprof" JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"fi

将nacos文件夹命名为nacos8848,并且复制额外两份nacos8849,nacos8850

mv nacos nacos8848cp -r nacos8848 nacos8849cp -r nacos8848 nacos8850

修改nacos8849和nacos8850的配置。只需要修改application.properties中定义的server.port

server.port=8849 #nacos8849配置server.port=8850 #nacos8850配置

启动三个nacos节点

#在三个bin目录下执行./startup.sh

观察start.out文件,确定三个节点均启动成功

[root@aliyunECS nacos8848]# tail -f /usr/local/nacos8848/logs/start.out 2022-02-12 17:55:02,015 INFO Nacos is starting...2022-02-12 17:55:03,055 INFO Nacos is starting...2022-02-12 17:55:04,100 INFO Nacos is starting...2022-02-12 17:55:05,253 INFO Nacos is starting...2022-02-12 17:55:05,814 INFO Nacos started successfully in cluster mode、use external storage

访问控制台,确定三个节点均可以访问

注意:在虚拟机中创建集群时,确定防火墙已关闭。在ECS服务器上配置时,确定防火墙打开了8848,8849,8850三个端口。如果使用nacos2.x版本,还需要打开x+1000和x+1001等几个端口。

2 配置Nginx反向代理

在/usr/local/nginx/conf/nginx.conf中,增加以下代码,使得nginx可以反向代理到nacos集群。

upstream nacos_cluster { #注:这里配置为公网ip也是可以的 server 172.18.77.41:8848; server 172.18.77.41:8849; server 172.18.77.41:8850; } server { listen 1111; server_name localhost; location / { proxy_pass http://nacos_cluster; proxy_set_header Host $host:$server_port; } }

3 项目配置nacos-config

# bootstrap.yml# 必须配置能够找到配置文件的信息:spring.application.name; spring.cloud.nacos.config.server-addr; spring.cloud.nacos.config.file-extention; spring.profiles.activespring: cloud: nacos: config: server-addr: 120.78.228.224:1111 file-extension: yaml # namespace: fabadd97-ce57-4001-b62d-62a6650eca5f # 这里必须写命名空间的id值,不能写名字 # group: MY_GROUP extension-configs: - dataId: common.yaml group: DEFAULT_GROUP refresh: true application: name: payment-service profiles: active: dev

4 在nacos控制台配置服务的配置信息

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。