一、 nacos数据源更换
- nacos用的是自己当前节点内置的derby数据库来保存当前的数据文件;
- 如果要设置nacos集群,则不能使用自己内部derby数据库,要替换为mysql,且目前只支持mysql;
- 三个节点都配置到该数据库上,达到不同节点,共享同一个数据库文件;
1. 建数据库
- 方式一: 直接下载对应的tar文件,可以从con目录下找到该sql,将sql在本地数据库运行;
- 方式二: 如果安装的是docker,则容器中没有该文件,则只能从官网去找;
- 官网:https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql;
2. 修改nacos默认数据源
- 进入docker的nacos容器,修改conf/application.properties文件,将数据源从derby切换到mysql;
- 具体的信息可以去官网查看;
<!--outter mysql datasource-->
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://60.205.229.31:3307/nacos_db?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456
修改前
修改后
3. 重启nacos
- 重启后,再在nacos页面中添加文件时候,就可以在对应的mysql的表config_info表中找到记录;
二、 nacos集群搭建
- 当前使用一个nginx(标准为nginx集群),三个nacos,一个mysql(标准为高可用mysql集群)搭建环境;
1. 集群架构
2. 搭建三台nacos并共享同一个数据源
# 1. 将sql、初始化脚本在本地的mysql数据库运行;
# 2. 先以单节点模式启动三个nacos (官网要求:3个或以上);
# 2.1 其中MODE默认为Cluster集群,如果省略该配置,容器启动几秒后,发现没有集群配置,几秒后就退出了
# 2.2 1G1核的阿里云服务器表示启动起来: 半天才能访问到,太占用资源了
docker run --env MODE=standalone --name first_nacos -d -p 9001:8848 nacos/nacos-server
docker run --env MODE=standalone --name second_nacos -d -p 9002:8848 nacos/nacos-server
docker run --env MODE=standalone --name third_nacos -d -p 9003:8848 nacos/nacos-server
# 3. 修改每个nacos的默认数据源配置;
## 至此,每个nacos节点的数据同步了,并且每个节点展现或者删除的数据,都是对应的mysql数据库的数据;
# 4. 在三个docker中的nacos的conf目录下,增加cluster.conf文件,配置所有的集群节点( ip + 端口);
还需要配置cluster.conf吗?三个nacos已经单独启动且共享一份数据源了啊
3. 一个nginx作为请求负载均衡转发
nginx的地址
http://60.205.229.31:8081/
配置文件
<!--每次修改配置文件,启动docker中的nginx后,一定要检查是否真正启动了
很有可能配置文件改错了,就启动不了了-->
http {
upstream szserver {
server 120.79.28.20:9001;
server 120.79.28.20:9002;
server 120.79.28.20:9003;
}
server{
listen 80;
server_name dreamer;
location / {
proxy_pass http://szserver;
root html;
index index.html index.html;
}
}
4. 请求转发
- 每次启动nacos后,都得服务器快三四分钟响应启动,才能正常的访问nacos
http://60.205.229.31:8081/nacos/#/login