Redis单机安装与docker集群部署

单机安装Redis

前提要件
安装wget下载器

yum install wget

安装gcc编译器

yum install gcc

下载安装包

Redis官网
https://redis.io/

复制下载链接
http://download.redis.io/releases/redis-6.0.5.tar.gz

下载

wget http://download.redis.io/releases/redis-6.0.5.tar.gz

解压

tar xf redis-6.0.5.tar.gz

查看安装说明

vi README.md

编译

make

中途如果报错,可以执行清除

make distclean

编译完成之后可以通过make test进行测试
进行到这一步Redis已经可以手动通过命令启动,如果需要添加到service管理,需要继续安装。

安装

make install PREFIX=/opt/redis-6.0.5

添加环境变量

vi /ect/profile

export REDIS_HOME=/opt/redis-6.0.5
export PATH=$PATH:$REDIS_HOME/bin
:wq

source /ect/profile

添加服务

cd utils
./install_server.sh

单机Redis安装完成,并且已经启动,默认绑定端口6379。

可以进入/etc/init目录查看redis_6379脚本启动服务。

查看已经启动的Redis进程

ps -fe | grep redis

查看Redis目前的系统I/O

cd /proc/上面的Redis进程ID/fd
ll

docker下主从集群部署

部署环境说明

  • 节点1
    • ip: 192.168.128.110
    • hostname: node1
    • firewall: disable
    • cluster type: master
    • OS: Centos7
  • 节点2
    • ip: 192.168.128.120
    • hostname: node2
    • firewall: disable
    • cluster type: slave
    • OS: Centos7
  1. 主从节点分别安装并运行docker
  2. 拉取redis镜像
docker pull redis
  1. 下载redis.conf
wget https://raw.githubusercontent.com/antirez/redis/3.0/redis.conf -O /home/docker/redis/redis.conf
  1. 配置master节点的/home/docker/redis/redis.conf
daemonize no
port 6379
bind 0.0.0.0
slave-read-only yes
requirepass 123456
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
protected-mode no
  1. 配置slave节点的/home/docker/redis/redis.conf
daemonize no
port 6379
bind 0.0.0.0
slaveof 192.168.128.110 6379
masterauth 123456
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
protected-mode no
  1. 主从节点分别创建docker网桥
docker network create  -d bridge net-bridge
  1. 主节点(node1)启动redis
docker run --privileged=true -d --name redis-master --network net-bridge -p 6379:6379 -v /home/docker/redis/redis.conf:/etc/redis.conf redis redis-server /etc/redis.conf
  • –privileged=true 赋予容器内root用户权限
  • -d 后台运行
  • –name 容器别名
  • –network redis容器连接到网桥
  • -p 宿主机端口与容器端口映射
  • -v 挂载宿主机目录文件到容器内部目录
  • redis-server /etc/redis.conf 用挂载的conf文件配置启动
  1. 进入redis容器交互模式
[root@node1 ~]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                    NAMES
3f4e66412830        redis                 "docker-entrypoint.s…"   41 minutes ago      Up 41 minutes       0.0.0.0:6379->6379/tc

[root@node1 ~]# docker exec -it 3f4e66412830 bash
  1. 初始化槽
root@3f4e66412830:/data# redis-cli -h 192.168.128.110 -a 123456 --cluster fix 192.168.128.110:6379
Can I set the above configuration? (type 'yes' to accept): yes

上面一定要输入完整的 yes, 这一步通常是为了解决下面这个错误:

报错(error) CLUSTERDOWN Hash slot not served

  1. 启动redis客户端
 root@3f4e66412830:/data# redis-cli -h 192.168.128.110 -a 123456
 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

这一步会被提示在命令行输入密码可能不安全。

  1. 查看集群节点状态,info replication
192.168.128.110:6379> info replication
# Replication
role:master
connected_slaves:0
slave0:ip=192.168.128.120,port=6379,state=online,offset=3989,lag=1
master_replid:21a72f426046d253c3ef258a7dc2fae36336802e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3989
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3989
  1. 从节点(node2)启动redis
docker run --privileged=true -d --name redis-node --network net-bridge -p 6379:6379 -v /home/docker/redis/redis.conf:/etc/redis.conf redis redis-server /etc/redis.conf
  1. 进入redis容器交互模式
[root@node2 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
8cfca9b7307e        redis               "docker-entrypoint.s…"   51 minutes ago      Up 48 minutes       0.0.0.0:6379->6379/tcp   redis-node
  1. 启动redis客户端
root@8cfca9b7307e:/data# redis-cli
127.0.0.1:6379> auth 123456
OK
  1. 查看集群节点状态,info replication
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.128.110
master_port:6379
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:4353
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:21a72f426046d253c3ef258a7dc2fae36336802e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4353
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:127
repl_backlog_histlen:4227

上面可以看到当前节点以slave角色加入到集群中,识别了主节点是node1

  1. 测试
    主节点中添加数据
192.168.128.110:6379> set test 110
OK

从节点中查看数据

127.0.0.1:6379> keys *
1) "test"
127.0.0.1:6379> get test
"110"

完成基于docker的redis主从集群部署。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值