Linux-Nacos-服务注册中心搭建
Linux-Nacos-服务注册中心搭建
由于springcloud 注册中心 Eureka 早已停止维护所以我们使用Nacos
官方: https://nacos.io/zh-cn/docs/what-is-nacos.html
欢迎来到 Nacos 的世界!
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
一图看懂 Nacos,下面架构部分会详细介绍。
不多说一句话就是牛逼就行了,简化了我们之前的eureka操作外加和配置中心的整合
手动安装Nacos(单机版)
关闭防火墙 或者开放8848端口 下面有教程
https://github.com/alibaba/nacos/releases 官方编译后的nacos下载地址 可能会因为网络原因出现访问不了的情况
或者百度网盘
链接:https://pan.baidu.com/s/18GYgaGOp5qmZtDWPsM9ZNw
提取码:1234
在安装前linux必须有JDK8+ 而且配置好了环境变量 否则启动不了Nacos
linux 下载 .tar.gz windows 下载 zip 我自己下载的是nacos-server-2.0.1.tar.gz
然后解压到指定目录中这个可以随意 比如: mkdir -p /root/nacos cd /root/nacos
tar -xvf nacos-server-2.0.1.tar.gz
然后进入到可执行文件目录
cd nacos/bin
完事了吗? 当然没有,因为上述配置有问题 ,当我们使用默认配置启动Nacos时,所有配置文件都被Nacos保存在了内置的数据库中。
在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。
如果使用内嵌数据库,注定会有存储上限,本文带大家一起将Nacos中的数据实现持久化
然后在服务器上创建一个数据库…我使用的是mysql5.7
之后使用nacos-mysql.sql 数据库初始化sql文件在本地Navicat连接远程数据库后创建数据库名称:nacos_config,然后把sql初始化文件导入到这个数据库里就行了
nacos-mysql.sql 文件
链接:https://pan.baidu.com/s/1HMECC18VunixlT7bo9OAkA
提取码:1234
–来自百度网盘超级会员V5的分享
之后我们还需要修改nacos文件下conf目录中application.properties内容
在修改前我们需要将application.properties.example拷贝下来 然后把config里面的 application.propertie和application.properties.example删除
然后修改下载来了的application.properties.example内容大概在30左右位置
把注解去掉,然后把数据库ip地址
换成自己的,账号密码也是一样
#*************** 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://192.168.81.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user=root
db.password=root
在填写数据库ip前需要在服务ping 172.29.204.221 下 看看能ping通吗否则报错
修改完成 将 application.properties.example 改为 application.propertie上传到conf 下面就行了
正常情况下本机连接root是没问题了但是不能夸平台所以我们需要给他从"localhost"改称"%"
登录mysql
mysql -u root -p
进入mysql 名称这个数据库
use mysql;
查询root的使用范围权限
select host from user where user='root';
如果结果是:localhost 那么就不对需要进行修改
将默认的"localhost"改称"%"
update user set host = '%' where user ='root';
刷新mysql的配置
flush privileges;
单机版启动Nacos (3分钟左右)
sh startup.sh -m standalone
如果需要关闭当前正在运行的Nacos服务
sh shutdown.sh
实时查询logs(一定要在启动Nacos后赶紧使用 否则报错后你都不知道到原因,一般都是第一个报错后引起一连串报错,所以要认真查看)
在上面命令启动后会显示log位置然后替换下面路径就行
tail -f /root/nacos/nacos/logs/start.out
如果日志没问题那么就可以访问了 如果报错一定都是数据库的问题不用想
然后我们就可以登录 Nacos控制台进行管理了 地址: http://你的ip:8848/nacos/
比如: http://192.168.232.130:8848/nacos/
如果访问失败那么检查防火墙是否关闭 或者8848端口是否放行
然后我们可以发现页面内容都是空的,那么如何测试呢?
服务注册:(模拟一个服务,因为这是一个空服务在一段时间后就会被Nacos发现是假的只是用于测试)
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
服务发现:(通过Git请求获取上面注册的服务信息)
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'
{"name":"DEFAULT_GROUP@@nacos.naming.serviceName","groupName":"DEFAULT_GROUP","clusters":"","cacheMillis":10000,"hosts":[{"instanceId":"20.18.7.10#8080#DEFAULT#DEFAULT_GROUP@@nacos.naming.serviceName","ip":"20.18.7.10","port":8080,"weight":"1.0","healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@nacos.naming.serviceName","metadata":{},"instanceHeartBeatInterval":5000,"instanceIdGenerator":"simple","ipDeleteTimeout":30000,"instanceHeartBeatTimeOut":15000}],"lastRefTime":1621161362425,"checksum":"","allIPs":false,"reachProtectionThreshold":false,"valid":true
}
发布配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld"
获取配置:
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
helloWorld
使用上面的测试url添加一条配置 然后我们可以到数据库里看看是否录入了,
手动安装Nacos集群
在集群前我们需要准备好 3个节点 最低集群标准
192.168.81.128 (主) nocos服务器
192.168.81.129 (副) nocos服务器
192.168.81.130 (副) nocos服务器
还需要在每个节点上装好JDK 并配置好环境变量
而且我们还需要准备一个Nacos共享数据库
还需要准备nginx用于 nacos群代理服务器
192.168.81.100 nginx服务器
以下安装过程在3个节点中都要部署一样的配置
关闭每个节点的防火墙 或者开放8848端口 下面有教程
https://github.com/alibaba/nacos/releases 官方编译后的nacos下载地址 可能会因为网络原因出现访问不了的情况
在安装前linux必须有JDK8+ 而且配置好了环境变量 否则启动不了Nacos
linux 下载 .tar.gz windows 下载 zip 我自己下载的是nacos-server-2.0.1.tar.gz
或者百度网盘
链接:https://pan.baidu.com/s/18GYgaGOp5qmZtDWPsM9ZNw
提取码:1234
然后解压到指定目录中这个可以随意 比如: mkdir -p /root/nacos cd /root/nacos
tar -xvf nacos-server-2.0.1.tar.gz
完事了吗? 当然没有,因为上述配置有问题 ,当我们使用默认配置启动Nacos时,所有配置文件都被Nacos保存在了内置的数据库中。
集群必须配置统一数据库,不然每个节点的数据不同
然后在服务器上创建一个数据库…我使用的是mysql5.7
使用 nacos-mysql.sql 数据库初始化sql文件然后在本地Navicat连接远程数据库后创建数据库名称:nacos_config,然后把sql初始化文件导入到这个数据库里就行了.
nacos-mysql.sql 文件
链接:https://pan.baidu.com/s/1HMECC18VunixlT7bo9OAkA
提取码:1234
–来自百度网盘超级会员V5的分享
之后我们还需要修改nacos文件下conf目录中application.properties内容
在修改前我们需要将application.properties.example拷贝下来 然后把config里面的 application.propertie和application.properties.example删除
然后修改下载来了的application.properties.example内容大概在30左右位置
把注解去掉,然后把数据库ip地址
换成自己的,账号密码也是一样
#*************** 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://192.168.81.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user=root
db.password=root
在填写数据库ip前需要在服务ping 172.29.204.221 下 看看能ping通吗否则报错
修改完成 将 application.properties.example 改为 application.propertie上传到conf 下面就行了
下面这个操作做一次就行了 如果 root 以前改为 "%"了那么就不用管了
正常情况下本机连接root是没问题了但是不能夸平台所以我们需要给他从"localhost"改称"%"
登录mysql
mysql -u root -p
进入mysql 名称这个数据库
use mysql;
查询root的使用范围权限
select host from user where user='root';
如果结果是:"%" 那么就不对需要进行修改
将默认的"localhost"改称"%"
update user set host = '%' where user ='root';
刷新mysql的配置
flush privileges;
修改conf/cluster.conf.example 的内容 (集群必须配置)
192.168.81.128:8848
192.168.81.129:8848
192.168.81.130:8848
修改完后文件名改为cluster.conf
集群Nacos 默认Xms 和Xmx都是2g 如果单节点的服务器内存小于3G的话就需要调整否则会导致启动不起来Nacos的
修改对应的cd /root/nacos/nacos/bin
vi startup.sh
测试的话改为 512m 512m 256m 和单机相同就行
集群办启动Nacos (3分钟左右)
sh startup.sh
实时查询logs(一定要在启动Nacos后赶紧使用 否则报错后你都不知道到原因,一般都是第一个报错后引起一连串报错,所以要认真查看)
在上面命令启动后会显示log位置然后替换下面路径就行
tail -f /root/nacos/nacos/logs/start.out
如果日志没问题那么就可以访问了 如果报错一定都是数据库的问题不用想
如果需要关闭当前正在运行的Nacos服务
sh shutdown.sh
然后逐个ip去测试
http://192.168.81.128:8848/nacos/
http://192.168.81.129:8848/nacos/
http://192.168.81.130:8848/nacos/
输入默认账号密码:nacos,nacos
如果访问失败那么检查防火墙是否关闭 或者8848端口是否放行
在任意节点发布配置 (如果三个节点都同时有了那么就成功了)
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld"
Nginx 转发
再启动一台服务器 192.168.81.100
,安装 Nginx,配置代理转发规则。
在nginx.conf中http标签中加入如下代码:
upstream cluster {server 192.168.81.128:8848 weight=1 max_fails=2 fail_timeout=10s;server 192.168.81.129:8848 weight=1 max_fails=2 fail_timeout=10s;server 192.168.81.130:8848 weight=1 max_fails=2 fail_timeout=10s;}server{listen 80;server_name localhost;location /nacos {proxy_pass http://cluster/nacos;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header REMOTE-HOST $remote_addr;add_header X-Cache $upstream_cache_status;add_header Cache-Control no-cache;}}
常用Nginx命令:
修改配置后重新加载生效
/usr/local/nginx/sbin/nginx -s reload
启动nginx:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
然后我们就可以使用nginx的地址 http://192.168.81.100/nacos 进行访问了
可以看到三个节点的服务都正常显示
然后我们使用nginx代理进行注册服务
curl -X POST 'http://192.168.81.100:80/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
然后进入到服务列表里查看如果存在那么在刷新页面, 还存在那么就代表集群部署成功
Spring Cloud Alibaba连接Nacos集群
spring:application:name: nacos-providercloud:nacos:discovery:server-addr: 192.168.81.100:80 #nginx-nacos注册中心地址
server:port: 17357
docker安装Nacos(单机版)
关闭防火墙 或者开放8848端口 下面有教程
然后创建一个nacos_config数据库然后导入下面的配置文件
数据库初始化文件
链接:https://pan.baidu.com/s/1XcmYGfwyk5nDG8UD6wvq1A
提取码:1234
我的数据库ip是192.168.81.1:3306
下面这个操作做一次就行了 如果 root 以前改为 "%"了那么就不用管了
正常情况下本机连接root是没问题了但是不能夸平台所以我们需要给他从"localhost"改称"%"
登录mysql
mysql -u root -p
进入mysql 名称这个数据库
use mysql;
查询root的使用范围权限
select host from user where user='root';
如果结果是:"%" 那么就不对需要进行修改
将默认的"localhost"改称"%"
update user set host = '%' where user ='root';
刷新mysql的配置
flush privileges;
mkdir -p /home/nacos/logs & mkdir -p /home/nacos/init.d & mkdir -p /home/nacos/conf
vi /home/nacos/conf/application.properties
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.81.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user=root
db.password=rootnacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000
management.endpoints.web.exposure.include=*
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.basedir=
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=false
nacos.core.auth.default.token.expire.seconds=18000
nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
nacos.core.auth.caching.enabled=true
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
nacos.istio.mcp.server.enabled=false
文件内 db.url.0 替换成你的数据库地址 和账号密码 其他都不动
启动容器
docker run -d --name nacos \
-e MODE=standalone \
--privileged=true \
--network=host \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e JVM_XMN=128m \
-e TIME_ZONE='Asia/Shanghai' \
-v /home/nacos/logs:/home/nacos/logs \
-v /home/nacos/conf/application.properties:/home/nacos/conf/application.properties \
nacos/nacos-server:2.0.1
如果服务器宕机后需要重启nacos才行
docker restart nacos-cluster
查看日志
cd /home/nacos/logs
然后访问 http://192.168.81.128:8848/nacos/
然后我们可以发现都是空的,那么如何测试呢?
服务注册:(模拟一个服务,因为这是一个空服务在一段时间后就会被Nacos发现是假的只是用于测试)
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
服务发现:(通过Git请求获取上面注册的服务信息)
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'
{"name":"DEFAULT_GROUP@@nacos.naming.serviceName","groupName":"DEFAULT_GROUP","clusters":"","cacheMillis":10000,"hosts":[{"instanceId":"20.18.7.10#8080#DEFAULT#DEFAULT_GROUP@@nacos.naming.serviceName","ip":"20.18.7.10","port":8080,"weight":"1.0","healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"DEFAULT_GROUP@@nacos.naming.serviceName","metadata":{},"instanceHeartBeatInterval":5000,"instanceIdGenerator":"simple","ipDeleteTimeout":30000,"instanceHeartBeatTimeOut":15000}],"lastRefTime":1621161362425,"checksum":"","allIPs":false,"reachProtectionThreshold":false,"valid":true
}
发布配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld"
获取配置:
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
helloWorld
docker 安装Nacos(集群版)
在集群前我们需要准备好 3个节点 最低集群标准
192.168.81.128 (主) nocos服务器
192.168.81.129 (副) nocos服务器
192.168.81.130 (副) nocos服务器
而且我们还需要准备一个Nacos共享数据库
还需要准备nginx用于 nacos群代理服务器
192.168.81.100 nginx服务器
其他的后面在说
创建一个nacos_config数据库然后导入下面的配置文件
数据库初始化文件
链接:https://pan.baidu.com/s/1XcmYGfwyk5nDG8UD6wvq1A
提取码:1234
我的数据库ip是192.168.81.1:3306
下面这个操作做一次就行了 如果 root 以前改为 "%"了那么就不用管了
正常情况下本机连接root是没问题了但是不能夸平台所以我们需要给他从"localhost"改称"%"
登录mysql
mysql -u root -p
进入mysql 名称这个数据库
use mysql;
查询root的使用范围权限
select host from user where user='root';
如果结果是:"%" 那么就不对需要进行修改
将默认的"localhost"改称"%"
update user set host = '%' where user ='root';
刷新mysql的配置
flush privileges;
以下步骤在3个节点上都执行一遍(内容不变)
mkdir -p /home/nacos/logs & mkdir -p /home/nacos/init.d & mkdir -p /home/nacos/conf
vi /home/nacos/conf/application.properties
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.81.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghaidb.user=root
db.password=rootnacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000
management.endpoints.web.exposure.include=*
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.basedir=
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=false
nacos.core.auth.default.token.expire.seconds=18000nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789nacos.core.auth.caching.enabled=true
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
nacos.istio.mcp.server.enabled=false
文件内 db.url.0 替换成你的数据库地址 和账号密码 其他都不动
(集群关键地方)启动容器 (和单机版有些不同)
docker run -d --name nacos-cluster \
--network host \
-e PREFER_HOST_MODE=hostname \
-e NACOS_SERVER_IP=192.168.81.128 \
--privileged=true \
--restart=always \
-e NACOS_SERVERS=192.168.81.128:8848,192.168.81.129:8848,192.168.81.130:8848 \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e JVM_XMN=128m \
-e TIME_ZONE='Asia/Shanghai' \
-e TOMCAT_ACCESSLOG_ENABLED=false \
-v /home/nacos/logs:/home/nacos/logs \
-v /home/nacos/conf/application.properties:/home/nacos/conf/application.properties \
nacos/nacos-server:2.0.1
注意:
-e NACOS_SERVER_IP 换成当前节点的ip (不然集群各节点相互不通)
-e NACOS_SERVERS 对应的是每一个需要集群的节点ip
如果服务器宕机后需要重启nacos才行
docker restart nacos-cluster
查看日志
cd /home/nacos/logs
如果start.out里没有报错 那么就代表成功了
然后访问 http://192.168.81.128:8848/nacos/
然后访问 http://192.168.81.129:8848/nacos/
然后访问 http://192.168.81.130:8848/nacos/
Nginx 转发
再启动一台服务器 192.168.81.100
,安装 Nginx,配置代理转发规则。
在nginx.conf中http标签中加入如下代码:
upstream cluster {server 192.168.81.128:8848 weight=1 max_fails=2 fail_timeout=10s;server 192.168.81.129:8848 weight=1 max_fails=2 fail_timeout=10s;server 192.168.81.130:8848 weight=1 max_fails=2 fail_timeout=10s;}server{listen 80;server_name localhost;location /nacos {proxy_pass http://cluster/nacos;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header REMOTE-HOST $remote_addr;add_header X-Cache $upstream_cache_status;add_header Cache-Control no-cache;}}
常用Nginx命令:
修改配置后重新加载生效
/usr/local/nginx/sbin/nginx -s reload
启动nginx:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
然后我们就可以使用nginx的地址 http://192.168.81.100/nacos 进行访问了
可以看到三个节点的服务都正常显示
然后我们使用nginx代理进行注册服务
curl -X POST 'http://192.168.81.100:80/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
然后进入到服务列表里查看如果存在那么在刷新页面, 还存在那么就代表集群部署成功
Spring Cloud Alibaba连接Nacos集群
spring:application:name: nacos-providercloud:nacos:discovery:server-addr: 192.168.81.100:80 #nginx-nacos注册中心地址
server:port: 17357
Nacos部署出现的问题
错误1:
Nacos 0~2.xx各种版本大部分都是数据库出现的错误 如果你的数据库是 mysql8 那么从新安装一个mysql7把 不要问为啥…
错误2
如果类似下面这样的错误
1、org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection;
nested exception is org.apache.commons.dbcp.SQLNestedException:
Cannot create PoolableConnectionFactory (Could not create connection to database server. Attempted reconnect 3 times. Giving up.)
2、Caused by: java.lang.NullPointerExceptionat com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:29at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1873)at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(Myat com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1206)at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2234)at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:... 28 more
追踪源码可以看到错误是由于com.mysql.jdbc.ConnectionImpl.getServerCharset中获取不到character_set_server参数造成的
解决方案:
找到你的mysql配置文件my.cnf或my.ini
在[mysqld]下添加编码配置,如下所示:
[mysqld]
character_set_server=utf8
重启mysql
systemctl restart mysqld
错误3
如果出现类似下面这样的错误
null, message from server: "Host 'DESKTOP-R0PPSGR' is not allowed to connect to this MySQL server"
这个异常是数据库只允许localhost或127.0.0.1访问,不允许远程访问。我用的本机IP都不行。
解决办法:修改访问权限即可。
mysql -uroot -p密码 登陆到数据:use mysql;
select host,user from user;
可以看到user为root,host为localhost的话,说明mysql只允许本机连接,那么外网,本地软件客户端就无法连接了。
调整方法:
执行:update user set host='%' where user ='root';
执行刷新权限:flush privileges;
可以测试外网连接mysql服务器。
错误4
如果你的数据库是mysql8那么肯定会报错
解决办法
在 Nacos 安装目录下新建 plugins/mysql
文件夹,并放入 8.0+ 版本的 mysql-connector-java-8.0.xx.jar,重启 Nacos 即可,启动时会提示更换了 MySQL 的 driver-class 类。
错误5
启动不了nacos或者跑了一段时间Nacos挂了 那么你先检查是不是本地服务器内存太小 如果本地服务器内存低于3g
那么就可能导致Nacos挂掉 因为Nacos默认占用2g
修改方法在文章后面 Nacos-JVM优化 有
错误6
以上问题都解决不了,并且报的错还是 mysql 连接失败 那么就检查application.properties配置文件 实在不行就从新写一个 把原来删除了 (我就是这样解决问题的)
Nacos-mysql 主从节点(集群)
官方推荐使用高可用Mysql,正好Mysql也符合要求,MHA架构,一主一备两从 ,一般生产会使用到 ,还是那句话建议使用msql5.7会少很多问题,每个节点的数据库账号密码都是一样的
修改每个节点的 application.properties内容 其他都保持不变就行
db.num=3
db.url.0=jdbc:mysql://192.168.174.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&serverTimezone=UTCdb.url.1=jdbc:mysql://192.168.174.2:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&serverTimezone=UTCdb.url.2=jdbc:mysql://192.168.174.3:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&serverTimezone=UTC
如果 0.1.2 数据库密码都不一样那么可以指定账号密码
db.user.0=root
db.password.0=root
防火墙
查看防火墙状态
systemctl status firewalld
暂时关闭防火墙 (重启虚拟机后失效)
systemctl stop firewalld
永久关闭防火墙
systemctl disable firewalld
开启防火墙
systemctl start firewalld
开放端口
firewall-cmd --zone=public --add-port=8848/tcp --permanent
重启防火墙 (开放端口后需要重启防火墙 否则不起作用)
firewall-cmd --reload
查看端口号
netstat -ntlp
查看所有8848 端口使用情况
netstat -ntulp |grep 8848
Nacos-JVM优化
如果虚拟机内存较小或者服务内存较小 建议修改jvm参数
集群Nacos 默认Xms 和Xmx都是2g 如果你虚拟机内存小于3G的话就需要调整否则会导致启动不起来Nacos的
修改对应的bin/startup.sh
vi startup.sh
测试的话改为 512m 512m 256m 和单机相同就行
根据你自己服务器大小决定,如果一个服务器没有其他服务的话只有Nacos那么jVM可以设置占比百分之80
如果有其他服务的话那么需要测试每个服务占比多少内存,然后在余下百分之10给服务内部运转其他的内存就全给Nacos就行
点赞 -收藏-关注-便于以后复习和收到最新内容 有其他问题在评论区讨论-或者私信我-收到会在第一时间回复 如有侵权,请私信联系我 感谢,配合,希望我的努力对你有帮助^_^
Linux-Nacos-服务注册中心搭建相关推荐
- 二、Nacos服务注册中心应用实践
Nacos服务注册中心 文章目录 Nacos服务注册中心 一.Nacos服务注册中心 1. 注册中心简介 2. 构建Nacos服务 2.1 准备工作 2.2 下载与安装 2.3 初始化配置 3. 服务 ...
- 微服务2——服务的注册,调用(Nacos服务注册中心+服务调用+调用负载均衡)sca-comsumersca-provider
一.Nacos的安装和构建 以及启动 其官网地址如下: Nacos官网 1.安装前提: 第一:确保你电脑已配置JAVA_HOME环境变量(Nacos启动时需要),例如: 第二:确保你的MySQL版本 ...
- Nacos服务注册中心
文章目录 注册中心简介 背景分析 Nacos概述 构建Nacos服务 准备工作 下载与安装 初始化配置 服务启动与访问 服务注册与调用入门(重点) 业务描述 生产者服务创建及注册 消费者服务发现及调用 ...
- Nacos服务注册中心(微服务)
为什么要用服务注册中心? 在微服务中,首先需要面对的问题就是如何查找服务(软件即服务), 其次就是如何在不同的服务之间进行通信? 如何更好更方便的管理应用中的每一个服务,如何建立各个服务之间联系的纽带 ...
- Nacos服务注册中心应用实践
目录 注册中心简介 背景分析 Nacos概述 构建Nacos服务 准备工作 下载与安装 初始化配置 服务启动与访问 消费者服务发现及调用 思路总结: 注册中心简介 背景分析 如何更好更方便的管理应用中 ...
- 1.4 Nacos服务注册中心应用实践
文章目录 1.注册中心简介 1.1 背景分析 1.2 Nacos概述 2.构建Nacos服务 2.1 准备工作 2.2 下载与安装 2.3 初始化配置 2.4 服务启动与访问 2.4.1 命令行启动 ...
- Eureka 微服务注册中心搭建
本机IP为 192.168.1.102 1. 新建Maven项目 eureka 2. pom.xml <project xmlns="http://maven.apach ...
- 手把手教你搭建SpringCloudAlibaba之Nacos服务配置中心
SpringCloud Alibaba全集文章目录: 零.手把手教你搭建SpringCloudAlibaba项目 一.手把手教你搭建SpringCloud Alibaba之生产者与消费者 二.手把手教 ...
- SpringCloud学习之(十八)SpringCloud Alibaba Nacos服务注册和配置中心
文章目录 (十八)SpringCloud Alibaba Nacos服务注册和配置中心 1.Nacos简介 1.1 为什么叫Nacos 1.2 Nacos是什么 1.3 Nacos能干嘛 1.4 Na ...
- Nacos服务注册和配置中心
简介 Nacos 前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service. Nacos = Eureka+Config +Bus,就是注册中心 + 配置中心的组 ...
最新文章
- 快速构建深度学习图像数据集,微软Bing和Google哪个更好用?
- 空间简史-人类认识空间的旅程与其对强化学习的启示
- 【Silverlight】Bing Maps开发应用与技巧三:Bing Maps Silverlight Control的离线开发
- 【译】在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本
- sortable 拖拽时互换目标的位置_报表如何实现行列互换效果?
- 如何做出受欢迎的字体排版风格?
- 关于WebRTC发展的担忧和思考
- 谈谈我对MVC的View层实现的理解
- [html] 如何禁止web端的页面缩放?
- WordPress程序备受喜爱的原因:十八般武艺
- 深度人脸表情识别研究进展
- Linux系统下的RZSZ(文件传输工具)
- TestNg测试框架使用
- 被Redis击穿的一次面试经历
- 8.Nginx 例子
- 四轴飞行器Bootloader和固件的更新
- 编译ffmpeg:libavdevice/xcbgrab.c:28:10: fatal error: xcb/xfixes.h: 没有那个文件或目录
- linux 常用图形库,在Linux下常用的3款Git图形客户端
- win10系统安装SQLServer2008r2最全教程
- 个人简历表格 个人简历word百度云 完整个人简历样本
热门文章
- HTML+CSS+JS实操京东购物车
- 数学建模学习(17):图与网络模型之图详细讲解,最直白的话讲数据结构,内容偏多,建议先收藏
- Flink cdc +doris生产遇到的问题汇总-持续更新
- 考研复试(控制工程专硕)及大学本科(物联网工程)知识点回顾(一)——C语言/单片机
- SpringMVC通过ResponseEntity实现文件下载
- [HGE]-源码分析-11 sound
- JEECG-BOOT首页标题修改
- 毕业设计-基于BP神经网络预测系统的设计- MATLAB
- BZOJ1232 安慰奶牛cheer (洛谷2916)
- Unity实用小工具或脚本——可折叠伸缩的多级(至少三级)内容列表(类似于Unity的Hierarchy视图中的折叠效果)