zookeeper在windows下的伪集群模式
来源:互联网 发布:幽灵行动荒野画面优化 编辑:程序博客网 时间:2024/05/10 05:48
1.下载(本次测试环境是3.4.6的版本)
http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.6/2.下载zookeeper-3.4.6.tar.gz后,解压即可
3.在 \zookeeper-3.4.6\conf\ 新建三个配置文件
zoo1.cfg:
tickTime=2000initLimit=10syncLimit=5dataDir=E:\\tmp\\zookeeper\\data\\1dataLogDir=E:\\tmp\\zookeeper\\log\\1clientPort=2181server.1=127.0.0.1:2887:3887server.2=127.0.0.1:2888:3888server.3=127.0.0.1:2889:3889zoo2.cfg:
tickTime=2000initLimit=10syncLimit=5dataDir=E:\\tmp\\zookeeper\\data\\2dataLogDir=E:\\tmp\\zookeeper\\log\\2clientPort=2182server.1=127.0.0.1:2887:3887server.2=127.0.0.1:2888:3888server.3=127.0.0.1:2889:3889
zoo3.cfg:
tickTime=2000initLimit=10syncLimit=5dataDir=E:\\tmp\\zookeeper\\data\\3dataLogDir=E:\\tmp\\zookeeper\\log\\3clientPort=2183server.1=127.0.0.1:2887:3887server.2=127.0.0.1:2888:3888server.3=127.0.0.1:2889:3889
4.在 \zookeeper-3.4.6\bin\ 新建三个server
拷贝zkServer.cmd三份,分别命名zkServer-1.cmd,zkServer-2.cmd,zkServer-3.cmd;
打开这三个.cmd,在set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain后面
添加一行,对应相应的配置文件:
set ZOOCFG=..\conf\zoo1.cfg(zkServer-1.cmd添加)
set ZOOCFG=..\conf\zoo2.cfg(zkServer-2.cmd添加)
set ZOOCFG=..\conf\zoo3.cfg(zkServer-3.cmd添加)
5.添加data和log文件夹
E:\tmp\zookeeper\ 下新建log文件夹,在log下创建1 2 3文件夹
6.创建myid
分别在data\1,data\2,data\3下创建文件 myid(去掉后缀名),并分别添加内容 1、2、3
7.启动Server
控制台进入bin目录,分别输入:zkServer-x.cmd启动即可。
启动三个server文件后,用jps查看,会看到三个启动的java主进程。
也可输入:netstat -ano|findstr "2181" 查看端口是否监听
2015-10-09 11:20:08,162 [myid:1] - WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:218 1:QuorumCnxManager@382] - Cannot open channel to 3 at election address localhost /192.168.132.16:3889 java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketI mpl.java:85)
这是因为,zookeeper集群采用的是选举算法,当集群中的其他节点还没有启动的时候,选举算法就会出现异常,因为至少三台能选举出一个leader,2n+1台机器,可以选举n个leader,当全部启动起来后,就不会报异常,所以上述的报错是可以忽略的,尽管启动这三个节点即可。
这样在一台机器上搭建了zookeeper伪集群,并且启动成功。
8.C#客户端代码
代码下载参考这位博主的好文:http://www.cnblogs.com/shanyou/p/3221990.html
class Watcher : IWatcher { public void Process(WatchedEvent @event) { //if (@event.Type == EventType.NodeDataChanged) //{ Console.WriteLine("已经触发了" + @event.Type + "事件!"); //} } }
static void Main(string[] args) { //创建一个Zookeeper实例,第一个参数为目标服务器地址和端口,第二个参数为Session超时时间,第三个为节点变化时的回调方法 using (ZooKeeper zk = new ZooKeeper("127.0.0.1:2181", new TimeSpan(0, 0, 0, 50000), new Watcher())) { //var stat = zk.Exists("/root",true); ////创建一个节点root,数据是mydata,不进行ACL权限控制,节点为永久性的(即客户端shutdown了也不会消失) //zk.Create("/root", "mydata".GetBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent); //在root下面创建一个childone znode,数据为childone,不进行ACL权限控制,节点为永久性的 //zk.Create("/root/childone", "childone".GetBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent); //取得/root节点下的子节点名称,返回List<String> List<string> liststr = zk.GetChildren("/root", true); //取得/root/childone节点下的数据,返回byte[] //zk.GetData("/root/childone", true, null); //修改节点/root/childone下的数据,第三个参数为版本,如果是-1,那会无视被修改的数据版本,直接改掉 //zk.SetData("/root/childone", "childonemodify".GetBytes(), -1); //删除/root/childone这个节点,第二个参数为版本,-1的话直接删除,无视版本 //zk.Delete("/root/childone", -1); } Console.Read(); }
问题:还不清楚zookeeper客户端代码的具体用法,还需要摸索。
9.linux下环境搭建
参考这位博主的好文:http://blog.csdn.net/eric_sunah/article/details/43969603
其中,下载连接修改一下即可:
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
10.遗留问题
还没有用zookeeper搭建生产环境,计划是用thrift做服务,zookeeper服务治理,可用nginx做负载均衡,还没去做这件事。后续补上
0 0
- zookeeper在windows下的伪集群模式
- zookeeper在windows下的伪集群安装和启动
- Zookeeper 集群伪分布 在 Windows下的安装
- Windows下zookeeper的伪集群搭建
- 【推荐】zookeeper在windows下的伪集群安装和启动
- zookeeper windows伪集群模式配置
- Windows环境下zookeeper伪集群部
- Windows下zookeeper伪集群环境搭建
- windows下zookeeper伪集群搭建
- windows下zookeeper伪集群搭建
- windows下zookeeper伪集群搭建
- windows环境下搭建zookeeper伪集群
- (2) windows下zookeeper伪集群搭建
- windows下zookeeper伪集群安装
- Zookeeper在windows搭建伪集群
- 伪集群模式zookeeper
- zookeeper 伪集群模式
- zookeeper (伪)集群模式的安装
- 总结一下typedef和#define的区别
- 计算机系统概论——笔记(2)
- 静态链接库和动态链接库详解
- 80x86寄存器
- 【《代码整洁之道》精读与演绎】之四 优秀代码的格式准则
- zookeeper在windows下的伪集群模式
- dip和px互换
- linux系统安装svn服务端教程
- Intel X86 CPU系列的寄存器
- webpack less-loader出现异常
- 学习日记20160826
- SVN服务器权限控制详细说明
- QT 自定义标题栏
- Python 实现 优惠码/激活码/邀请码 生成器