007 搭建集群
''' 目录: 一: 概念 二: 配置 1 修改文件 2 加载配置 三: 搭建 四: 可能问题 1 ruby 五: 验证 六: python操作 '''
一: 概念
''' 集群: 是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。 一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放 分类: 软件; 硬件 软件:只有一台电脑,启动了多个redis服务。 硬件:存在多台实体的电脑,每台电脑上都启动了一个redis或者多个redis服务。 '''
二: 配置
1 修改文件
port 7000 bind 192.168.0.102 daemonize yes pidfile 7000.pid cluster-enabled yes cluster-config-file 7000_node.conf cluster-node-timeout 15000 appendonly yes # 说明 port 端口 bind IP daemonize 是否以守护(后台)进程方式运行 pidfile pid文件 cluster-enabled 是否使用集群 cluster-config-file 集群文件 cluster-node-timeout 集群超时时间 appendonly 备份相关
配置文件: 链接
2 加载配置
1 sudo redis-server 配置文件
三: 搭建
# redis的安装包中包含了redis-trib.rb,用于创建集群 指令: sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin/ # 安装ruby环境 指令: sudo apt-get install ruby # 搭建 redis-trib.rb create --replicas 1 192.168.0.102:7000 192.168.0.102:7001 192.168.0.102:7002 192.168.0.102:7003 192.168.0.102:7004 192.168.0.102:7005 # 说明: redis-trib.rb create --replicas 1: 创建集群; 该集群是1主1从; 一共3个节点。
1 配置成功: slots: (0 slots)是从服务器。
四: 可能问题
1 ruby
# 主要原因是由于安装的 ruby 不是最 新版本 # 查看地址: gem源 gem source -l -- 如果是https://rubygems.org/ 就需要更换 # 更换指令 gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ # 通过 gem 安装 redis 的相关依赖 sudo gem install redis
# 安装离线ruby: # 官网下载 官网地址: https://www.ruby-lang.org/en/downloads/ 选择版本: ruby-3.1.2.tar.gz # 删除原版: dpkg -l | grep ruby aptitude purge ruby # 离线安装: 命令 1 解压: tar -xvzf ruby-3.1.2.tar.gz 2 进入: cd ruby-3.1.2 # 配置并编译源代码 1: ./configure 2: make 3: make install # 安装后查询版本 ruby -v 备注: 安装离线不成功,把网络关闭,重新安装
五: 验证
1 使用7000端口服务器,创建数据,最终执行7001端口服务器。
六: python操作
说明: 1 需要安装包: redis-py-cluster 2 redis-py-cluster源码地址https://github.com/Grokzen/redis-py-cluster
from rediscluster import * if __name__ == '__main__': try: # 构建节点 : Redis使⽤CRC16算法,将键和值写到某个节点上 startup_nodes = [ {"host": "192.168.0.102", "port": "7000"}, {"host": "192.168.0.102", "port": "7001"}, {"host": "192.168.0.102", "port": "7002"}, ] # 构建对象 : RedisCluster sr = RedisCluster(startup_nodes=startup_nodes) # 增加 result = sr.set('age', '18') print("set: ", result) except Exception as e: print(e)
set: True