구축하는 하나의 클러스터 환경을 사육사

이러한 분산 잠금, 통합 네이밍 서비스, 유통 센터 등의 분산 시스템에 의해 직면 한 많은 문제를 사육사 선거의 클러스터 리더를 관리

환경 준비

통신 시스템의 노드간에 분산, 사육사이 프로세스는 데이터가 고유의 안전하고 신뢰할 수 있는지 확인하기

공식 웹 사이트를 다운로드

  • 구성 파일을 수정

/conf/zoo_sample.cfg는 zoo.cfg 수정

프로필 읽기

# zookeeper  服务器和客户端之间维持心跳的时间间隔,即每个ticktime发送一个心跳包,单位是毫秒
# zookeeper 中session过期的时间是 ticktime*2
tickTime=2000
# Leader 允许Follower在initLimit时间内完成从Leader身上同步全部数据的工作, 随机集群的不断扩大,Follower从Leader上同步数据的时间就会变成,此时有必要,默认是0
initLimit=10
# Leader会和集群中的其他机器进行通信,在syncLimit时间内,都没有从Follower上获取返回数据,就认为这个节点挂了
syncLimit=5
# 存储快照文件的目录,默认情况下事务日志也在这里了,下面单独配置,因为因为日志的写性能影响zookeeper的性能
dataDir=E:\\zookeeper\\zookeeper-3.4.14\\data

dataLogDir=E:\\zookeeper\\zookeeper-3.4.14\\log
# the port at which the clients will connect
# 客户端连接的端口
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
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
  • 출발

스크립트는 / bin / 디렉토리에서 시작
리눅스 부팅 ./zkCli.sh -server localhost:2181
****는
클라이언트 콘솔에 성공적으로 시작

 # 默认的节点叫zookeeper
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
# 创建一个节点
[zk: localhost:2181(CONNECTED) 11] create /changwu1 "num1" 
Created /changwu1 
 # 重新查看
[zk: localhost:2181(CONNECTED) 14] ls /
[zookeeper, changwu1]
 # 获取节点的内容
[zk: localhost:2181(CONNECTED) 17] get /changwu1
num1
cZxid = 0x2
ctime = Mon Sep 16 15:56:27 CST 2019
mZxid = 0x2
mtime = Mon Sep 16 15:56:27 CST 2019
pZxid = 0x2
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

# 退出
quit

# 删除一个节点
[zk: localhost:2181(CONNECTED) 32] delete /changwu1
[zk: localhost:2181(CONNECTED) 33] ls /
[zookeeper]

# 递归删除节点
rmr /path1/path2
这个path1 和 path2 其实是两个节点
# 修改节点数据
set /path "value"

# 节点的状态
[zk: localhost:2181(CONNECTED) 50] stat /z1
cZxid = 0x5
ctime = Mon Sep 16 16:04:35 CST 2019
mZxid = 0x7
mtime = Mon Sep 16 16:06:31 CST 2019
pZxid = 0x6
cversion = 1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 1

# 创建永久有序节点
create -s /path

양식 노드를 만들고, 우리 MKDIR는 유사한 디렉토리 구조를 만들


클러스터 설정

  • zoo.cfg 세를 복사하고, 구성 파일을 수정

리더와 플로워 사이에 데이터를 동기화하는 제 2,887 포트는 제 포트 새로운 리더 선출 사용

  • 여섯 tmp 디렉토리에 디렉토리를 작성 zoo_data_1-3 zoo_logs_1-3 각각이다
  • 파일 대한 myid 만들기
[root@139 tmp]# echo 1 > zoo_data_1/myid
[root@139 tmp]# echo 2 > zoo_data_2/myid
[root@139 tmp]# echo 3 > zoo_data_3/myid

클러스터 서버를 시작합니다

[root@139 bin]# ./zkServer.sh start ../conf/zoo1.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Starting zookeeper ... STARTED
[root@139 bin]# ./zkServer.sh start ../conf/zoo2.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Starting zookeeper ... STARTED
[root@139 bin]# ./zkServer.sh start ../conf/zoo3.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo3.cfg
Starting zookeeper ... STARTED

