Dubbo注册中心集群Zookeeper-3.4.6

Dubbo建议使用Zookeeper作为服务的注册中心。

Zookeeper集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的。正是基于这个特性,要将ZK集群的节点数量要为奇数(2n+1:如3、5、7个节点)较为合适。

ZooKeeper与Dubbo服务集群架构图

服务器1:192.168.1.81  端口:2181、2881、3881

服务器2:192.168.1.82  端口:2182、2882、3882

服务器3:192.168.1.83  端口:2183、2883、3883

1、  修改操作系统的/etc/hosts文件,添加IP与主机名映射:

# zookeeper cluster servers

192.168.1.81   edu-zk-01

192.168.1.82   edu-zk-02

192.168.1.83   edu-zk-03

2、  下载或上传zookeeper-3.4.6.tar.gz到/home/wusc/zookeeper目录:

$ cd /home/wusc/zookeeper

$ wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

3、  解压zookeeper安装包,并按节点号对zookeeper目录重命名:

$ tar -zxvf zookeeper-3.4.6.tar.gz

服务器1:

$ mv zookeeper-3.4.6 node-01

服务器2:

$ mv zookeeper-3.4.6 node-02

服务器3:

$ mv zookeeper-3.4.6 node-03

4、  在各zookeeper节点目录下创建以下目录:

$ cd /home/wusc/zookeeper/node-0X  (X代表节点号1、2、3,以下同解)

$ mkdir data

$ mkdir logs

5、  将zookeeper/node-0X/conf目录下的zoo_sample.cfg文件拷贝一份,命名为zoo.cfg:

$ cp zoo_sample.cfg zoo.cfg

6、  修改zoo.cfg配置文件:

zookeeper/node-01的配置(/home/wusc/zookeeper/node-01/conf/zoo.cfg)如下:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/wusc/zookeeper/node-01/data

dataLogDir=/home/wusc/zookeeper/node-01/logs

clientPort=2181

server.1=edu-zk-01:2881:3881

server.2=edu-zk-02:2882:3882

server.3=edu-zk-03:2883:3883

zookeeper/node-02的配置(/home/wusc/zookeeper/node-02/conf/zoo.cfg)如下:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/wusc/zookeeper/node-02/data

dataLogDir=/home/wusc/zookeeper/node-02/logs

clientPort=2182

server.1=edu-zk-01:2881:3881

server.2=edu-zk-02:2882:3882

server.3=edu-zk-03:2883:3883

zookeeper/node-03的配置(/home/wusc/zookeeper/node-03/conf/zoo.cfg)如下:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/wusc/zookeeper/node-03/data

dataLogDir=/home/wusc/zookeeper/node-03/logs

clientPort=2183

server.1=edu-zk-01:2881:3881

server.2=edu-zk-02:2882:3882

server.3=edu-zk-03:2883:3883

参数说明:

tickTime=2000

tickTime这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳。

initLimit=10

initLimit这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,而是Zookeeper服务器集群中连接到Leader的Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过10个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。

syncLimit=5

syncLimit这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。

dataDir=/home/wusc/zookeeper/node-01/data

dataDir顾名思义就是Zookeeper保存数据的目录,默认情况下Zookeeper将写数据的日志文件也保存在这个目录里。

clientPort=2181

clientPort这个端口就是客户端(应用程序)连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求。

server.A=B:C:D

server.1=edu-zk-01:2881:3881

server.2=edu-zk-02:2882:3882

server.3=edu-zk-03:2883:3883

A是一个数字,表示这个是第几号服务器;

B是这个服务器的IP地址(或者是与IP地址做了映射的主机名);

C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的Leader服务器交换信息的端口;

D是在leader挂掉时专门用来进行选举leader所用的端口。

注意:如果是伪集群的配置方式,不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

7、  在dataDir=/home/wusc/zookeeper/node-0X/data下创建myid文件

编辑myid文件,并在对应的IP的机器上输入对应的编号。如在node-01上,myid文件内容就是1,node-02上就是2,node-03上就是3:

$ vi /home/wusc/zookeeper/node-01/data/myid  ## 值为1

$ vi /home/wusc/zookeeper/node-02/data/myid  ## 值为2

$ vi /home/wusc/zookeeper/node-03/data/myid  ## 值为3

