代码拉取完成,页面将自动刷新
同步操作将从 panglijing/DBA 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
NoSQL_day02 部署redis 集群架构提供数据存储服务
说明:为什么要部署redis集群架构存储数据
1 可以实现数据的分布式存储
2 能够实现数据的自动备份
3 可以实现服务的高用
需要机器如下:
当前host50不动 做客户端
共有7台服务器 51-57
把今天做实验的host51 删除 重新创建虚拟机配置ip地址是192.168.4.51
准备做集群的六redis 服务器 :
在主机51-56 做如下配置
1) 安装Redis软件 初始化配置
2) 停止redis服务
3) 修改服务使用的ip地址是eth0接口的地址 (不需要设置连接密码和修改服务使用的端口号)
4) 启动redis服务
主机host57 做管理集群的管理主机
配置Ip地址 192.168.4.57
只拷贝软件不需要安装 redis-3.2.1.gem 、 redis-4.0.8.tar.gz
一、部署Redis集群
1.1 配置管理主机
第一步:准备ruby脚本的运行环境
第二步:创建脚本
第三步:查看脚本帮助信息
1.2 配置6台Redis服务器
重要说明:内存里不允许有数据 不能设置连接密码 (如果有要清除)
第1步: 修改配置文件启用集群功能
第2步: 重启redis服务
第3步: 查看Redis-server进程状态(看到服务使用2个端口号为成功)
1.3 创建集群
#在管理主机mgm57 执行创建集群的命令
创建集群的命令格式
说明,创建集群时,会把前3台服务器 配置为主服务器,剩下的其他主机全做从服务器
并给主服务器平均分配hash slots
--replicas 从服务器的台数(指定每个主服务器有几台从服务器)
[root@mgm57 ~]# redis-trib.rb create --replicas 数字 ip地址:端口 ip地址:端口 ip地址:端口 ....
1.4 查看集群信息
说明:在管理主机连接集群中的任意1台服务都可以查看详细信息和统计信息
#查看集群统计信息
#查看集群详细信息
二、访问集群存取数据
命令格式 (连接集群中的任意一台服务器都可以查询数据和存储数据)
-c 连接集群中的主机 使用集群算法存储数据
]# redis-cli -c -h redis服务器的ip -p 端口号
#统一在Host51主机演示存储数数据
2.1 在客户端连接集群中的主机
说明:向集群中的主机存储数据一次只能存储一个变量集群算法每次只有一个计算结果
#存储数据
#查询数据
2.2 集群存储数据的工作原理 (!!!重点难点!!!)
三、管理集群
环境准备:
创建2台新的虚拟机 ip 192.168.4.58 和 192.168.4.59
分别运行redis 服务且启用了集群功能
192.168.4.58主机redis服务的端口 6379 服务使用的地址 192.168.4.58
192.168.4.59主机redis服务的端口 6379 服务使用的地址 192.168.4.59
3.1 向集群里添加新服务器
说明:什么情况下需要向集群里添加新主机(添加master角色服务器)
扩大内存空间(添加master角色服务器)。
为了保证服务的可靠性(给主服务器添加多个从服务器)
1)添加master角色的服务器
诉求把新的Redis服务器Host58 添加到集群里做master 服务器
练习到14:50
做完后 休息一下 到 15:00
具体配置如下:
1) Host58运行redis 服务且启用了集群功能
redis服务的端口 6379 服务使用的地址 192.168.4.58
2) 在管理主机mgm57 如下操作:
2.1 把host58主机添加到集群里
命令格式
[root@mgm57 ~]# redis-trib.rb add-node 新主机Ip:端口 集群中已有主机的ip:端口
2.2 分配hast slots (master角色的服务器没有hast slots得不到存储数据机会)
命令格式
[root@mgm57 ~]# redis-trib.rb reshard 集群中已有主机的ip:端口
[root@mgm57 ~]# redis-trib.rb reshard 192.168.4.56:6379
第1个问题 移除多少个hast slots
How many slots do you want to move (from 1 to 16384)? 4096
第2个问题 把4096个槽给哪台主数据库服务器 (host58主机的id)
What is the receiving node ID?87cc1c128166e08a16cc294758611453bbc71437
第3个问题 提供4096个槽 主机的id (all 表示当前所有主服务器一起提供4096个槽给host58)
Source node #1:all
第4个问题 确认前3步的配置 yes 同意 no 退出
Do you want to proceed with the proposed reshard plan (yes/no)? yes
2.3 查看集群信息 (查看到多新的主服务器且有hash slots 为成功)
2)添加slave角色的服务器 练习到 15:30
说明:从角色服务器的数据是master服务器同步过来的数据
所以slave角色的服务器不需要分配hash slots
只要把主机添加到集群了做slave服务器就可以了。
命令格式
[root@mgm57 ~]# redis-trib.rb add-node --slave 新主机Ip:端口 集群中已有主机的ip:端口
诉求: 把Redis服务器host59 添加到集群里做host58 的slave 服务器
具体操作如下:
1) 在host59 主机运行redis服务 且启用了集群功能
2) 在管理主机做如下操作:
2.1 把host59 添加到集群里 做slave服务器
2.2 查看集群统计信息 (发现host58 有一个slave服务器)
2.3 连接host59 查看数据 (会自动同步主服务器host58 的数据)
!!!!会自动做从服务器个数最少的 master服务器的从服务器。!!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.2 把服务器移除集群
3.2.1 移除slave角色的主机
命令格式
说明:slave角色的主机的没有hash slots 直接移除即可
主机被移除集群后redis服务会自动停止
[root@mgm57 ~]# redis-trib.rb del-node 集群中任意主机的Ip:端口 被移除主机的id
诉求: 把Host59 slave 服务器移除集群,在管理主机做如下操作
1) 查看host59主机的id
执行移除主机host59的命令
2) 查看集群信息 (发现host58 主机slave 服务个数是 0台)
3.2.2 移除master角色的主机
说明:master角色的服务器会占用hash slots 要先释放hash slots 再执行移除主机的命令
具体操作步骤:
第一步:释放 hash slots (再次执行reshard命令)
第二步:查看id , 移除主机
~~~~~~~扩展知识
1) 平均分配当前所有主服务器的hash slots
[root@mgm57 ~]# redis-trib.rb info 192.168.4.56:6379 槽不平均
192.168.4.53:6379 (f2c1bdb7...) -> 1 keys | 4096 slots | 1 slaves.
192.168.4.51:6379 (0eb3b7aa...) -> 3 keys | 8192 slots | 1 slaves.
192.168.4.52:6379 (a9cb8ccd...) -> 2 keys | 4096 slots | 1 slaves.
[OK] 6 keys in 3 masters.
0.00 keys per slot on average.
[root@mgm57 ~]#
平均分配hash slots
[root@mgm57 ~]# redis-trib.rb rebalance 192.168.4.56:6379
再次查看平均了
[root@mgm57 ~]# redis-trib.rb info 192.168.4.56:6379
192.168.4.53:6379 (f2c1bdb7...) -> 2 keys | 5462 slots | 1 slaves.
192.168.4.51:6379 (0eb3b7aa...) -> 2 keys | 5461 slots | 1 slaves.
192.168.4.52:6379 (a9cb8ccd...) -> 2 keys | 5461 slots | 1 slaves.
[OK] 6 keys in 3 masters.
0.00 keys per slot on average.
[root@mgm57 ~]#
2) 把移除的主机再次添加到集群里
第一步: 启动Redis服务并清除前世记忆(在Redis服务器本机操作)
第二步: 清空内存里的数据(在Redis服务器本机操作)
第三步: 在管理主机执行执行添加命令(在管理主机执行)
第四步: 查看是否添加成功(在管理主机执行)
把host58主机添加到集群里 做host51的slave服务器
命令格式 redis-trib.rb add-node --slave --master-id 主服务器的id 新服务器的ip:端口 集群中已有机器的Ip:端口
3)把集群中的主机恢复为独立的数据库服务器(host51~host56)
在数据库服务器本机执行如下操作
#停止redis服务
#注释掉配置文件中的集群功能
#清空数据库目录
#启动服务
#连接服务查看不到集群信息 也没有数据
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。