> 文档中心 > SpringCloud Alibaba实战--第四篇:NacosⅢ集群和持久化配置(重要)

SpringCloud Alibaba实战--第四篇:NacosⅢ集群和持久化配置(重要)


系列文章目录

微服务新王SpringCloudAlibaba


文章目录

  • 系列文章目录
  • 前言
  • 一、官网上给出的一些信息
  • 二、Nacos的持久化配置(使用Mysql)
    • 1、创建Mysql数据库(Windows下)
    • 2、修改配置文件
    • 3、重新启动Nacos
  • 三、Linux下安装Nacos
    • 1. 下载Linux版本的Nacos
    • 2. 将Nacos上传到服务器上某目录下
  • 四、Linux下安装Nacos集群配置
    • 1. 执行Mysql脚本,配置Nacos使用mysql
    • 2. 修改集群配置
    • 3. 修改nacos的启动命令,修改startup.sh脚本
      • 1. 输入斜杠,搜索set,找到如下位置
      • 2. 修改启动的命令
  • 五、Linux下Nginx配置负载分发
    • 1. linux下安装nginx
    • 2. 修改nginx配置
  • 六、启动测试
    • 1. 先启动nacos集群
    • 2. 启动nginx
    • 3. 测试添加配置
  • 七、修改服务注册进nacos集群
    • 1. 修改9001工程
  • 八、总结

前言

在这里插入图片描述

  • 在真实的生产环境中,我们不论用什么组件作为注册中心都需要搭建集群,否则系统可用性就太低了,当注册中心出现问题整个服务都完蛋。
  • Eureka中我们需要自己搭建集群模块,进行配置实现集群互相守望,而Nacos是自己做好的不需要我们额外搭建模块。
  • 本章我们将学习Linux生产环境下Nacos的集群配置和持久化配置。

一、官网上给出的一些信息

  • 官网地址:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
  • 生产环境建议使用集群模式。
  • 生产环境下要配置持久化,需要用到Mysql。
  • Mysql建议至少使用主从的方式(主备),保障高可用。
  • Nacos如果不配置数据库使用的是默认内置的数据库。
  • 如果多个Nacos集群,使用时会出现数据一致性问题,如果每个还使用自己内置的数据库无法保障信息一致,因此使用外部的数据库。
  • 外部数据库目前仅支持Mysql。
  • Nacos部署说明:https://nacos.io/zh-cn/docs/deployment.html
    -在这里插入图片描述

二、Nacos的持久化配置(使用Mysql)

为了保证数据不丢失,每次重启后上次的数据还在,Nacos需要做数据持久化,当然他默认的也有数据持久化的方式。
Nacos自带了小型的derby数据库,在集群环境下每个Nacos使用自带的数据库会出现数据不一致问题,Nacos提供了方式可以将derby切换为Mysql。

1、创建Mysql数据库(Windows下)

在Nacos的安装目录下,conf目录下有一个nacos-mysql.sql文件,这就是初始化库文件。
我们需要先新建一个nacos_config数据库
在这里插入图片描述
然后将nacos-mysql.sql中的语句拉出来执行一下。
在这里插入图片描述

2、修改配置文件

修改Nacos的配置文件application.properties,添加以下配置代表使用Mysql做Nacos数据库(注意配置信息需要修改为自己的)
在这里插入图片描述

spring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=truedb.user=rootdb.password=root

在这里插入图片描述

3、重新启动Nacos

修改完配置文件,保存,重新启动Nacos,再次访问页面,发现之前的信息已经没有了,证明切换mysql成功

http://localhost:8848/nacos

在这里插入图片描述
我们随便添加一个配置文件
在这里插入图片描述
查询一下Mysql的config_info表,会发现信息已经存储进来
在这里插入图片描述

三、Linux下安装Nacos

1. 下载Linux版本的Nacos

下载地址:https://github.com/alibaba/nacos/releases/tag/1.1.4
参照博客:https://xiaozhang.blog.csdn.net/article/details/122557207

在这里插入图片描述

2. 将Nacos上传到服务器上某目录下

这里演示上传到了home下
在这里插入图片描述
解压

tar -zxvf nacos-server-1.1.4.tar.gz

在这里插入图片描述
在这里插入图片描述
将nacos复制到一个mynacos中,我们操作mynacos中的nacos

cp -r nacos /home/mynacos/

SpringCloud Alibaba实战--第四篇:NacosⅢ集群和持久化配置(重要)

和Windows版本一样,conf是配置,bin下有启动等命令
到这里,安装完毕,我们配置完成后再启动运行。

四、Linux下安装Nacos集群配置

我们学习时,使用一个nginx分发请求,3个nacos集群,一个mysql用于学习nacos的生产环境集群配置
在这里插入图片描述

1. 执行Mysql脚本,配置Nacos使用mysql

Mysql脚本同样位于nacos的conf目录下
在这里插入图片描述
把该脚本打开,再mysql数据库中执行一下
和Windows上一下,修改Nacos配置,切换数据库
先将application.properties出厂配置备份一下(养成修改前都备份的习惯)

cp application.properties application.properties.bk

SpringCloud Alibaba实战--第四篇:NacosⅢ集群和持久化配置(重要)
编辑conf下的application.properties,添加上如下配置,注意数据库连接信息修改为自己的

spring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://10.195.2.64:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=truedb.user=rootdb.password=root

在这里插入图片描述

2. 修改集群配置

我们用同一台服务器,3333,4444,5555这三个不同的端口来配置集群
将cluster.conf.example复制为cluster.conf,修改集群配置

cp -r cluster.conf.example cluster.conf

在这里插入图片描述
编辑cluster.conf

