Nacos集群和持久化配置

suaxi
2021-04-29 / 0 评论 / 202 阅读 / 正在检测是否收录...

​ 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、集群

1.图解.png


以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文件

2.修改startup.sh.png

在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

评论 (0)

取消