각각, 각 노드의 상태를 확인,

[root@139 bin]# ./zkServer.sh status ../conf/zoo3.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo3.cfg
Mode: follower

[root@139 bin]# ./zkServer.sh status ../conf/zoo1.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Mode: leader

[root@139 bin]# ./zkServer.sh status ../conf/zoo2.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Mode: follower
    

연결 클라이언트

./zkCli -server localhost:服务端的端口号

zkCli.sh -server localhost:2181
zkCli.sh -server localhost:2182
zkCli.sh -server localhost:2183

추가 관찰자

  1. 그리고, 처음 세처럼, 센티넬은 tmp 디렉토리에 사용되는 디렉토리를 생성하는 것은 zoo_data_4 zoo_logs_4 각각이다
  2. 그것은 4 쓰기 zoo_data_4 디렉토리에 파일을 생성 MYID
  3. 처음 세 개의 노드 구성 파일 변경
tickTime=2000
initLimit=10
syncLimit=5

dataDir=/tmp/zoo_data_1
dataLogDir=/tmp/zoo_logs_1

clientPort=2181

# 第一个端用于Leader和Leanner之间同步, 第二个端口,用户选举过程中的投票通信
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
server.4=localhost:2890:3890:observer
  1. 시청자 프로파일 추가
tickTime=2000
initLimit=10
syncLimit=5

dataDir=/tmp/zoo_data_4
dataLogDir=/tmp/zoo_logs_4

# 观察者的配置
peerType=observer

clientPort=2184

# 第一个端用于Leader和Leanner之间同步, 第二个端口,用户选举过程中的投票通信
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
server.4=localhost:2890:3890:observer

클러스터 역할

리더

설문 조사와 해상도, 최종 상태가 업데이트되었습니다

수행원

클라이언트 요청 처리를받는 것은 리더가 후원하는 해상도에 참여

관찰자

바이트의 리더에 요청을 전달, 클라이언트 연결을 수락하지만,이 투표에 참여하지 않고, 오직 국가의 리더를 동기화, 그것은 사육사를 확장하는 방법

왜이 옵저버를 추가 않으며 사육사 작업은 밀접한 관련이있다 :

복수의 사육사 서버 클러스터는 요청을 처리하기 위해, 각 서버는 클라이언트의 복수 이어도되고,이 판독 요청, 요청 상태 사육사을 변경하는 라이트 리퀘스트 인 경우에는 현재의 부 서버에 직접, 그러나, 현재에 대응하는 로컬 데이터베이스 인 경우 그것은 귀찮은되고, 폴링 사육사의 리더 노드 이 메커니즘은 ZAB 계약입니다 이 작업을 넣어 것, 노드의 절반 이상의 동의, 메모리에로드하고, 클라이언트의 응답

이 과정에서 사육사들이 해상도에 투표를 시작해야하는 반면에, 연결 클라이언트를 받아들이는 한편으로이 개 기능을 제공,이 두 기능은 확장 사육사가 제한 이상의 클라이언트 연결을 지원하고자, 당신은 서버를 추가해야 하지만 점점 더 많은 서버마다 설문 조사는 무거운되고, 그래서 관찰자가 들어왔다

투표 단계에서 다른 노드, 관찰자는 클라이언트 연결, 연결 전달 지도자를받는 동안 관찰자는 투표에 참여하지 않을뿐만 아니라, 투표 과정의 결과를 받게됩니다 따라서 크게 시스템의 처리량을 향상

날씬하고

지도자와 함께 일괄 동기화 상태, 관찰자와 공동으로 날씬하고 추종자 노드

사육사의 CPA

CP : 클러스터 노드는 리더 플로워 나머지, 리더를 끊었 때 선거를 다시해야, 시스템의 선거 과정을 사용할 수 없습니다

AP : 리더 추종자 관찰자는 세 그룹, AP를 달성하기의 조성에, 리더, 같은 선거, 그러나 옵저버는 클라이언트의 요청을 수락 계속할 수 있지만 데이터 옵저버가 최신 데이터하지 않을 수 있습니다 때 끊었

추천

출처www.cnblogs.com/ZhuChangwu/p/11529117.html