dister的使用示例

这一节我们来演示搭建一个dister集群,为简单起见,我们这个集群只有3个节点:192.168.2.15、192.168.2.63、192.168.2.114,名称分别设置为node1、node2、node3。

一、dister选举流程

node1:

node2:

node3:

我们可以看到,dister启动时会打印出当前节点的一些信息,我们需要注意的是节点名称、最小节点数以及数据保存路径,虽然我们没有设置数据保存路径,但是dister默认是保存到当前路径,并且创建了一个dister.db目录。

另外,我们也注意到,每个节点启动的时候,它都能快速地发现当前局域网的其他dister节点,并迅速建立通信,因为默认情况下,dister会对当前所在的局域网进行异步扫描,这个过程非常快速。

由于设置了集群最少节点为3个,因此只启动node1和node2时,集群并没有开始进行选举,但是一旦启动了node3,集群立即开始选举流程,并且迅速地选举出node1作为leader,其他两个节点降级为follower。

这个时候集群便搭建完成了。

二、节点管理操作

1、查看集群节点列表

在任意节点上执行 dister nodes 命令

2、添加/删除节点

我们往集群中添加一个新的节点 192.168.2.121,名字设定为node4,使用 dister addnode 命令

首先我们先运行node4

啊,不对,已经被自动发现了,因此我们在演示的时候应该关闭掉自动发现功能,不过既然已经被发现了,那么我们就先来演示删除这个节点吧。

首先我们应当停止运行node4节点,因为在节点运行的状态下,是无法被删除的,停止运行后,当前集群的状态如下:

接着我们使用 dister delnode 命令进行删除

3、添加节点

接着我们把node4添加回集群,这个时候我们为了演示效果,需要把node4的自动发现关闭掉:

接着在任意集群节点使用 dister nodes 查看当前集群节点列表:

添加node4

这个时候node4便被成功添加进入集群。

三、KV数据操作

由于node1是leader,为便于演示我不在leader上进行任何操作,仅在node2和node3上进行操作演示。

1、目前集群暂无任何的数据,调用 dister kvs 会提示当前数据为空,因此我们先在node3上通过命令行添加1条kv数据

2、紧接着我们去node2上进行查看,发现数据已经同步成功了,并且打印出了所有的数据;接着我们在node2上也添加1条数据,并通过&&立即查询并打印出刚才添加的数据,结果也能立即获取到,并没有任何延迟

3、在node2上删除name数据(这条数据是node3添加的),并在node3上查询所有KV数据结果

node2:

node3:

可以看到各个节点的数据同步非常及时。

四、服务管理操作

1、添加服务

这里我们只添加两个服务,1个web服务,1个mysql服务,配置文件内容如下:

我们在node2上使用 dister addservice 命令进行添加

2、查看服务

接着我们在node2上执行 dister services 命令查看当前所有的服务列表

我们会发现服务并没有更新到node2上,为什么呢?因为服务的健康检测是有一定时间间隔的,默认是2000毫秒,也就是2秒钟,等待几秒后,发现每个节点上打印出信息:

node1:

node2:

node3:

在首次加入服务健康检查的时候,有可能会出现多次更新,因为每当1个节点更新状态的时候,leader节点都有可能会同步服务信息到follower节点,服务同步是一个独立的线程,依靠定时检测执行,当定时检测到更新便会执行同步。

这个时候我们可以在集群中任意一个节点,通过 dister services 命令查看当前的服务列表:

也可以通过浏览器打开 http://127.0.0.1:4168/service 查看服务状态

我们也可以通过 dister getservice 查看指定服务的状态

或者通过浏览器 

3、删除服务

删除服务使用 dister delservice 命令

这个时候我们再看以下服务列表

database服务已经没有了,只剩下sites服务了。

五、服务负载均衡

由于目前只有1个服务sites,因此我们可以通过访问 http://127.0.0.1:4168/balance?name=sites 来访问到其中的某一个节点信息,也可以通过 dister balance 命令来获取节点信息:

连续访问几次之后,你会发现获取到的节点信息结果会根据priority设置的优先级不停变化

 

上一节:dister的安装及使用                  下一节:dister的性能测试

 

 

 

 

 

 

Leave a Reply

Your email address will not be published.