常用中间件集群部署
redis—cluster集群部署
安装redis(多节点同步)
#拉取软件包 到服务器中
wget https://download.redis.io/releases/redis-6.2.1.tar.gz
#创建服务目录
mkdir /data/tysf-test/redis/
#解压到规划目录中
tar -zxvf redis-6.2.1.tar.gz -C /data/tysf-test/redis/
#进入解压目录进行编译
make && make install
修改配置文件(三台redis端口不要冲突,将配置文件复制给另外几台,看你是6节点部署还是3节点一个道理)
port 16379 #端口16379
bind 本机ip #默认ip为172.20.0.2/3/4/5/6/7需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes #redis后台运行
pidfile /var/run/redis_16379.pid #pidfile #文件对应16379
cluster-enabled yes #开启集群 把注释#去掉
cluster-config-file nodes_7000.conf #集群的配置 配置文件首次启动自动生成
cluster-node-timeout 15000 #请求超时 默认15秒,可自行设置
appendonly yes #aof日志开启 有需要就开启,它会每次写操作都记录一条日志
masterauth '86a1b907d54bf7010394bf316e183e67'
requirepass '86a1b907d54bf7010394bf316e183e67' #设置密码
启动redis
redis-server /usr/local/redis_cluster/redis.conf
创建集群 说明:《0,1 这是对应你集群的模式是1主配一从还是都是主,根据实际情况来》
redis-cli --cluster create 172.17.9.48:16379 172.17.9.211:16380 172.17.9.91:16381 --cluster-replicas 《0,1》 -a "Rpb7H7wS076XPqBF"
Kafka—Kraft模式 集群部署
前言:
kafka有两种模式 可以自己去了解一下这里就不多说了
集群规划:
一般模式下,元数据在 zookeeper 中,运行时动态选举 controller,由controller 进行 Kafka 集群管理。kraft 模式架构(实验性)下,不再依赖 zookeeper 集群,而是用三台 controller 节点代替 zookeeper,元数据保存在 controller 中,由 controller 直接进行 Kafka 集群管理。
好处有以下几个:
Kafka 不再依赖外部框架,而是能够独立运行
controller 管理集群时,不再需要从 zookeeper 中先读取数据,集群性能上升
由于不依赖 zookeeper,集群扩展时不再受到 zookeeper 读写能力限制
controller 不再动态选举,而是由配置文件规定。可以有针对性的加强controller 节点的配置,而不是像以前一样对随机 controller 节点的高负载束手无策。
下载二进制安装包:
copy到三台节点上后解压:
mkdir /data/【项目名称-环境】/kafka
tar -zxvf /home/kafka_2.13-3.6.1.tgz -C /data/【项目名称-环境】/kafka
调整配置文件:Kraft模式的配置文件在config目录的kraft子目录下
cd /data/【项目名称-环境】/kafka/kafka_2.13-3.6.1/config/kraft vi server.properties
server1.properties
# 节点类型,默认为混合节点
process.roles=broker,controller
# 节点id,为不小于1的整数
node.id=1
# 投票者列表:nodeId+地址端口
controller.quorum.voters=1@localhost:19093,2@localhost:19093,3@localhost:19093
# 内网地址
listeners=PLAINTEXT://:19092,CONTROLLER://:19093
inter.broker.listener.name=PLAINTEXT
# 外网地址
advertised.listeners=PLAINTEXT://localhost:19092
controller.listener.names=CONTROLLER
log.dirs=/tmp/kraft-combined-logs/log1
server2.properties
# 节点类型,默认为混合节点
process.roles=broker,controller
# 节点id,为不小于1的整数
node.id=2
# 投票者列表:nodeId+地址端口
controller.quorum.voters=1@localhost:19093,2@localhost:19093,3@localhost:19093
# 内网地址
listeners=PLAINTEXT://:19092,CONTROLLER://:19093
inter.broker.listener.name=PLAINTEXT
# 外网地址
advertised.listeners=PLAINTEXT://localhost:19093
controller.listener.names=CONTROLLER
log.dirs=/tmp/kraft-combined-logs/log2
server3.properties
# 节点类型,默认为混合节点
process.roles=broker,controller
# 节点id,为不小于1的整数
node.id=3
# 投票者列表:nodeId+地址端口
controller.quorum.voters=1@localhost:19093,2@localhost:19093,3@localhost:19093
# 内网地址
listeners=PLAINTEXT://:19092,CONTROLLER://:19093
inter.broker.listener.name=PLAINTEXT
# 外网地址
advertised.listeners=PLAINTEXT://localhost:19092
controller.listener.names=CONTROLLER
log.dirs=/tmp/kraft-combined-logs/log3
生成集群ID并使用集群ID格式化数据目录
在KRaft模式下,一个集群需要设定一个id,我们可以使用自带的命令生成,先进入上述任意一台虚拟机并使用终端进入Kafka目录中,执行下列命令生成一个UUID:
bin/kafka-storage.sh random-uuid
这里记录下这个ID以备用。kilMbKEoRUq3Ha6nruW6Aw
这个集群ID事实上是一个长度16位的字符串通过Base64编码后得来的,因此你也可以不使用上述命令,直接自定义一个16位长度的纯英文和数字组成的字符串,然后将这个字符串编码为Base64格式作为这个集群ID也可以。可以使用菜鸟工具中的在线Base64编码工具。
然后,分别执行下列命令,配置集群元数据:
./kafka-storage.sh format -t cKTMdVH_QZOJ_wEem1uz7w -c /data/tysf-test/Kafka/kafka_2.13-3.9.1/config/kraft/server.properties
./kafka-storage.sh format -t cKTMdVH_QZOJ_wEem1uz7w -c /data/tysf-test/Kafka/kafka_2.13-3.9.1/config/kraft/server.properties
./kafka-storage.sh format -t cKTMdVH_QZOJ_wEem1uz7w -c /data/tysf-test/Kafka/kafka_2.13-3.9.1/config/kraft/server.properties
启动Kafka集群:
./kafka-server-start.sh -daemon /data/tysf-test/Kafka/kafka_2.13-3.9.1/config/kraft/server.properties
./kafka-server-start.sh -daemon /data/tysf-test/Kafka/kafka_2.13-3.9.1/config/kraft/server.properties
./kafka-server-start.sh -daemon /data/tysf-test/Kafka/kafka_2.13-3.9.1/config/kraft/server.properties
查看服务是否已经互相通讯
netstat -anutp
测试 在kafka1 上创建分区
./kafka-topics.sh --bootstrap-server "node1 IP":19092 -create --topic cluster-topic --partitions 3 --replication-factor 3
在kafka2的端口(9094)查询该topic:
./kafka-topics.sh --bootstrap-server 172.17.9.211:19092 --describe --topic cluster-topic
在kafka3的上删除该topic:
./kafka-topics.sh --bootstrap-server localhost:9096 --delete --topic cluster-topic