Nacos的高可用部署
在分布式架构中,任何中间件或者应用都不允许单点存在,所以开源组件一般都会自己支持高可用集群方式,如图所示,Nacos提供了类似于Zookeeper的集群架构,包含一个Leader节点和多个Follower节点。
和ZooKeeper不同的是,它的数据一致性算法是Raft,同样采用了该算法的中间件有Redis Sentinel的Leader选举。
Raft是一种共识算法,旨在替代Paxos。它通过逻辑分离比Paxos更容易理解,但它也被正式证明是安全的,并提供了一些额外的功能。Raft提供了一种在计算系统集群中分布状态机的通用方法,确保集群中的每个节点都同意一系列相同的状态转换。它有许多开源参考实现,具有Go,C ++,Java和Scala中的完整规范实现。
安装环境要求
64-bit Linux系统
64-bit JDK1.8以上
Maven 3.2以上
3个及3个以上Nacos
Mysql数据库
安装包及环境准备
下载安装包,分别进行解压,tar -zvxf nacos-server-1.3.1.tar.gz 解压后会得到5个文件夹:bin、conf、logs、data、target。
集群配置
在conf目录下包含以下文件:
application.properties:默认的配置文件。
cluster.conf.example:集群配置样例文件。
nacos-mysql.sql:Mysql数据库。
nacos-logback.xml:Nacos日志配置文件。
Nacos支持Derby和Mysql两种持久化机制,默认采用Derby数据库,如果采用Mysql,需要运行nacos-mysql.sql创建数据库和表。
192.168.1.106:8848
192.168.1.107:8848
192.168.1.108:8848
由于3台服务器直接需要彼此通信,所以需要开放8848端口。
配置Mysql数据库
Derby数据库是一种文件类型的数据库,在使用时会存在一定的局限性,比如它无法支持多用户同时操作,在数据量大、连接数多的情况下会产生大量连接的积压,所以在生产环境中,使用Mysql替换。执行nacos-mysql.sql创建数据库和表,分别修改conf目录下application.properties,增加Mysql的配置。
spring.datasource.platform=mysql
db.num=1
db.url=jdbc:mysql://192.168.1.104:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
启动Nacos服务
分别进入3台服务器的Nacos的bin目录,在linux系统下,我们运行的是startup.sh。服务启动之后,在nacos/logs/start.out下可以获得如下日志,则表示启动成功。
通过浏览器访问nacos的控制台,在菜单“节点列表”中可以看到如下信息,展示当前节点组成及节点信息。