vim cluster.conf

输入i打开编辑模式,输入如下内容,注意修改IP为自己linux服务器的ip(ip不能写127.0.0.1)

192.168.248.128:3333192.168.248.128:4444192.168.248.128:5555

在这里插入图片描述
按esc,输入:wq保存退出

3. 修改nacos的启动命令,修改startup.sh脚本

在这里插入图片描述
同一台机器上集群启动时,还使用startup.sh就不知道要启动哪一台nacos,因此,我们要修改nacos的启动脚本,给他添加一个 -p 端口的参数,让nacos能根据端口区分启动哪一个
先将原启动脚本备份

 cp startup.sh startup.sh.bk

SpringCloud Alibaba实战--第四篇:NacosⅢ集群和持久化配置(重要)
编辑bin目录下的启动脚本startup.sh(小心谨慎哦)

1. 输入斜杠,搜索set,找到如下位置

在这里插入图片描述
$OPTARG代表的是-x后跟的参数
在这里插入图片描述
修改后在这里插入图片描述

2. 修改启动的命令

拉到最下面,找到图中行
在这里插入图片描述

我们在启动命令上加上启动时指定端口,也就是获取我们上面输入的那个端口
修改后,-Dserver.port的意思是指定端口启动,${PORT}是获取我们上面第一步配置的-p参数
在这里插入图片描述
编辑好后保存退出
这时,我们输入以下命令就可以指定3333端口启动nacos了

./startup.sh -p 3333

五、Linux下Nginx配置负载分发

1. linux下安装nginx

安装包资源(内附安装说明):

链接:https://pan.baidu.com/s/1gJqe0Hx_HbQn5ACfWPXvOg 提取码:14qw

按照以上步骤安装完成后,nginx默认所在的目录是/usr/local/nginx/

2. 修改nginx配置

先进入到nginx的安装目录/usr/local/nginx/下
进入到conf下,先把出厂配置nginx.conf备份一下

cp nginx.conf nginx.conf.bk

修改配置文件,让访问端口1111的配置分发到nacos集群3333、4444、5555上
(linux玩的不6的建议使用ftp拉下来再修改)

vim nginx.conf

在这里插入图片描述

#user  nobody;worker_processes  1;#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid logs/nginx.pid;events {    worker_connections  1024;}http {    includemime.types;    default_type  application/octet-stream;    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '    #    '$status $body_bytes_sent "$http_referer" '    #    '"$http_user_agent" "$http_x_forwarded_for"';    #access_log  logs/access.log  main;    sendfile on;    #tcp_nopush     on;    #keepalive_timeout  0;    keepalive_timeout  65;    #gzip  on;upstream cluster{server 192.168.248.128:3333;server 192.168.248.128:4444;server 192.168.248.128:5555;}    server { listen1111; 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; } #error_page  404/404.html; # redirect server error pages to the static page /50x.html # error_page   500 502 503 504  /50x.html; location = /50x.html {     root   html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { #    proxy_pass   http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { #    root    html; #    fastcgi_pass   127.0.0.1:9000; #    fastcgi_index  index.php; #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name; #    include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { #    deny  all; #}    }    # another virtual host using mix of IP-, name-, and port-based configuration    #    #server {    #    listen8000;    #    listensomename:8080;    #    server_name  somename  alias  another.alias;    #    location / {    # root   html;    # index  index.html index.htm;    #    }    #}    # HTTPS server    #    #server {    #    listen443 ssl;    #    server_name  localhost;    #    ssl_certificate      cert.pem;    #    ssl_certificate_key  cert.key;    #    ssl_session_cache    shared:SSL:1m;    #    ssl_session_timeout  5m;    #    ssl_ciphers  HIGH:!aNULL:!MD5;    #    ssl_prefer_server_ciphers  on;    #    location / {    # root   html;    # index  index.html index.htm;    #    }    #}}

保存退出,或将我们修改好的配置文件重新上传

六、启动测试

1. 先启动nacos集群

进入nacos的bin目录

/home/mynacos/nacos/bin

分别执行以下命令以3333、4444、5555端口启动nacos

./startup.sh -p 3333
./startup.sh -p 4444
./startup.sh -p 5555

输入jps,查看启动是否成功

jps

在这里插入图片描述
访问我们的nacos页面,注意ip修改成自己的

http://192.168.248.128:3333/nacos
http://192.168.248.128:4444/nacos
http://192.168.248.128:5555/nacos

均正常
在这里插入图片描述

2. 启动nginx

进入nginx安装目录

cd /usr/local/nginx/sbin

输入命令,指定nginx配置文件启动

./nginx -c /usr/local/nginx/conf/nginx.conf

访问页面,查看是否转发到集群成功

http://192.168.248.128:1111/nacos

默认账号密码都是nacos,进入页面代表成功
在这里插入图片描述

3. 测试添加配置

随便新增一个配置文件
在这里插入图片描述
在这里插入图片描述
查看mysql数据库中,config_info表是否有对应数据,有代表mysql配置也完成
在这里插入图片描述

七、修改服务注册进nacos集群

1. 修改9001工程

修改9001工程(服务提供者)注册进入nacos

server-addr: 192.168.248.128:1111 #配置nginx转发地址

在这里插入图片描述
启动9001工程
访问nginx转发的nacos页面

http://192.168.248.128:1111/nacos

查看服务列表,发现已经注册成功
在这里插入图片描述


八、总结

  • nacos生产环境通常保证高可用,使用nginx集群做转发统一入口,使用nacos集群,使用mysql集群做nacos的数据源。
  • 我们的测试中是如下形式。
    在这里插入图片描述
  • Nacos通过Nginx实现负载均衡。