缓存数据库Redis——Redis群集部署

实验环境

用两台服务器模拟6台服务器(添加网卡)

主服务器Redis1:
     ens33: 192.168.52.150
     ens36: 192.168.52.153
     ens37: 192.168.52.154
从服务器Redis2:
    ens33: 192.168.52.148
    ens36: 192.168.52.155
    ens37: 192.168.52.156

1、在两台服务器上都安装Redis(操作相同,只演示一台)

[[email protected] ~]# yum install gcc gcc-c++ make -y ##安装环境组件
[[email protected] ~]# mkdir /mnt/tools
[[email protected] ~]# mount.cifs //192.168.100.100/tools /mnt/tools/ ##挂载
Password for [email protected]//192.168.100.100/tools:
[[email protected] ~]# cd /mnt/tools/redis/
[[email protected] redis]# ls
redis-5.0.7.tar.gz
[[email protected] redis]# tar xf redis-5.0.7.tar.gz -C /opt/ ##解压
[[email protected] redis]# cd /opt/
[[email protected] opt]# ls
redis-5.0.7 rh
[[email protected] opt]# cd redis-5.0.7/
[[email protected] redis-5.0.7]# make ##编译
[[email protected] redis-5.0.7]# make PREFIX=/usr/local/redis/ install ##安装
[[email protected] redis-5.0.7]# cd utils/
[[email protected] utils]# ./install_server.sh ##执行脚本进行配置
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379] ##默认端口
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] ##配置文件
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] ##日志文件
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] ##数据文件
Selected default - /var/lib/redis/6379
Please select the redis executable path [] /usr/local/redis/bin/redis-server
##可执行文件路径
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/redis/bin/redis-server
Cli Executable : /usr/local/redis/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!
[[email protected] utils]# ln -s /usr/local/redis/bin/ /usr/local/bin/ ##便于系统识别
[[email protected] utils]# netstat -ntap | grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:
LISTEN 44510/redis-server

2、在两台服务器上修改配置文件(操作相同,只演示一台)

[[email protected] utils]# vim /etc/redis/6379.conf
#bind 127.0.0.1          ##注释第70行的监听127地址,已监听所有地址
protected-mode no     ##去掉第89行注释关闭安全保护
port 6379                   ##去掉第93行注释,开启端口6379
daemonize yes          ##去掉第137行注释,以独立进程启动
cluster-enabled yes   ##去掉第833行注释,开启群集功能
cluster-config-file nodes-6379.conf  ##去掉第841行注释,群集名称文件设置
cluster-node-timeout 15000             ##去掉第847行注释,群集超时时间设置
appendonly yes                                ##去掉第700行注释,开启aof持久化
[[email protected] utils]# /etc/init.d/redis_6379 restart   ##重启服务
Stopping ...
Redis stopped
Starting Redis server...
[[email protected] utils]# cd /var/lib/redis/6379/
[[email protected] 6379]# ls
appendonly.aof  dump.rdb  nodes-6379.conf   ##生成aof,rdb和节点文件

3、在主服务器上安装rvm,Ruby控制群集软件(只在主服务器)

[[email protected] utils]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
##导入key文件
gpg: 已创建目录‘/root/.gnupg’
gpg: 新的配置文件‘/root/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/root/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
gpg: 钥匙环‘/root/.gnupg/secring.gpg’已建立
gpg: 钥匙环‘/root/.gnupg/pubring.gpg’已建立
gpg: 下载密钥‘D39DC0E3’,从 hkp 服务器 keys.gnupg.net
gpg: /root/.gnupg/trustdb.gpg:建立了信任度数据库
gpg: 密钥 D39DC0E3:公钥“Michal Papis (RVM signing) <[email protected]>”已导入
gpg: 没有找到任何绝对信任的密钥
gpg: 合计被处理的数量:1
gpg:           已导入:1  (RSA: 1)
[[email protected] utils]# curl -sSL https://get.rvm.io | bash -s stable ##安装rvm
........................//省略过程
[[email protected] utils]# source /etc/profile.d/rvm.sh  ##执行环境变量
[[email protected] utils]# rvm list known   ##列出ruby可以安装的版本
[[email protected] utils]# rvm install 2.4.1  ##安装2.4.1 版本
[[email protected] utils]# rvm use 2.4.1  ##使用rubyruby2.4.1 版本
Using /usr/local/rvm/gems/ruby-2.4.1
[[email protected] utils]# ruby -v   ##查看当前ruby2.4.1 版本
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
[[email protected] utils]# gem install redis  #再次安装Redis
Fetching redis-4.1.3.gem
Successfully installed redis-4.1.3
Parsing documentation for redis-4.1.3
Installing ri documentation for redis-4.1.3
Done installing documentation for redis after 1 seconds
1 gem installed
[[email protected] utils]# 

