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/
和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
编辑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
编辑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实现负载均衡。