Nacos集群和持久化配置
一、官网说明
官网: https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
默认Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致问题的。
为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=youdontknow
二、Nacos持久化配置解释
1、Nacos默认自带的嵌入式数据库derby
源码网址: https://github.com/alibaba/nacos/blob/develop/config/pom.xml
2、derby到mysql切换配步骤
1、在nacos/conf目录下找到sql脚本:nacos-mysql.sql
然后在本地mysql数据库执行脚本
用户名和密码
2、在nacos/conf目录下找到application.properties文件
打开文件 添加mysql数控库连接
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
启动nacos,可以看到是一个全新的空记录界面,以前是记录进derdy
在界面上添加一条配置,然后查看数据库是否有存储数据
数据库查看
以前的nacos的嵌入式的derby切换mysql数据库成功
三、Linux版Nacos+MySQL生产环境配置
预计需要,1个Nginx + 3个nacos注册中心 + 1个mysql
1、Nacos下载Linux版本
官网文档
到 https://github.com/alibaba/nacos/releases/tag/1.1.4
下载 nacos-server-1.1.4.tar.gz
解压安装
上传到虚拟机上
mv nacos-server-1.1.4.tar.gz /usr/local/src/
解压
tar -zxvf nacos-server-1.1.4.tar.gz
cd nacos/
cd bin/
window系统下 启动命令是:startup.cmd
linux系统下 启动命令是 :./startup.sh -m standalone 或者 sh startup.sh -m standalone 高版本: nohup sh startup.sh -m standalone & (注:这是单机版启动)
备份启动命令
cp startup.sh startup.sh.bak
2、集群配置步骤
预备环境:mysql5.7 jdk1.8+ maven tomcat
①Linux服务器上mysql数据库配置
在 /usr/local/src/nacos/conf/
cd /usr/local/src/nacos/conf/
找到nacos-mysql.sql文件来创建数据库表
②application服务器上mysql数据库配置
位置
cd /usr/local/src/nacos/conf/
cp application.properties application.properties.init
vi application.properties
mysql数据库最后是5.7版本的 如果mysql8.0版本以上启动会报错
查看启动日记
cat /usr/local/src/nacos/logs/nacos.log
数据库配置内容:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
③Linux服务器上nacos的集群配置cluster.conf
(1)梳理出3台nacos集器的不同服务端口号
一个nacos: startup 8848
三个naocs: 3333 4444 5555
(2)复制出cluster.conf
cp cluster.conf.example cluster.conf
(3)内容
vi cluster.conf
添加内容
192.168.18.131:3333
192.168.18.131:4444
192.168.18.131:5555
注意:这个IP不能写127.0.0.1,必须是Linux命令hostname -I 或者ifconfig -a 能够识别的IP
④编辑nacos的启动脚本startup.sh,使它能够接受不同的启动端口
在 /usr/local/src/nacos/bin 目录下有startup.sh
集群启动,我们希望可以类似其它软件的shell命令,传递不同的端口启动不同的nacos实例
命令:./startup.sh -p 3333 表示启动端口号为3333的nacos服务器实例,和上一步cluster.conf配置的一致
vi startup.sh
修改前:
修改后:
修改内容
while getopts ":m:f:s:p:" opt
do
case $opt in
m)
MODE=$OPTARG;;
f)
FUNCTION_MODE=$OPTARG;;
s)
SERVER=$OPTARG;;
p)
PORT=$OPTARG;;
?)
echo "Unknown parameter"
exit 1;;
esac
done
nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &
先启动mysql
service mysql start
执行方式:
./startup.sh -p 3333
./startup.sh -p 4444
./startup.sh -p 5555
查看nacos数量
ps -ef| grep nacos|grep -v grep | wc -l
访问集群nacos网址:
http://192.168.18.131:3333/nacos/#/login
http://192.168.18.131:4444/nacos/#/login
http://192.168.18.131:5555/nacos/#/login
⑤Nginx的配置,由它作为负载均衡器
修改nginx的config目录下nginx.conf配置文件
vi nginx.conf
修改内容:
#gzip on;
upstream cluster{
server 127.0.0.1:3333;
server 127.0.0.1:4444;
server 127.0.0.1:5555;
}
server {
listen 1111;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#root html;
#index index.html index.htm;
proxy_pass http://cluster;
}
启动nginx
cd /usr/local/nginx/sbin # 进入目录
./nginx -c /usr/local/nginx/conf/nginx.conf #启动
测试通过nginx访问nacos
http://192.168.18.131:1111/nacos/#/login
新增一条配置:
登录数据库查看是否存储
3、测试
把微服务cloudalibaba-provider-payment-9002启动注册进nacos集群
修改application.yml配置文件:
spring:
application:
name: nacos-payment-provider # 微服务名称
cloud:
nacos:
discovery:
# server-addr: 127.0.0.1:8848 # 配置Nacos地址
# 换成nginx的1111端口,做集群
server-addr: 192.168.18.131:1111
启动9002,查看nacos界面