zookeeper
zookeeper的基本原理和概念:
分布式系统:是硬件或软件组件分布在网络中的不同计算机之上,彼此间仅通过消息传递进行通信和协作的的系统。
特征: 分布性;对等性;并发性;缺乏全局时钟,故障必然会发生。
典型问题:
通信异常;网络分区;三态(成功,失败,超时);节点故障
zookeeper的安装和配置:
单机安装:
1 .http://archive.apache.org/dist/zookeeper/ (在此下载zookeeper的tar包)
2 . 将下载下来的包上传到虚拟机上并解压缩。(解压到的目录为自定义的需要自己新建)
tar -xvf zookeeper-3.4.5.tar.gz -C /data/myapp/
3 . cd /data/myapp/zookeeper-3.4.5/ 进入解压后的目录里去创建两个文件夹:
mkdir data (用来存放数据信息)
mkdir logs (用来存放数据信息)
4 .进入zookeeper的配置文件里,新建配置文件,并添加的内容:
cd /data/myapp/zookeeper-3.4.5/conf/
vim zoo.cfg
tickTime=2000 (检查时间)
dataDir=/data/myapp/zookeeper-3.4.5/data (指定存放数据的路径)
dataLogDir=/data/myapp/zookeeper-3.4.5/logs (指定存放日志的路径)
clientPort=2181 (指定客户端监听的端口号)
5 . yum install java-1.8.0-openjdk (安装JDK)
6 .启动服务;
cd /usr/myapp/zookeeper-3.4.5/bin/ (进入此目录下)
./zkServer.sh start (启动服务)
服务启动好之后查看端口号是否开启。ss -nult
./zkServer.sh restart (重启服务)
./zkServer.sh stop (停止服务)
./zkServer.sh status (查看服务状态)
伪集群模式:(也是在同一台主机上)
伪集群模式就是在同一主机启动多个zookeeper并组成集群。
1 .首先要根据单机模式下安装一个zookeeper.
2 . 进入/usr/myapp/目录下将zookeeper-3.4.5复制三份:
cp zookeeper-3.4.5 zookeeper1 -r
cp zookeeper-3.4.5 zookeeper2 -r
cp zookeeper-3.4.5 zookeeper3 -r
m -rf zookeeper-3.4.5 (删配置文件了掉原来的配置文件现在只剩下三个配置文件)
3 . 分别修改三个配置文件:
zookeeper1配置文件conf/zoo.cfg修改如下
tickTime=2000
dataDir=/usr/myapp/zookeeper1/data
dataLogDir=/usr/myapp/zookeeper1/logs
clientPort=2181
initLimit=5
syncLimit=2
server.1=10.200.10.165:2888:3888 (本机的IP地址)
server.2=10.200.10.165:4888:5888 (本机的IP地址)
server.3=10.200.10.165:6888:7888 (本机的IP地址)
cd /usr/myapp/zookeeper1/
echo '1' > data/myid (标记自己的ID号)
zookeeper2配置文件conf/zoo.cfg修改如下
tickTime=2000
dataDir=/usr/myapp/zookeeper2/data
dataLogDir=/usr/myapp/zookeeper2/logs
clientPort=3181
initLimit=5
syncLimit=2
server.1=10.200.10.165:2888:3888 (本机的IP地址)
server.2=10.200.10.165:4888:5888 (本机的IP地址)
server.3=10.200.10.165:6888:7888 (本机的IP地址)
cd /usr/myapp/zookeeper2/
echo '2' > data/myid (标记自己的ID号)
zookeeper3配置文件conf/zoo.cfg修改如下
tickTime=2000
dataDir=/usr/myapp/zookeeper3/data
dataLogDir=/usr/myapp/zookeeper3/logs
clientPort=4181
initLimit=5
syncLimit=2
server.1=10.200.10.165:2888:3888 (本机的IP地址)
server.2=10.200.10.165:4888:5888 (本机的IP地址)
server.3=10.200.10.165:6888:7888 (本机的IP地址)
cd /usr/myapp/zookeeper3/
echo '3' > data/myid (标记自己的ID号)
4 . 最后启动:
把三个zookeeper都启动启动起来,启动顺序无所谓。
./zkServer.sh status (查看每台zookeeper的状态)
有一台为leader,其他两台为follower
集群模式:
集群模式就是在不同主机上安装zookeeper然后组成集群的模式。
按照单机模式在三台主机上分别安装zookeeper。
三个zookeeper的conf/zoo.cfg修改如下:(三个主机的zookeeper配置文件是相同的):
tickTime=2000
dataDir=/usr/myapp/zookeeper-3.4.5/data
dataLogDir=/usr/myapp/zookeeper-3.4.5/logs
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.220.128:2888:3888
server.2=192.168.220.129:2888:3888
server.3=192.168.220.130:2888:3888
由于三个zookeeper不在同一个主机上,所以clientPort=2181端口号可以相同,2888:3888选举的端口号也可以相同。只要三台主机的IP地址不同就可以。
分别给每台zookeeper主机添加一个ID号:
Cd /usr/myapp/zookeeper 3.4.5/
echo '1' > data/myid (在192.168.220.128主机上)
Cd /usr/myapp/zookeeper 3.4.5/
echo '2' > data/myid (在192.168.220.129主机上)
Cd /usr/myapp/zookeeper 3.4.5/
echo '3' > data/myid (在192.168.220.130主机上)
最后将三个节点上的zookeeper都开启来。