壹:Zookeeper-docker
Zookeeper是一个分布式的、高性能的、开源的分布式系统的协调(Coordination)服务,它是一个为分布式应用提供一致性服务的软件。
(一)部署准备
1、下载镜像
[root@hadoop104 ~]# docker pull zookeeper:3.5.8
2、创建局域网
在集群部署在同一个局域网中。
[root@hadoop104 ~]# docker network create --subnet=192.168.10.0/24 zk_net
3、创建节点挂载目录
(1)集群规划,集群部署3台机器:
|
集群编号ZOO_MY_ID |
名称 |
映射本地端口 |
ip |
存储路径 |
|
1 |
zk1 |
2181 |
192.168.10.101 |
/usr/local zookeeper/zk1 |
|
2 |
zk2 |
2182 |
192.168.10.102 |
/usr/local zookeeper/zk2 |
|
3 |
zk3 |
2183 |
192.168.10.103 |
/usr/local zookeeper/zk3 |
(2)创建节点挂载目录
[root@hadoop104 ~]# cd /usr/local
# 创建 zookeeper节点配置存放目录
[root@hadoop104 local]# mkdir -p zookeeper/zk1/conf zookeeper/zk2/conf zookeeper/zk3/conf
# 创建 zookeeper节点数据存放目录
[root@hadoop104 local]# mkdir -p zookeeper/zk1/data zookeeper/zk2/data zookeeper/zk3/data
# 创建 zookeeper节点数据日志存放目录
[root@hadoop104 local]# mkdir -p zookeeper/zk1/datalog zookeeper/zk2/datalog zookeeper/zk3/datalog
# 创建 zookeeper节点日志存放目录
[root@hadoop104 local]# mkdir -p zookeeper/zk1/logs zookeeper/zk2/logs zookeeper/zk3/logs
4、创建配置文件
(1)在第1个节点挂载目录zookeeper/zk1/conf下分别创建配置文件zoo.cfg
[root@hadoop104 local]# vim zookeeper/zk1/conf/zoo.cfg
内容如下:
# Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里
dataDir=/data
# 事务日志存储地点,如果没提供的话使用的则是 dataDir
dataLogDir=/datalog
# 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位
tickTime=2000
# 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)
initLimit=5
# 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)
syncLimit=2
# 默认值为3,不支持以系统属性方式配置。用于配置Zookeeper在自动清理的时候需要保留的快照数据文件数量和对应的事务日志文件。此参数的最小值为3,如果配置的值小于3会自动调整到3
autopurge.snapRetainCount=3
# 默认值为0,单位为小时,不支持以系统属性方式配置。用于配置Zookeeper进行历史文件自动清理的频率。如果配置为0或负数,表示不需要开启定时清理功能
autopurge.purgeInterval=0
# 默认为60,不支持以系统属性方式配置。从Socket层面限制单个客户端与单台服务器之间的并发连接数,即以ip地址来进行连接数的限制。
# 如果设置为0,表示不做任何限制。仅仅是单台客户端与单个Zookeeper服务器连接数的限制,不能控制所有客户端的连接数总和
maxClientCnxns=60
# 3.5.0中的新功能:当设置为false时,可以在复制模式下启动单个服务器,单个参与者可以使用观察者运行,并且群集可以重新配置为一个节点,并且从一个节点。
# 对于向后兼容性,默认值为true。可以使用QuorumPeerConfig的setStandaloneEnabled方法或通过将“standaloneEnabled = false”或“standaloneEnabled = true”添加到服务器的配置文件来设置它。
standaloneEnabled=false
# 内嵌的管理控制台,停用这个服务
admin.enableServer=false
# 开启四字命令,将所有命令添加到白名单中
4lw.commands.whitelist=*
# 集群中服务的列表,ip设置为局域网zk_net的网段
server.1=192.168.10.101:2888:3888;2181
server.2=192.168.10.102:2888:3888;2181
server.3=192.168.10.103:2888:3888;2181
zoo.cfg配置文件中参数的说明 解释说明:
|
tickTime=2000 |
zookeeper里面最小的时间单位为2000ms |
|
initLimit=10 |
Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在 initLimit 时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,F在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了 |
|
syncLimit=5 |
在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。注意:不要把这个参数设置得过大,否则可能会掩盖一些问题 |
|
dataDir |
存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能 |
|
dataLogDir |
事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZK性能 |
|
clientPort |
客户端连接server的端口,即对外服务端口 ,默认是2181 |
|
server.1 |
配置集群节点 |
|
192.168.10.100:2888:3888 |
主机名, 心跳端口、数据端口 的格式 |
(2)分别创建第2,3个节点的配置文件
[root@hadoop104 local]# cp zookeeper/zk1/conf/zoo.cfg zookeeper/zk2/conf
[root@hadoop104 local]# cp zookeeper/zk1/conf/zoo.cfg zookeeper/zk3/conf
(二)部署节点
(1)安装并启动第1个节点
[root@hadoop104 ~]# docker run -d --restart always --name zk1 --network zk_net --ip 192.168.10.101 -p 2181:2181 -e ZOO_MY_ID=1 -v /usr/local/zookeeper/zk1/data:/data -v /usr/local/zookeeper/zk1/datalog:/datalog -v /usr/local/zookeeper/zk1/logs:/logs -v /usr/local/zookeeper/zk1/conf/zoo.cfg:/conf/zoo.cfg zookeeper:3.5.8
(2)安装并启动第2个节点
[root@hadoop104 ~]# docker run -d --restart always --name zk2 --network zk_net --ip 192.168.10.102 -p 2182:2181 -e ZOO_MY_ID=2 -v /usr/local/zookeeper/zk2/data:/data -v /usr/local/zookeeper/zk2/datalog:/datalog -v /usr/local/zookeeper/zk2/logs:/logs -v /usr/local/zookeeper/zk2/conf/zoo.cfg:/conf/zoo.cfg zookeeper:3.5.8
(3)安装并启动第3个节点
[root@hadoop104 ~]# docker run -d --restart always --name zk3 --network zk_net --ip 192.168.10.103 -p 2183:2181 -e ZOO_MY_ID=3 -v /usr/local/zookeeper/zk3/data:/data -v /usr/local/zookeeper/zk3/datalog:/datalog -v /usr/local/zookeeper/zk3/logs:/logs -v /usr/local/zookeeper/zk3/conf/zoo.cfg:/conf/zoo.cfg zookeeper:3.5.8
(4)查看节点状态
集群中3个节点,只有一个是leader,其它节点都为flower。
# 第1个节点状态
[root@hadoop104 ~]# docker exec -it zk1 /bin/bash
root@245b7b533b30:/apache-zookeeper-3.5.8-bin# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
# 第2个节点状态
[root@hadoop104 ~]# docker exec -it zk2 /bin/bash
root@36d3223cc495:/apache-zookeeper-3.5.8-bin# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
# 第3个节点状态
[root@hadoop104 ~]# docker exec -it zk3 /bin/bash
root@450e6cf10d4f:/apache-zookeeper-3.5.8-bin# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
3个节点状态正常,集群搭建完成。
(三)部署结果

