克隆虚拟机:
一定记住是完整克隆。若是创建链接克隆,会连母机都连不上网(完全删除克隆机即可)。
克隆的虚拟机完全删除
虚拟机克隆后,克隆的机器是无法上网的,因为和母机的IP地址和mac地址一样:
1.修改每个克隆机的mac地址
2.修改每个克隆机的IP(直接在母机的基础上依次加1即可)。
伪分布式搭建:
1.上传zk安装包 2.解压 3.配置(先在一台节点上配置) 3.1添加一个zoo.cfg配置文件 $ZOOKEEPER/conf mv zoo_sample.cfg zoo.cfg 3.2修改配置文件(zoo.cfg) //里面的tickTime 是心跳数,其他都使用默认配置 dataDir=/itcast/zookeeper-3.4.5/data //原来是tmp目录下,只要重启就没了,这里修改一下(这个目录要自己建立) //在最后添加其他主机信息 server.1=itcast05:2888:3888 server.2=itcast06:2888:3888 server.3=itcast07:2888:3888 3.3在(dataDir=/itcast/zookeeper-3.4.5/data)创建一个myid文件,里面内容是server.N中的N(server.2里面内容为2) 指令:echo "1" > myid //将1输入到myid中。 3.4将配置好的zk拷贝到其他节点 scp -r /itcast/zookeeper-3.4.5/ itcast06:/itcast/ scp -r /itcast/zookeeper-3.4.5/ itcast07:/itcast/ 3.5注意:在其他节点上一定要修改myid的内容 在itcast06应该讲myid的内容改为2 (echo "2" > myid) 在itcast07应该讲myid的内容改为3 (echo "3" > myid) 4.启动集群 分别启动zk,去每台机器的bin目录下: ./zkServer.sh start
简单的应用场景举例 - 分布式应用程序的同步:
分布式应用程序的配置文件都存在一台机器上,且一次只能有一个人访问修改。有一个问题是:万一存储配置信息的机器坏了怎么办?分布式(下图,这个配置文件会因为某台机器的修改而变化,怎么同步?zookeeper:存配置和少量状态信息,这样在一个部分应用程序上修改,其它应用程序就能马上得到修改的配置文件。具体的如支付宝的支付配置文件,这个配置文件在很多的应用中都有,如果我把这个配置文件放到zookeeper上,当我需要对这个配置文件进行一些升级时,只需要在一个应用上修改就行,其他使用该支付配置文件的应用就跟着修改了,不用人为的去升级,且速度极快,不怎么影响用户。通常机器数为奇数。):
就和hadoop集群一样,zookeeper集群也有领导者和被领导者:
这里不得不说zookeeper的稳定性,当一个leader被杀死后,学习者又可以重新选举一个新的leader,且是自动的,前提是不能少于配置时节点数量的一半(如 配置3台,必须存活两台才能正常运行)。
Zookeeper的节点特性:
Znode有两种类型,短暂的(ephemeral)和持久的(persistent)
Znode的类型在创建时确定并且之后不能再修改
短暂znode的客户端会话结束时,zookeeper会将该短暂znode删除,短暂znode不可以有子节点
持久znode不依赖于客户端会话,只有当客户端明确要删除该持久znode时才会被删除
Znode有四种形式的目录节点,PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL 。