Nacos高可用集群搭建+MySQL持久化

Nacos高可用集群搭建+MySQL持久化

之前讲述了Nacos单机版的简单安装,详情请参阅 Nacos之单机版安装 或者参考 官网,本文将进一步搭建一个生产可用级别的Nacos高可用集群,并使用MySQL数据库实现数据的持久化。

架构图

下面使官方推荐的搭建模式:
Nacos高可用集群搭建+MySQL持久化_第1张图片
本文使用Nginx来承担VIP的责任,复制负载均衡。

环境要求

  • 64 bit JDK1.8+;
  • 64 bit OS(本文CentOS 7.4);
  • Maven 3.2+(不打包可不需要);
  • 3个或以上的Nacos节点,3个以上才能构成集群;

下载安装包

请参阅Nacos之安装,下载对应的安装包,上传至 /usr/local/src,本文使用的1.1.4版本:
Nacos高可用集群搭建+MySQL持久化_第2张图片
解压后复制到/usr/local/nacos_cluster,分别命名为nacos1nacos2nacos3

[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

Nacos高可用集群搭建+MySQL持久化_第3张图片

数据库配置

真正生产环境建议至少主备模式,或采用高可用数据库。具体可以参考这篇文章:MySQL高可用方案选型参考。本文主角是Nacos,这里使用单机版MySQL。

新建数据库nacos_config,然后执行nacos/conf目录下的nacos-mysql.sql,创建以下几张表:
Nacos高可用集群搭建+MySQL持久化_第4张图片

集群配置

进入/usr/local/nacos_cluster1/nacos,复制cluster.conf.examplecluster.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代理

安装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高可用集群搭建+MySQL持久化_第5张图片
登录(账号密码都是nacos),创建一个测试配置:
Nacos高可用集群搭建+MySQL持久化_第6张图片
我们去数据库查询一下我们新添加的测试配置信息:
在这里插入图片描述
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控制台:
Nacos高可用集群搭建+MySQL持久化_第7张图片
OK,已经注册到nacos集群了。

因个人能力有限,如果不足或错误之处,欢迎指正 ~

你可能感兴趣的:(#,Nacos,分布式)