4、在主服务器上添加两块网卡

[[email protected] utils]#  service network restart   ##重启网卡
[[email protected] utils]#  systemctl stop firewalld.service   ##关闭防火墙
[[email protected] utils]#  setenforce 0
[[email protected] utils]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.52.150  netmask 255.255.255.0  broadcast 192.168.52.255
        inet6 fe80::5134:22f5:842b:5201  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0d:f1:75  txqueuelen 1000  (Ethernet)
        RX packets 91575  bytes 119014065 (113.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 28442  bytes 2443621 (2.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.52.153  netmask 255.255.255.0  broadcast 192.168.52.255
        inet6 fe80::84f1:53d8:a97a:d450  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0d:f1:89  txqueuelen 1000  (Ethernet)
        RX packets 128  bytes 18873 (18.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 42  bytes 6253 (6.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.52.154  netmask 255.255.255.0  broadcast 192.168.52.255
        inet6 fe80::74f5:2344:c59b:4fdb  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0d:f1:7f  txqueuelen 1000  (Ethernet)
        RX packets 107  bytes 16849 (16.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 29  bytes 4601 (4.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

5、在从服务器上也添加两块网卡

[[email protected] utils]# service network restart   ##重启网卡
[[email protected] utils]# systemctl stop firewalld.service   ##关闭防火墙
[[email protected] utils]# setenforce 0
[[email protected] utils]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.52.148  netmask 255.255.255.0  broadcast 192.168.52.255
        inet6 fe80::c776:9d00:618:88f2  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:37:e9:25  txqueuelen 1000  (Ethernet)
        RX packets 65481  bytes 86357533 (82.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 21069  bytes 1892475 (1.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.52.155  netmask 255.255.255.0  broadcast 192.168.52.255
        inet6 fe80::d3e5:cd6b:26f8:fd1f  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:37:e9:39  txqueuelen 1000  (Ethernet)
        RX packets 143  bytes 17342 (16.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 38  bytes 5940 (5.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.52.156  netmask 255.255.255.0  broadcast 192.168.52.255
        inet6 fe80::222b:77ad:8da2:4ea6  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:37:e9:2f  txqueuelen 1000  (Ethernet)
        RX packets 114  bytes 14481 (14.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 30  bytes 4661 (4.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

6、在master服务器上创建集群

##6个实例分为三组,每组一主一从
[[email protected] utils]# redis-cli --cluster create 192.168.52.150:6379 192.168.52.153:6379 192.168.52.154:6379 192.168.52.148:6379 192.168.52.155:6379 192.168.52.156:6379 --cluster-replicas 1
##创建群集,每组一主一从
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.52.155:6379 to 192.168.52.150:6379
Adding replica 192.168.52.156:6379 to 192.168.52.153:6379
Adding replica 192.168.52.148:6379 to 192.168.52.154:6379
M: b9dfae79d92141a7bad172a344e0696f356a875f 192.168.52.150:6379
   slots:[0-16383] (5461 slots) master    ##128,129,135为主
M: b9dfae79d92141a7bad172a344e0696f356a875f 192.168.52.153:6379
   slots:[0-16383] (5462 slots) master
M: b9dfae79d92141a7bad172a344e0696f356a875f 192.168.52.154:6379
   slots:[0-16383] (5461 slots) master
S: ebc69ee01cf293b3af9930cac2dba03b4475336b 192.168.52.148:6379
   replicates b9dfae79d92141a7bad172a344e0696f356a875f  ##136,137,138为副本
S: ebc69ee01cf293b3af9930cac2dba03b4475336b 192.168.52.155:6379
   replicates b9dfae79d92141a7bad172a344e0696f356a875f
S: ebc69ee01cf293b3af9930cac2dba03b4475336b 192.168.52.156:6379
   replicates b9dfae79d92141a7bad172a344e0696f356a875f
...
Can I set the above configuration? (type ‘yes‘ to accept): yes  ##选择yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join

>>> Performing Cluster Check (using node 192.168.52.150:6379)
M: b9dfae79d92141a7bad172a344e0696f356a875f 192.168.52.150:6379
   slots:[0-16383] (16384 slots) master
   1 additional replica(s)
S: ebc69ee01cf293b3af9930cac2dba03b4475336b 192.168.52.155:6379
   slots: (0 slots) slave
   replicates b9dfae79d92141a7bad172a344e0696f356a875f
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[[email protected] utils]#

7、验证群集读写原理

[[email protected] utils]# redis-cli -h 192.168.52.150 -p 6379   ##主服务器
192.168.52.150:6379> set name zhangsan   ##创建键值对
OK
192.168.52.150:6379> keys *
1) "name"
192.168.52.150:6379> get name
"zhangsan"
192.168.52.150:6379> exit
[[email protected] utils]# redis-cli -h 192.168.52.148 -p 6379   ##从服务器
192.168.52.148:6379> keys *    ##查看从上也有
1) "name"
192.168.52.148:6379> get name
"zhangsan"
192.168.52.148:6379> exit
[[email protected] utils]#  

原文地址:https://blog.51cto.com/14449541/2460906

时间: 2024-10-02 08:05:44

缓存数据库Redis——Redis群集部署的相关文章

redis缓存数据库

缓存数据库介绍 redis操作 缓存数据库介绍 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库,随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展.NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题. NoSQL数据库的

缓存数据库redis

什么是Redis? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命令并将响应发送回客户端. Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库,缓存和消息中间件.它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询,

Redis缓存数据库服务器

Redis缓存数据库服务器Redis是一个开源的科技与内存也可持久化的日志型.Key-Value数据库Redis的存储分为内存存储.磁盘存储和Log文件三部分,配置文件中有三个参数对其进行配置. 优势:和Mecached相比,它更加安全也支持存储的value类型相对更多.Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步 /var/log/redis_6379.log 日志文件/var/lib/redis/6379

LAMP+Redis缓存数据库整合

LAMP在企业生产环境中,除了将MYSQL单独部署在其他服务器.由于MYSQL数据库压力会很大,还会对MYSQL实现主从复制及读写分离,同时会对PHP网站进行调优,通常PHP的优化手段包括:PHP代码本身优化.PHP配置文件优化.为PHP添加缓存模块,将PHP网站数据存入缓存等. 为了减轻MYSQL数据库的压力,这时就用到了Redis缓存数据库服务, LAMP+Redis工作机制:用户通过浏览器访问LAMP网站,并以用户名和密码登录到网站,默认Redis缓存中没有该用户名和密码对应列表,PHP程

非关系型数据库(NoSQL)——Redis安装及部署详解

在现在的互联网大潮中,NoSQL可谓是家喻户晓,Redis作为NoSQL中及其重要的一员,使我们走向架构道路的一条必经之路.作为运维工程师来说,是必须要掌握的! 既然提到了Redis数据库是非关系型数据,并且需要掌握Redis数据库.那么关于关系型数据库与非关系型数据库的基本概念是必须要了解的. 一.关系型数据库与非关系型数据库的基本概念: 数据库按照其结构可以分为关系型数据库与其他数据库,而这些其他数据库,我们统称为非关系型数据库. 1.关系型数据库 关系型数据库是一个结构化的数据库,创建在关

快速搭建Redis缓存数据库

之前一篇随笔——Redis安装及主从配置已经详细的介绍过Redis的安装于配置.本文要讲的是如何在已经安装过Redis的机器上快速的创建出一个新的Redis缓存数据库. 一.环境介绍 1) Linux版本:Red Hat Enterprise Linux Server release 6.1 (Santiago) 2) Redis版本:Redis 2.6.16  64 bit 3) Redis安装路径:/usr/local/webserver/redis 二.安装步骤 1) 将/usr/loca

缓存数据库-redis介绍

一:Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储. Redis支持数据的备份,即master-slave模式的数据备份. 二:Redis 优势 性能极高 –

Python基础16 - RabbitMQ队列、Redis缓存数据库

@@@文章内容参照老男孩教育 Alex金角大王,武Sir银角大王@@@ RabbitMQ队列 下载安装http://www.rabbitmq.com/install-windows.html RabbitMQ 教程官网:http://www.rabbitmq.com/getstarted.html RabbitMQ:erlang语言 开发的. Python中连接RabbitMQ的模块:pika .Celery(分布式任务队列) .haigha可以维护很多的队列 几个概念说明: Broker:简单

Redis 开源缓存数据库

Redis 是一个开源的,高性能的 key-value 系统,可以用来缓存或存储数据.Redis 数据可以持久化,并且支持多种数据类型:字符串(string),列表 (list),哈希(hash),集合(set)和有序集合(sorted set).能够对关系型数据库起到很好的补充作用.它还提供了多种客户端 Python,Ruby,Erlang,PHP ,可以方便调用. 持久化: Redis 是一种内存数据库(跟 memcache 类似),在数据存取效率方面很优秀,由于内存中的数据时刻面临丢失的危

缓存数据库Redis 简介---&gt;安装

nosql介绍 NoSQL:一类新出现的数据库(not only sql) 泛指非关系型的数据库 不支持SQL语法 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式 NoSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景 NoSQL中的产品种类相当多: Mongodb Redis Hbase hadoop Cassandra hadoop NoSQL和SQL数据库的比较: 适用场景不同:sql数据库适合用于关系特别