8、  在防火墙中打开要用到的端口218X、288X、388X

切换到root用户权限,执行以下命令:

# chkconfig iptables on

# service iptables start

编辑/etc/sysconfig/iptables

# vi /etc/sysconfig/iptables

如服务器01增加以下3行:

## zookeeper

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2881 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3881 -j ACCEPT

重启防火墙:

# service iptables restart

查看防火墙端口状态:

# service iptables status

9、  启动并测试zookeeper(要用wusc用户启动,不要用root):

(1)  使用wusc用户到/home/wusc/zookeeper/node-0X/bin目录中执行:

$ /home/wusc/zookeeper/node-01/bin/zkServer.sh start

$ /home/wusc/zookeeper/node-02/bin/zkServer.sh start

$ /home/wusc/zookeeper/node-03/bin/zkServer.sh start

(2)  输入jps命令查看进程:

$ jps

1456 QuorumPeerMain

其中,QuorumPeerMain是zookeeper进程,说明启动正常

(3)  查看状态:

$ /home/wusc/zookeeper/node-01/bin/zkServer.sh status

(4)  查看zookeeper服务输出信息:

由于服务信息输出文件在/home/wusc/zookeeper/node-0X/bin/zookeeper.out

$ tail -500f zookeeper.out

10、停止zookeeper进程:

$ zkServer.sh stop

11、配置zookeeper开机使用wusc用户启动:

编辑node-01、node-02、node-03中的/etc/rc.local文件,分别加入:

su - wusc -c '/home/wusc/zookeeper/node-01/bin/zkServer.sh start'

su - wusc -c '/home/wusc/zookeeper/node-02/bin/zkServer.sh start'

su - wusc -c '/home/wusc/zookeeper/node-03/bin/zkServer.sh start'

二、安装Dubbo管控台(基础篇有讲,此处重点讲管控台如何链接集群):

Dubbo管控台可以对注册到zookeeper注册中心的服务或服务消费者进行管理,但管控台是否正常对Dubbo服务没有影响,管控台也不需要高可用,因此可以单节点部署。

IP: 192.168.1.81

部署容器:Tomcat7

端口:8080

1、  下载(或上传)最新版的Tomcat7(apache-tomcat-7.0.57.tar.gz)到/home/wusc/

2、  解压:

$ tar -zxvf apache-tomcat-7.0.57.tar.gz

$ mv apache-tomcat-7.0.57 dubbo-admin-tomcat

3、  移除/home/wusc/dubbo-admin-tomcat/webapps目录下的所有文件:

$ rm -rf *

4、  上传Dubbo管理控制台程序dubbo-admin-2.5.3.war

到/home/wusc/dubbo-admin-tomcat/webapps

5、  解压并把目录命名为ROOT:

$ unzip dubbo-admin-2.5.3.war -d ROOT

把dubbo-admin-2.5.3.war移到/home/wusc/tools目录备份

$ mv dubbo-admin-2.5.3.war /home/wusc/tools

6、  配置dubbo.properties:

$ vi ROOT/WEB-INF/dubbo.properties

dubbo.registry.address= zookeeper://192.168.1.81:2181?backup=192.168.1.82:2182,192.168.1.83:2183

dubbo.admin.root.password=wusc.123

dubbo.admin.guest.password=wusc.123

(以上密码在正式上生产前要修改)

7、  防火墙开启8080端口,用root用户修改/etc/sysconfig/iptables,

# vi /etc/sysconfig/iptables

增加:

## dubbo-admin-tomcat:8080

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

重启防火墙:

# service iptables restart

8、  启动Tomat7

$ /home/wusc/dubbo-admin-tomcat/bin/startup.sh

9、  浏览http://192.168.1.81:8080/

10、配置部署了Dubbo管控台的Tomcat开机启动:

在虚拟主机中编辑/etc/rc.local文件,加入:

su - wusc -c '/home/wusc/dubbo-admin-tomcat/bin/startup.sh'

11、应用链接到注册中心群集的测试。

12、注册中心高可用集群的测试。
本博文出自《基于Dubbo分布式系统架构视频教程》中的课程文档:www.roncoo.com

