前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 主从集群及自启动配置

Redis 主从集群及自启动配置

作者头像
用户2987604
发布2020-06-15 15:38:13
1.4K0
发布2020-06-15 15:38:13
举报

在 CentOS 7.6 环境中搭建 Redis 主从集群,并使用 systemctl 配置集群自启动。

Redis 下载安装

采用源码编译安装的方式,下载源码:

代码语言:javascript
复制
wget http://download.redis.io/releases/redis-5.0.7.tar.gz -P /usr/local/src

进入到下载目录,解压下载的源码:

代码语言:javascript
复制
cd /usr/local/src/tar -zxvf redis-5.0.7.tar.gz

安装 gcc 编译器,使用 make 编译安装:

代码语言:javascript
复制
cd redis-5.0.7yum install gcc-c++make MALLOC=libc install

完成上面步骤之后,Redis 相关 bin 文件就已经安装到 /usr/bin/local/bin 目录下了:

代码语言:javascript
复制
redis-benchmarkredis-check-aofredis-check-rdbredis-cliredis-sentinel -> redis-serverredis-server

启动 Redis 服务器,使用默认的配置文件 /usr/local/src/redis-5.0.7/redis.conf,也可指定配置文件:

代码语言:javascript
复制
/usr/local/bin/redis-server ./redis.conf

使用客户端连接 Redis Server,测试是否启动成功:

代码语言:javascript
复制
/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 -a password

有时候会有中文乱码,要在 redis-cli 后面加上 --raw

集群配置

在本地启动多个 Redis Server 实例,使用不同的配置文件,占用不同的端口。

配置多个 Redis Server 实例

/usr/local/下建立 redis-cluster 文件夹,再建子文件夹 7001-7006 以及 700*/data/

代码语言:javascript
复制
mkdir -p /usr/local/redis-cluster/7000/data \  /usr/local/redis-cluster/7001/data \  /usr/local/redis-cluster/7002/data \  /usr/local/redis-cluster/7003/data \  /usr/local/redis-cluster/7004/data \  /usr/local/redis-cluster/7005/data

在各实例位置中新建 redis.conf,并配置如下:

代码语言:javascript
复制
port 700*bind 0.0.0.0dir /usr/local/redis-cluster/700*/data/cluster-enabled yescluster-config-file nodes-700*.confcluster-node-timeout 5000cluster-announce-ip 当前集群IPappendonly yesdaemonize yes

启动 Server 实例

启动各 Server 实例:

代码语言:javascript
复制
/usr/local/bin/redis-server /usr/local/redis-cluster/700*/redis.conf

或使用自定义脚本 /var/tmp/redis-cluster.sh,一次性启动多个实例:

代码语言:javascript
复制
#!/bin/bash/usr/local/bin/redis-server /usr/local/redis-cluster/7000/redis.conf/usr/local/bin/redis-server /usr/local/redis-cluster/7001/redis.conf/usr/local/bin/redis-server /usr/local/redis-cluster/7002/redis.conf/usr/local/bin/redis-server /usr/local/redis-cluster/7003/redis.conf/usr/local/bin/redis-server /usr/local/redis-cluster/7004/redis.conf/usr/local/bin/redis-server /usr/local/redis-cluster/7005/redis.conf

添加执行权限并执行:

代码语言:javascript
复制
chmod +x redis-cluster.sh./redis-cluster.sh

查看各实例进程

代码语言:javascript
复制
[root@bbc106 redis-cluster]# ps -ef | grep redis6446     1  0 03:13 /usr/local/bin/redis-server 0.0.0.0:7000 [cluster]6553     1  0 03:14 /usr/local/bin/redis-server 0.0.0.0:7001 [cluster]6577     1  0 03:14 /usr/local/bin/redis-server 0.0.0.0:7002 [cluster]6585     1  0 03:14 /usr/local/bin/redis-server 0.0.0.0:7003 [cluster]6595     1  0 03:14 /usr/local/bin/redis-server 0.0.0.0:7004 [cluster]6605     1  0 03:14 /usr/local/bin/redis-server 0.0.0.0:7005 [cluster]

建立集群

使用 /usr/local/bin/redis-cli 建立集群:

代码语言:javascript
复制
/usr/local/bin/redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

看到如下 log:

代码语言:javascript
复制
>>> Performing hash slots allocation on 6 nodes...Master[0] -> Slots 0 - 5460Master[1] -> Slots 5461 - 10922Master[2] -> Slots 10923 - 16383...[OK] All 16384 slots covered.

测试集群

客户端连接任一节点,并使用 cluster nodescluster info 查看集群信息:

代码语言:javascript
复制
[root@bbc106 local]# /usr/local/bin/redis-cli -h 127.0.0.1 -p 7000127.0.0.1:7000> cluster nodes

集群信息如下图:

  • 119.3.104.4:7000:节点的 IP 和 Port
  • master /slave:节点在集群中的角色,主节点 / 从节点
  • 0-5460 / 10923-16383:节点分配到的槽数

集群自启动

使用 systemd 配置集群自启动,首先添加 systemd unit service 配置文件 /usr/lib/systemd/system/redis-cluster.service

代码语言:javascript
复制
[Unit]Description=Redis 5.0 Cluster ServiceAfter=network.target
[Service]Type=forkingExecStart=/usr/local/redis-cluster/redis-cluster.sh
[Install]WantedBy=default.target
  • Description:描述信息
  • After:启动顺序
  • Type:进程启动类型
  • ExecStart:启动脚本

其中 Redis 进程启动类型和 redis 服务的启动方式有关:

代码语言:javascript
复制
Type=notify

配置开机启动,首先在 /etc/systemd/system/ 下建立 redis-cluster.service 的软链接:

代码语言:javascript
复制
ln -s /usr/lib/systemd/system/redis-cluster.service

重新加载 systemd 服务:

代码语言:javascript
复制
systemctl daemon-reload

启动 redis 集群服务并设置 开机启动:

代码语言:javascript
复制
sudo systemctl start redis-clustersudo systemctl enable redis-cluster

重启服务器测试集群自启动:

代码语言:javascript
复制
sudo systemctl reboot

参考

https://www.freedesktop.org/software/systemd/man/systemd.service.html

https://gist.github.com/nexdrew/14392032ed6f105474a3

https://gist.github.com/hackedunit/a53f0b5376b3772d278078f686b04d38

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 董亮亮的开发笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Redis 下载安装
  • 集群配置
    • 配置多个 Redis Server 实例
      • 启动 Server 实例
        • 建立集群
          • 测试集群
          • 集群自启动
          • 参考
          相关产品与服务
          云数据库 Redis
          腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档