贰:Kafka-docker
Kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQucue),主要应用于大数据实时处理领城。它是一个开源的分布式事件流平台( Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。
(一)安装准备
1、集群规划
部署3台broker:
|
zookeeper集群 (已部署) |
zk1宿主机ip:端口 |
zk2宿主机ip:端口 |
zk3宿主机ip:端口 |
|
192.168.10.101:2181 |
192.168.10.102:2181 |
192.168.10.103:2183 | |
|
192.168.100.128:2181 |
192.168.100.128:2182 |
192.168.100.128:2183 | |
|
kafka集群 |
kf1宿主机ip:端口 |
kf2宿主机ip:端口 |
宿主机ip:端口 |
|
192.168.10.201:9092 |
192.168.10.202:9092 |
192.168.10.203:9092 | |
|
192.168.100.128:9022 |
192.168.100.128:9093 |
192.168.100.128:9094 |
2、下载镜像
[root@hadoop104 ~]# docker pull wurstmeister/kafka
(二)安装
1、安装第1个broker
[root@hadoop104 local]# docker run -it -d --restart always --name kf1 --network zk_net --ip 192.168.10.201 -p 9092:9092 -p 19999:9999 -e KAFKA_BROKER_ID=1 --env KAFKA_ZOOKEEPER_CONNECT=192.168.100.128:2181,192.168.100.128:2182,192.168.100.128:2183 --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.100.128:9092 --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
参数说明:
--env KAFKA_ZOOKEEPER_CONNECT=192.168.100.128:2181,192.168.100.128:2182,192.168.100.128:2183: 设置环境变量,指定ZooKeeper的连接字符串。使用宿主机ip:端口,提供给外网使用。
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT:// 192.168.100.128:9092: 设置环境变量,指定Kafka的advertised listeners(消息监听)。使用宿主机ip:端口,提供给外网使用。
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092: 设置环境变量,指定Kafka的listeners。
2、安装第2个broker
[root@hadoop104 local]# docker run -it -d --restart always --name kf2 --network zk_net --ip 192.168.10.202 -p 9093:9092 -p 29999:9999 -e KAFKA_BROKER_ID=2 --env KAFKA_ZOOKEEPER_CONNECT=192.168.100.128:2181,192.168.100.128:2182,192.168.100.128:2183 --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.100.128:9093 --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
3、安装第3个broker
[root@hadoop104 local]# docker run -it -d --restart always --name kf3 --network zk_net --ip 192.168.10.203 -p 9094:9092 -p 39999:9999 -e KAFKA_BROKER_ID=3 --env KAFKA_ZOOKEEPER_CONNECT=192.168.100.128:2181,192.168.100.128:2182,192.168.100.128:2183 --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.100.128:9094 --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
4、测试
(1)进入第1个broker
[root@hadoop104 local]# docker exec -it kf1 /bin/bash
# 创建主题first
root@14b37abf58ad:/# kafka-topics.sh --bootstrap-server 192.168.100.128:9092 --create --partitions 1 --replication-factor 3 -topic first
Created topic first.
(2)进入第2个broker
[root@hadoop104 local]# docker exec -it kf2 /bin/bash
# 创建主题second
root@3adde69a4342:/# kafka-topics.sh --bootstrap-server 192.168.100.128:9092 --create --partitions 1 --replication-factor 3 -topic second
Created topic second.
(3)进入第3个broker
[root@hadoop104 local]# docker exec -it kf3 /bin/bash
# 创建主题three
root@0c2c89bbfdd0:/# kafka-topics.sh --bootstrap-server 192.168.100.128:9092 --create --partitions 1 --replication-factor 3 -topic three
Created topic three.
# 查看所有主题
root@0c2c89bbfdd0:/# kafka-topics.sh --bootstrap-server 192.168.100.128:9092 --list
first
second
three
kafka集群部署成功。
(三)安装结果

叁:Redis-docker
Redis是NoSQL中的一种存储工具,他是一个key-value存储系统。默认有16个数据库从0到15来进行表示。
Redis 被广泛应用在缓存方向,与传统数据库不同的是 Redis 的数据是存在内存中的,因此读写速度非常快。
Redis为分布式缓存,在多客户端的情况下,共用一份缓存数据,缓存具有一致性。
Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
1、下载镜像
[root@104 ~]# docker pull redis
2、安装
(1)创建主目录
[root@104 ~]# mkdir -p /usr/local/redis
[root@104 ~]# cd /usr/local/redis
[root@104 redis]# mkdir -p data conf
(2)创建配置文件
将配置文件redis.conf保存到 /usr/local/redis/conf目录,内容如下:
# 所有主机都可以连接
bind 0.0.0.0
# 关闭保护模式
protected-mode no
# 端口号
port 6379
# 密码
requirepass 123456
always-show-logo yes
(3)安装数据库
[root@104 redis]# docker run --name redis_6379 -p 6379:6379 -v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf -v /usr/local/redis/data/:/data -d redis redis-server /etc/redis/redis.conf
(4)登录测试
① 创建终端
[root@104 redis]# docker exec -it redis_6379 /bin/bash
root@afeb53a49bdf:/data#
② 登录并测试
root@afeb53a49bdf:/data# redis-cli -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> set test master
OK
127.0.0.1:6379> get test
"master"

777

被折叠的 条评论
为什么被折叠?



