在集群和单机两种模式下,我们基本完成了分别针对生产环境和开发环境ZooKeeper服务的搭建,已经可以满足绝大多数场景了。
现在我们再来看看另外一种情况,如果你手上有且只有一台比较好的机器(大体是——CPU核数大于10,内存大于等于8GB),那么这个时候,如果作为单机模式进行部署,资源明显优点浪费;而如果像想要按照集群模式来部署的话,那么就需要借助硬件上的虚拟化技术,把一台物理机器转换成几台虚拟机,不过这样操作成本太高。所幸,和其他分布式系统(如Hadoop)一样,ZooKeeper也允许你在一台机器上完成一个伪集群的搭建。
所谓的伪集群,用一句话说就是,集群所有的机器都在一台机器上,但是还是以集群的特性来对外提供服务。这种模式和集群模式非常类似,只是把zoo.cfg做了如下修改:
在zoo.cfg配置中,每一行的机器列表配置都是同一个IP地址:IP1,但是后面的端口配置都已经不一样了。这其实不难理解,在同一台机器上启动多个进程,就必须绑定不同的端口。tickTime=2000
dataDir=/var/lib/zookeeper/
clientPort=2181
initLimit=5
syncLimit=2
server.1=IP1:2888:3888
server.2=IP1:2889:3889
server.3=IP1:2890:3890