• zookeeper集群安装


    zookeeper能做数据的发布/订阅(配置中心:disconf), 负载均衡(dubbo利用了zookeeper实现负载均衡), 命名服务, master选举(kafka  hadoop  hbase), 分布式队列,  分布式锁。

    一: 单机版搭建

    1. 准备工作,必须安装好JDK。

    2. 建立文件夹,mkdir /usr/local/wulei

    3. 下载好安装包, 上传到linux服务器里面。

    4. 解压安装包 tar -zxvf  zookeeper-3.4.6.tar.gz

    5. 进入zk目录,查看目录结构。cd /usr/local/wulei/zookeeper-3.4.6

    6. 创建两个文件夹,用来存zk数据和日志。mkdir mydata    mkdir mydata-log

    7. zk启动会默认找zoo.cfg文件,所以 cd conf 修改文件名  mv zoo_sample.cfg zoo.cfg

    8. 修改文件参数

    # 客户端与服务器或者服务器与服务器之间心跳检测时间
    tickTime=2000
    # 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最大时长
    # 我们这里是10 * 2
    initLimit=10
    # 集群中的follower服务器(F)与leader服务器(L)之间通信最大有效时长为5 * 2
    syncLimit=5
    
    # zk存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等
    dataDir=/usr/local/wulei/zookeeper-3.4.6/mydata
    # zk保存日志的目录
    dataLogDir=/usr/local/wulei/zookeeper-3.4.6/mydata-log
    
    # 客户端默认连接端口
    clientPort=2181
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60
    #
    # Be sure to read the maintenance section of the 
    # administrator guide before turning on autopurge.
    #
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

    9.  cd ../bin 执行 ./zkServer.sh start 启动zk服务器。

    • 1. 启动ZK服务:         ./zkServer.sh start
    • 2. 查看ZK服务状态:   ./zkServer.sh status
    • 3. 停止ZK服务:         ./zkServer.sh stop
    • 4. 重启ZK服务:         ./zkServer.sh restart

    二: 集群搭建

      真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动十几个虚拟机内存会吃不消,所以我这里是搭建伪集群,也就是把所有的服务都搭建在一台虚拟机上。即:伪集群靠端口区分,ip是同一个;而集群是靠ip区分,端口是同一个(端口不相同也可以,看个人配置)。

      zookeeper集群有三个角色: leader   follower   observer; leader和follower的总个数必须为基数。

      * leader: 一个集群有且只有leader节点,客户端的写操作会落到该节点上。

      * follower:客户端的读操作,leader会根据算法落实到某个follower节点上。

      * observer:只提供服务,不参与投票。提高了zookeeper的扩展性(如果大量客户端访问我们zookeeper集群,需要增加zookeeper集群机器数量。从而增加zookeeper集群的性能。 导致zookeeper写性能下降,zookeeper的数据变更需要半数以上服务器投票通过。造成网络消耗增加投票成本)

    1. 建立文件夹,mkdir /usr/local/wulei/zookeeper,将刚才的Zookeeper复制到以下三个目录(复制文件: cp 文件  目标路径     复制文件夹:cp -r 文件夹 目标路径)

        cp -r zookeeper-3.4.6 /usr/local/wulei/zookeeper/zookeeper1

        cp -r zookeeper-3.4.6 /usr/local/wulei/zookeeper/zookeeper2

        cp -r zookeeper-3.4.6 /usr/local/wulei/zookeeper/zookeeper3

    2. 给每个服务器设置id:    id的取值范围: 1~255 id来标识该机器在集群中的机器序号。在刚刚 dataDir指定的文件夹下创建myid文件 touch myid,内容就是id(例如1 、 2、 3)。我们可以用echo命令快速创建。

        echo 1 > /usr/local/wulei/zookeeper/zookeeper1/mydata/myid

        echo 2 > /usr/local/wulei/zookeeper/zookeeper2/mydata/myid

        echo 3 > /usr/local/wulei/zookeeper/zookeeper3/mydata/myid

    3. 到这一步,我们就应该进入改conf/zoo.cfg的数据目录文件和端口了。(真正的集群它们ip不一样,可以不改端口)。vim /usr/local/wulei/zookeeper/zookeeper1/conf/zoo.cfg

    # 三个zk的配置都要改,目录换成各自路径, 端口改成2181 2182 2183
    
    # zk数据目录
    dataDir=/usr/local/wulei/zookeeper/zookeeper1/mydata
    # zk日志目录
    dataLogDir=/usr/local/wulei/zookeeper/zookeeper1/mydata-log
    # 客户端默认连接端口
    clientPort=2181
    
    
    # 在文件末尾追加这段配置,三个文件这里的配置不用变。
    # 格式: server.myid=ip:服务器端口(端口随便写,不与当前机器的端口冲突就行):投票选举端口(端口随便写,不与当前机器的端口冲突就行) 
    server.1=192.168.25.100:2881:3881 
    server.
    2=192.168.25.100:2882:3882
    server.
    3=192.168.25.100:2883:3883

    # zk默认只有leader和follower角色,我们可以指定observer节点
    # 首先在该服务器的zoo.cfg文件里面设置
    peerType=observer
    # server.1=192.168.25.100:2881:3881 
    # server.2=192.168.25.100:2882:3882
    # server.3=192.168.25.100:2883:3883
    #
    server.3=192.168.25.100:2884:3884:observer

    经过上面几步集群就搭建完成了,这里我们来测试一下 ~

    【1】: 启动server1
    [root@server1 ~]# cd /usr/local/wulei/zookeeper/zookeeper1/bin
    [root@server1 bin]# ./zkServer.sh start
    JMX enabled by default
    Using config: /usr/local/wulei/zookeeper/zookeeper1/bin/../conf/zoo.cfg
    Starting zookeeper ... 
    STARTED
    [root@server1 bin]# 
    
    2】:由于集群要过半数才能工作,所以此时它的状态还是不可用
    [root@server1 bin]# ./zkServer.sh status
    JMX enabled by default
    Using config: /usr/local/wulei/zookeeper/zookeeper1/bin/../conf/zoo.cfg
    Error contacting service. It is probably not running.
    
    3】:启动server2
    [root@server1 bin]# cd /usr/local/wulei/zookeeper/zookeeper2/bin
    [root@server1 bin]# ./zkServer.sh start
    JMX enabled by default
    Using config: /usr/local/wulei/zookeeper/zookeeper2/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    
    4】:过半数了可以工作了,我们可以看到它是leader
    [root@server1 bin]# ./zkServer.sh status
    JMX enabled by default
    Using config: /usr/local/wulei/zookeeper/zookeeper2/bin/../conf/zoo.cfg
    Mode: leader
    
    5】:重看server1状态,现在成了follower
    [root@server1 bin]# cd /usr/local/wulei/zookeeper/zookeeper1/bin
    [root@server1 bin]# ./zkServer.sh status
    JMX enabled by default
    Using config: /usr/local/wulei/zookeeper/zookeeper1/bin/../conf/zoo.cfg
    Mode: follower
    
    6】:经过上面几步,集群已经能工作了。此时启动server3, 它也是一个follower
    [root@server1 bin]# cd /usr/local/wulei/zookeeper/zookeeper3/bin
    [root@server1 bin]# ./zkServer.sh start
    JMX enabled by default
    Using config: /usr/local/wulei/zookeeper/zookeeper3/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    [root@server1 bin]# ./zkServer.sh status
    JMX enabled by default
    Using config: /usr/local/wulei/zookeeper/zookeeper3/bin/../conf/zoo.cfg
    Mode: follower
    [root@server1 bin]# 
  • 相关阅读:
    重读APUE(7)-link/unlink与mkdir/rmdir
    重读APUE(6)-umask
    社交系统中用户好友关系数据库设计
    修改Web项目的名称后,在TomCat中部署项目,项目的名称还是与原来相同的解决方案
    域名解析TTL是什么意思 TTL值设置为多少合适?
    mysql权限控制—新建用户允许其远程连接
    毕业设计技术方向(转载)
    统一资源定位符URL的组成
    开发中model,entity和pojo的区别
    要不要签三方协议
  • 原文地址:https://www.cnblogs.com/wlwl/p/9507191.html
Copyright © 2020-2023  润新知