手把手教你实现电商网站开发做静态网站接单
手把手教你实现电商网站开发,做静态网站接单,怎么做360网站排名,购买了网站如何使用Mycat核心教程--ZooKeeper集群搭建 八、 ZooKeeper集群搭建8.1.ZooKeeper简介8.2.数据复制的好处8.3.Zookeeper设计目的8.4.zookeeper集群包括3种角色8.4.1.Leader角色8.4.2.Follower 角色8.4.3.Observer 角色 8.5.zookeeper集群工作流程8.6.zookeeper集群节点数量为奇数#… Mycat核心教程--ZooKeeper集群搭建 八、 ZooKeeper集群搭建8.1.ZooKeeper简介8.2.数据复制的好处8.3.Zookeeper设计目的8.4.zookeeper集群包括3种角色8.4.1.Leader角色8.4.2.Follower 角色8.4.3.Observer 角色 8.5.zookeeper集群工作流程8.6.zookeeper集群节点数量为奇数建议至少3个节点8.7.ZooKeeper 集群搭建8.7.1.下载ZooKeeper安装包并解压8.7.2.进入ZooKeeper解压后的配置目录conf复制配置文件并改名为zoo.cfg8.7.3.修改zookeeper数据文件存放目录8.7.4.修改zoo.cfg 配置文件内容为8.7.5.创建ServerID标识8.7.6.添加到环境变量8.7.7.ZooKeeper启动命令8.7.8.ZooKeeper服务端口为2181查看服务已经启动8.7.9.注意Starting zookeeper … FAILED TO START8.7.10.Address unresolved 8.8.Zookeeper集群查看【host129为leader】8.9.模拟集群故障--【host130为leader】8.10.Zookeeper客户端验证8.11.zkCli客户端支持操作命令 endl 八、 ZooKeeper集群搭建
ZooKeeper官网下载地址https://zookeeper.apache.org/releases.html
apache下载https://downloads.apache.org/ 8.1.ZooKeeper简介
ZooKeeper是一个分布式的开放源码的分布式应用程序协调服务是Google的Chubby一个开源的实现是Hadoop和Hbase的重要组件。
ZooKeeper是一个分布式数据一致性的解决方案分布式应用可以基于它实现发布订阅、负载均衡、命名服务、协调通知、集群管理、master选举、分布式锁和分布式队列的特性。
8.2.数据复制的好处 容错一个节点出错不至于让整个集群无法提供服务 扩展性通过增加服务器节点能提高 ZooKeeper 系统的负载能力把负载分布到多个节点上 高性能客户端可访问本地 ZooKeeper 节点或者访问就近的节点依次提高用户的访问速度
8.3.Zookeeper设计目的
Zookeeper的设计目的是提供高性能简单的数据模型高可用构建集群顺序一致性严格顺序访问的分布式协调服务保证数据一致性。 最终一致性client不论连接到哪个Server展示给它都是同一个视图这是zookeeper最重要的性能。 可靠性具有简单、健壮、良好的性能如果消息被到一台服务器接受那么它将被所有的服务器接受。 实时性Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息或者服务器失效的信息。但由于网络延时等原因Zookeeper不能保证两个客户端能同时得到刚更新的数据如果需要最新数据应该在读数据之前调用sync()接口。 等待无关wait-free慢的或者失效的client不得干预快速的client的请求使得每个client都能有效的等待。 原子性更新只能成功或者失败没有中间状态。 顺序性包括全局有序和偏序两种全局有序是指如果在一台服务器上消息a在消息b前发布则在所有Server上消息a都将在消息b前被发布偏序是指如果一个消息b在消息a后被同一个发送者发布a必将排在b前面。
8.4.zookeeper集群包括3种角色
zookeeper集群包括3种角色leader核心、follower、observer8.4.1.Leader角色
Leader是整个 zookeeper 集群的核心Leader 主要有三个功能
集群异常时从快照和日志中恢复数据维持与 Learner 的心跳接收 Learner 请求并判断 Learner 的请求消息类型根据不同的消息类型进行不同的处理。 Learner 的消息类型主要有PING 消息指Learner 的心跳信息REQUEST 消息Follower 发送的提议信息包括读写请求和同步请求ACK 消息Follower 对提议的回复超过半数的 Follower 通过则 commit 该提议REVALIDATE 消息用来延长 Session 有效时间 8.4.2.Follower 角色
在Zookeeper集群内部Follower 主要有四个功能
向 Leader 发送请求PING 消息、REQUEST 消息、ACK 消息、REVALIDATE 消息接收 Leader 消息并进行处理接收 Client 的请求如果为写请求则转发给 Leader进行投票返回 Client 结果。
Leader 的消息有
PING 消息 心跳消息PROPOSAL 消息Leader 发起的提案要求 Follower 投票COMMIT 消息服务器端最新一次提案的信息UPTODATE 消息表明同步完成REVALIDATE 消息根据 Leader 的 REVALIDATE 结果关闭待 revalidate 的 session 还是允许其接受消息SYNC 消息返回 SYNC 结果到客户端这个消息最初由客户端发起用来强制得到最新的更新。 8.4.3.Observer 角色
Observer 是 zookeeper3.3 开始引入的一个全新的服务器角色观察者角色。观察 zookeeper 集群中的最新状态变化并将这些状态变化同步到 observer 服务器上。Observer 流程和 Follower 的唯一不同的地方就是 Observer 不会参加 Leader 发起的投票也不会被选举为 Leader。
8.5.zookeeper集群工作流程
zookeeper集群只能有一个leader节点由所有follower选举产生只有leader节点才有权利发起修改数据的操作而follower节点即使接收到了客户端发起的修改操作也要将其转交给leader来处理leader接收到修改数据的请求后会向所有follower广播一条消息让他们执行某项操作follower 执行完后便会向 leader 回复执行完毕。当 leader 收到半数以上的 follower 的确认消息便会判定该操作执行完毕然后向所有 follower 广播该操作已经生效。
8.6.zookeeper集群节点数量为奇数建议至少3个节点
如果要搭建一个能够允许N台机器down掉的集群那么就要部署2*N1台服务器构成的 zookeeper 集群
8.7.ZooKeeper 集群搭建
确保关闭防火墙机器名称IP服务器角色环境要求host128192.168.147.128zk节点1CentOS7.9 zk 3.8.3JDK1.8host129192.168.147.129zk节点2CentOS7.9 zk 3.8.3JDK1.8host130192.168.147.130zk节点3CentOS7.9 zk 3.8.3JDK1.8
8.7.1.下载ZooKeeper安装包并解压
apache下载https://downloads.apache.org/
ZooKeeper官网下载地址https://zookeeper.apache.org/releases.html
cd /opt/wget https://downloads.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gztar -xzvf apache-zookeeper-3.8.3-bin.tar.gz -C /usr/local/src8.7.2.进入ZooKeeper解压后的配置目录conf复制配置文件并改名为zoo.cfg
# 更名
cd /usr/local/src
mv apache-zookeeper-3.8.3-bin zookeepercd /usr/local/src/zookeeper/confcp /usr/local/src/zookeeper/conf/zoo_sample.cfg /usr/local/src/zookeeper/conf/zoo.cfg8.7.3.修改zookeeper数据文件存放目录
dataDir/data/zookeeper8.7.4.修改zoo.cfg 配置文件内容为
vi /usr/local/src/zookeeper/conf/zoo.cfg# tickTime这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔为2ms,也就是说每隔tickTime时间就会发送一个心跳。
tickTime2000# initLimit这个配置项是用来配置zookeeper接受客户端
# 这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器
# 初始化连接时最长能忍受多少个心跳时间间隔数。当初始化连接时间超过该值则表示连接失败。
# 当已经超过10个心跳的时间也就是tickTime长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。
# 对于从节点最初连接到主节点时的超时时间单位为tick值的倍数。总的时间长度就是 10*2000。即20ms
initLimit10# syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度
# 如果follower在设置时间内不能与leader通信那么此follower将会被丢弃。
# 对于主节点与从节点进行同步操作时的超时时间单位为tick值的倍数。总的时间长度就是5*2000。即10ms
syncLimit5# dataDir就是zookeeper保存数据库数据快照的位置,默认情况下zookeeper将写数据的日志文件也保存在这个目录里
# 注意不能使用 /tmp 路径会被定期清除。使用专用的存储设备能够大大提高系统的性能
# dataDir/tmp/zookeeper
dataLogDir/opt/zookeeper/logs
# 数据文件存放目录
dataDir/opt/zookeeper/data# clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求
clientPort2181# 客户端最大链接数
maxClientCnxns60# zookeeper在运行过程中会生成快照数据默认不会自动清理会持续占用硬盘空间
# 保存3个快照即3个日志文件
autopurge.snapRetainCount3
# 间隔1个小时执行一次清理
autopurge.purgeInterval1# server.AB:C:D
# 其中A是一个数字,表示这个是第几号服务器
# B是这个服务器的IP地址
# C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口
# D是在leader挂掉时专门用来进行选举leader选举所用的端口
# 服务器运行主机心跳端口选举端口
# zk集群
# 3888后面位置不能有空格否则Address unresolved: 192.168.147.128:3888
server.1192.168.147.128:2888:3888
server.2192.168.147.129:2888:3888
server.3192.168.147.130:2888:3888#创建相关目录三台节点都需要
mkdir -p /opt/zookeeper/{logs,data}# 赋予权限
chmod 777 /opt/zookeeper/{logs,data}8.7.5.创建ServerID标识
# 在三台服务器的主配置文件 zoo.cfg 中指定的 dataDir 目录下 新建myid文件并写入对应的server.num 中的num数字
# 如在192.168.147.128上将server.1中1写入myid
# 如在192.168.147.129上将server.2中2写入myid
# 数据文件存放目录 dataDir/opt/zookeeper/dataecho 1 /opt/zookeeper/data/myidcat /opt/zookeeper/data/myid8.7.6.添加到环境变量
vim /etc/profile# zookeeper
export ZK_HOME/usr/local/src/zookeeper
export PATH$PATH:$ZK_HOME/bin# 输入下面命令让设置的环境变量生效
source /etc/profile8.7.7.ZooKeeper启动命令
zkServer.sh start
zkServer.sh status
zkServer.sh stop
zkServer.sh restart
#以打印日志方式启动
zkServer.sh start-foreground# jps 是 Java Process Status Tool 的简称,它的作用是为了列出所有正在运行中的 Java 虚拟机进程
# 每一个 Java 程序在启动的时候都会为之创建一个Jvm 实例,通过jps可以查看这些进程的相关信息
# jps是Jdk提供的一个工具,它安装在 JAVA_HOME/bin下jps8.7.8.ZooKeeper服务端口为2181查看服务已经启动
ps -aux | grep zookeepernetstat -ant | grep 21818.7.9.注意Starting zookeeper … FAILED TO START
zookeeper版本只要 3.5.5 版本启动时启动错误提示“Starting zookeeper … FAILED TO START”
问题原因下载了错误的版本文件Zookeeper 从3.5.5后开始拆分为两个版本而且他们的结构还很类似。
标准版本Apache ZooKeeper x.y.z 下载的文件名为apache-zookeeper-x.y.z-bin.tar.gz 源码版本Apache ZooKeeper x.y.z Source Release下载的文件名为apache-zookeeper-x.y.z.tar.gz 在安装时下载标准版本安装使用即可正常使用
8.7.10.Address unresolved
# 查看日志
cat /usr/local/src/zookeeper/logs/zookeeper-root-server-host128.out[roothost128 conf]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/src/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... FAILED TO START[roothost128 logs]# cat zookeeper-root-server-host128.out
2024-02-26 21:01:09,066 [myid:] - INFO [main:o.a.z.s.q.QuorumPeerConfig177] - Reading configuration from: /usr/local/src/zookeeper/bin/../conf/zoo.cfg
2024-02-26 21:01:09,075 [myid:] - INFO [main:o.a.z.s.q.QuorumPeerConfig440] - clientPortAddress is 0.0.0.0:2181
2024-02-26 21:01:09,076 [myid:] - INFO [main:o.a.z.s.q.QuorumPeerConfig444] - secureClientPort is not set
2024-02-26 21:01:09,076 [myid:] - INFO [main:o.a.z.s.q.QuorumPeerConfig460] - observerMasterPort is not set
2024-02-26 21:01:09,076 [myid:] - INFO [main:o.a.z.s.q.QuorumPeerConfig477] - metricsProvider.className is org.apache.zookeeper.metrics.impl.DefaultMetricsProvider
2024-02-26 21:01:09,086 [myid:] - ERROR [main:o.a.z.s.q.QuorumPeerMain99] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Address unresolved: 192.168.147.128:3888 at org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer.initializeWithAddressString(QuorumPeer.java:359)at org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer.init(QuorumPeer.java:280)at org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer.init(QuorumPeer.java:275)at org.apache.zookeeper.server.quorum.flexible.QuorumMaj.init(QuorumMaj.java:96)at org.apache.zookeeper.server.quorum.QuorumPeerConfig.createQuorumVerifier(QuorumPeerConfig.java:654)at org.apache.zookeeper.server.quorum.QuorumPeerConfig.createQuorumVerifier(QuorumPeerConfig.java:640)at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseDynamicConfig(QuorumPeerConfig.java:685)at org.apache.zookeeper.server.quorum.QuorumPeerConfig.setupQuorumPeerConfig(QuorumPeerConfig.java:659)at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:487)at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:194)at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:125)at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:91)
Invalid config, exiting abnormally
2024-02-26 21:01:09,086 [myid:] - INFO [main:o.a.z.a.ZKAuditProvider42] - ZooKeeper audit is disabled.
2024-02-26 21:01:09,087 [myid:] - ERROR [main:o.a.z.u.ServiceUtils48] - Exiting JVM with code 28.8.Zookeeper集群查看【host129为leader】
zkServer.sh start
zkServer.sh status
ifconfig ens33机器名称IP服务器角色host128192.168.147.128followerhost129192.168.147.129leaderhost130192.168.147.130follower 8.9.模拟集群故障–【host130为leader】
zkServer.sh stopzkServer.sh status8.10.Zookeeper客户端验证
Zookeeper自带客户端工具 zkCli.sh可以实现连接服务、数据增删改查等功能
zkCli.sh -server 192.168.147.128:2181zkCli.sh -server 192.168.147.130:21818.11.zkCli客户端支持操作命令
[zk: 192.168.147.128:2181(CONNECTED) 0] help
ZooKeeper -server host:port -client-configuration properties-file cmd argsaddWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVEaddauth scheme authclose config [-c] [-w] [-s]connect host:portcreate [-s] [-e] [-c] [-t ttl] path [data] [acl]delete [-v version] pathdeleteall path [-b batch size]delquota [-n|-b|-N|-B] pathget [-s] [-w] pathgetAcl [-s] pathgetAllChildrenNumber pathgetEphemerals pathhistory listquota pathls [-s] [-w] [-R] pathprintwatches on|offquit reconfig [-s] [-v version] [[-file path] | [-members serverIDhost:port1:port2;port3[,...]*]] | [-add serverIdhost:port1:port2;port3[,...]]* [-remove serverId[,...]*]redo cmdnoremovewatches path [-c|-d|-a] [-l]set [-s] [-v version] path datasetAcl [-s] [-v version] [-R] path aclsetquota -n|-b|-N|-B val pathstat [-w] pathsync pathversion whoami
Command not found: Command not found helpendl
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90247.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!