Nacos默认使用嵌入式数据库实现数据存储,如果启动多个默认配置下的nacos节点,则存在数据一致性问题,为了解决这个问题,Nacos采用集中式存储
来支持集群化部署,目前仅支持MySQl。
三种部署方式
单机 - 用于测试和单机试用
集群 - 生产环境,确保高可用
多集群 - 多用于数据中心等场景
1、单机版
1、在MySQl新建nacos_config
数据库;
2、运行conf文件夹下的nacos-mysql.sql
,导入数据;
3、修改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
4、重启startup.cmd(nacos)之后,数据源就改为了自己的
2、集群
以Nginx作为vip,三个nacos节点为例
1、下载Linux版Nacos
2、新建nacos_config
数据库
3、修改数据源(同理单机版配置)
4、修改cluster.conf,进去conf文件夹,执行以下命令,备份原文件
cp cluster.conf.example cluster.conf
运行hostname -i
,查看主机名,此处以127.0.0.1为例(实际需替换为自己linux服务器执行hostname -i
命令后的结果)
在cluster.conf文件中添加
127.0.0.1:3333
127.0.0.1:4444
127.0.0.1:5555
5、修改/bin/startup.sh文件
在nohup $JAVA这一行添加-Dserver.port=${PORT}
nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &
注:新版的Nacos 2.0.0不需要添加case中的PORT,已自带
# 为了方便使用,将2.0.0版本中的 EMBEDDED_STORAGE 改为了PORT
while getopts ":m:f:s:c:p:" opt
do
case $opt in
m)
MODE=$OPTARG;;
f)
FUNCTION_MODE=$OPTARG;;
s)
SERVER=$OPTARG;;
c)
MEMBER_LIST=$OPTARG;;
p)
EMBEDDED_STORAGE=$OPTARG;;
?)
echo "Unknown parameter"
exit 1;;
esac
done
6、Nginx配置
# 通过1111端口反代三个Nginx集群
upstream cluster{
server 127.0.0.1:3333;
server 127.0.0.1:4444;
server 127.0.0.1:5555;
}
server {
listen 1111;
listen [::]:80 default_server;
server_name localhost;
#root /usr/share/nginx/html;
# Load configuration files for the default server block.
#include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://cluster;
}
7、启动
# 先启动Nacos节点
./startup.sh -p 3333
./startup.sh -p 4444
./startup.sh -p 5555
# 再启动Nginx
systemctl start nginx
8、访问x.x.x.x:1111
测试Nacos集群
9、将微服务注册到Nacos集群
修改yml配置文件的注册地址即可
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: x.x.x.x:1111 # Nginx反代的地址
management:
endpoints:
web:
exposure:
include: '*'
评论 (0)