ZooKeeper集群的安装、配置、高可用测试的更多相关文章

  1. zookeeper集群环境安装配置

    众所周知,Zookeeper有三种不同的运行环境,包括:单机环境.集群环境和集群伪分布式环境 在此介绍的是集群环境的安装配置 一.下载: http://apache.fayea.com/zookeep ...

  2. Dubbo入门到精通学习笔记(十三):ZooKeeper集群的安装、配置、高可用测试、升级、迁移

    文章目录 ZooKeeper集群的安装.配置.高可用测试 ZooKeeper 与 Dubbo 服务集群架构图 1. 修改操作系统的/etc/hosts 文件,添加 IP 与主机名映射: 2. 下载或上 ...

  3. ZooKeeper 集群的安装、配置---Dubbo 注册中心

    ZooKeeper 集群的安装.配置.高可用测试 Dubbo 注册中心集群 Zookeeper-3.4.6 Dubbo 建议使用 Zookeeper 作为服务的注册中心. Zookeeper 集群中只 ...

  4. Zookeeper 集群的安装及高可用性验证已完成!

    安装包 kafka_2.12-0.10.2.0.tgz zookeeper-3.3.5.tar.gz Java 环境 Zookeeper 和 Kafka 的运行都需要 Java 环境,Kafka 默认 ...

  5. Apache shiro集群实现 (六)分布式集群系统下的高可用session解决方案---Session共享

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

  6. Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

  7. zookeeper集群的安装和配置

    Zookeeper的目的是封装好复杂易出错的关键服务,将简单易用的接口和性能高效.功能稳定的系统提供给用户.Zookeeper有两种运行模式,单机模式(Standalone)和集群模式(Distrib ...

  8. Zookeeper集群的安装和使用

    Apache Zookeeper 由 Apache Hadoop 的 Zookeeper 子项目发展而来,现已经成为 Apache 的顶级项目,它是一个开放源码的分布式应用程序协调服务,是Google ...

  9. zookeeper集群的安装

    顾名思义zookeeper就是动物园管理员,他是用来管hadoop(大象).Hive(蜜蜂).pig(小猪)的管理员, Apache Hbase和 Apache Solr 的分布式集群都用到了zook ...

随机推荐

  1. 微信小程序开发之选项卡

    选项卡是web开发中经常使用到的一个模块,在小程序中竟然没有,这里参考别人的文章自己做了一个双选项卡 实现思路: 通过绑定swichNav事件来控制currentTab(当前选项卡)和isShow(是 ...

  2. Java内存分配以及GC

    转自http://www.cnblogs.com/hnrainll/archive/2013/11/06/3410042.html  写的太棒了,简单易懂 Java垃圾回收概况 Java GC(Gar ...

  3. dt dl列表布局

    项目需要中 左边是房屋地址,右边显示几套房屋,如下图显示 ============ 开始想到使用 div标签,里面嵌套几个span,但是不利于对齐显示,一行还可以,多行了不方便 查找使用dl dt布局 ...

  4. [Spark内核] 第30课:Master的注册机制和状态管理解密

    本課主題 Master 接收 Worker, Driver, Application Master 处理 Driver 狀态变换 Master 处理 Executor 狀态变换 [引言部份:你希望读者 ...

  5. 关于new Date()

    1. 将时间戳转换成日期格式 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 1. 下面是获取时间日期的方法,需要什么样的格式自己拼接起来就好了 ...

  6. Java入门篇(一)——如何编写一个简单的Java程序

    最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...

  7. 【转】.NET IL实现对象深拷贝

    对于深拷贝,通常的方法是将对象进行序列化,然后再反序化成为另一个对象.例如在stackoverflow上有这样的解决办法:https://stackoverflow.com/questions/785 ...

  8. Linux下安装opencv模块

    最近微信上流行的给自己的头像加一顶圣诞帽,想用python写一个程序自己实现一下,其中需要用到opencv import cv2 现在记录一下如何在Linux系统(ubutun)下安装该模块: 参考了 ...

  9. Machine Learning - week 1

    Matrix 定义及基本运算 Transposing To "transpose" a matrix, swap the rows and columns. We put a &q ...

  10. 51 NOD 1238 最小公倍数之和 V3

    原题链接 最近被51NOD的数论题各种刷……(NOI快到了我在干什么啊! 然后发现这题在网上找不到题解……那么既然A了就来骗一波访问量吧…… (然而并不怎么会用什么公式编辑器,写得丑也凑合着看吧…… ...