之前讲述了Nacos单机版的简单安装,详情请参阅 Nacos之单机版安装 或者参考 官网,本文将进一步搭建一个生产可用级别的Nacos高可用集群,并使用MySQL数据库实现数据的持久化。
下面使官方推荐的搭建模式:
本文使用Nginx来承担VIP的责任,复制负载均衡。
请参阅Nacos之安装,下载对应的安装包,上传至 /usr/local/src
,本文使用的1.1.4版本:
解压后复制到/usr/local/nacos_cluster
,分别命名为nacos1
,nacos2
,nacos3
:
[root@localhost src]# unzip nacos-server-1.1.4.zip
[root@localhost src]# cp nacos /usr/local/nacos_cluster/nacos1 -R
[root@localhost src]# cp nacos /usr/local/nacos_cluster/nacos2 -R
[root@localhost src]# cp nacos /usr/local/nacos_cluster/nacos3 -R
真正生产环境建议至少主备模式,或采用高可用数据库。具体可以参考这篇文章:MySQL高可用方案选型参考。本文主角是Nacos,这里使用单机版MySQL。
新建数据库nacos_config
,然后执行nacos/conf
目录下的nacos-mysql.sql
,创建以下几张表:
进入/usr/local/nacos_cluster1/nacos
,复制cluster.conf.example
为cluster.conf
:
cp cluster.conf.example cluster.conf
修改cluster.conf
内容如下:
#it is ip
#example
192.168.0.14:8847
192.168.0.14:8848
192.168.0.14:8849
这里特别注意下:这个IP不能写127.0.0.1,要写你的真实IP或者说要保证
hostname -i
命令后打印的结果是192.xxx.xxx.xxx
,如果不是请修改hosts,否则你服务注册的时候会失败,报错如下:
java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([192.168.0.14:8800]) tried: failed to req API:192.168.0.14:8800/nacos/v1/ns/instance. code:503 msg: server is STARTING now, please try again later!
然后复制cluster.conf到nacos2和nacos3的conf下,当然你也可以分别去修改:
[root@localhost conf]# cp cluster.conf /usr/local/nacos_cluster/nacos2/conf/cluster.conf
[root@localhost conf]# cp cluster.conf /usr/local/nacos_cluster/nacos3/conf/cluster.conf
我们这里在一台机器上部署3个不同端口的Nacos节点。生产环境,建议多个主机。
修改nacos/conf
目录下的application.properties
文件:
server.port=8847 # 这里nacos1、naocs2、nacos3分别修改为8847、8848、8849,不要重复了。
# 尾部追加以下内容
spring.datasource.platform=mysql # 使用MySQL方式持久化
db.num=1 # 这里宝石几个数据库实例,多个的话,下边依次是`db.url.0`, `db.url.1` etc
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=root # 密码
如果启动失败,可能是内存不够用的,比如我的虚拟机就只设置了1g,启动的时候就报内存不够分配的异常。可以进入
nacos1/bin
下,修改startup.sh
,调整为合适的大小:
依次启动3个Nacos节点:
[root@localhost nacos_cluster]# ./nacos1/bin/startup.sh
[root@localhost nacos_cluster]# ./nacos1/bin/startup.sh
[root@localhost nacos_cluster]# ./nacos1/bin/startup.sh
Output:
nacos is starting with cluster
nacos is starting,you can check the /usr/local/nacos_cluster/nacos1/logs/start.out
查看一下nacos节点个数:
[root@localhost nacos_cluster]# ps -ef|grep nacos|grep -v grep|wc -l
3
安装nginx这里不再赘述,请自行Google搜索。
修改nginx的配置conf,添加一下内容:
upstream cluster{
server 127.0.0.1:8847;
server 127.0.0.1:8848;
server 127.0.0.1:8849;
}
server {
listen 8800;
server_name localhost;
location / {
proxy_pass http://cluster;
}
}
然后启动或者刷新Nginx:
[root@localhost nginx]# ./sbin/nginx -s reload
ngx_http_fastdfs_set pid=11240
打开浏览器访问:http://192.168.0.14:8800/nacos/ :
登录(账号密码都是nacos),创建一个测试配置:
我们去数据库查询一下我们新添加的测试配置信息:
OK. 至此,Nacos集群+MySQL持久化的搭建就完成了。
yml配置:
Nacos服务地址这里配置Nginx负载均衡的地址,不用写多个IP,这样的好处是如果以后更换IP,只要Nginx那边修改就好了,也可以配置成域名。这里的Nginx就是充当了官方架构图中的VIP角色,这样也是官方推荐的模式。
server:
port: 8809
spring:
application:
name: cloud-alibaba-provider
cloud:
nacos:
server-addr: 192.168.0.14:8800 # 这里配置Nginx负载均衡的地址,不用写多个IP,这样的好处是如果以后更换IP,只要Nginx那边修改就好了,也可以配置成域名。这里的Nginx就是充当了官方架构图中的VIP角色,这样也是官方推荐的模式。
启动服务,访问Nacos控制台:
OK,已经注册到nacos集群了。
因个人能力有限,如果不足或错误之处,欢迎指正 ~