您的位置:首页 > 数据库 > Redis

redis集群搭建-centos7

2017-05-23 00:00 441 查看

准备工作

所有的操作尽量用Xshell的批量操作来执行, 能省去很多步骤

环境准备

在虚拟机中安装四台centos7(我用的镜像是CentOS-7-x86_64-Minimal-1611.iso)最小化安装

ip地址分别是

192.168.16.135

192.168.16.136

192.168.16.137

192.168.16.138

最终redis集群将会是4主(7000端口)4从(7001端口)8个节点

使用网易安装源(可忽略本步骤)

yum install wget
# 替换本地安装源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo # 生成缓存
yum makecache
# 更新系统
yum update

安装必须的类库

yum install -y gcc g++ gcc-c++ make net-tools

安装ruby

yum install ruby

下载redis集群版&&解压缩

# 创建工作目录并进入
mkdir -p /z/packages && cd /z/packages
# 下载redis集群版(3.0版本以上支持集群)
wget http://download.redis.io/releases/redis-3.2.1.tar.gz # 解压并进入redis-3.2.1
tar zxvf redis-3.2.1.tar.gz && cd redis-3.2.1

编译&&安装

# 编译
make
# 安装
make install

如果编译过程出错, 提示

zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录

解决方法: ==make MALLOC=libc==

准备工作目录以及开放端口

创建集群工作目录

mkdir -p /z/redis-cluster/7000
mkdir -p /z/redis-cluster/7001

复制redis的配置文件到集群工作目录下

cp /z/packages/redis-3.2.1/redis.conf /z/redis-cluster/7000

修改redis.conf配置

# 修改地址绑定 , 允许远程连接
bind 127.0.0.1 加上注释
# 改为集群模式
cluster-enabled yes 去掉注释
# 修改端口号
port 6379改为7000
# 改为后台运行
daemonize no 改为yes
# 保护模式
protected-mode yes 改为no
# pidfile文件
pidfile /var/run/redis_6379.pid 改为 pidfile /var/run/redis_7000.pid

开放指定端口

# 开放reids客户端连接端口
[root@localhost src]# firewall-cmd --zone=public --add-port=7000/tcp --permanent
[root@localhost src]# firewall-cmd --zone=public --add-port=7001/tcp --permanent
# 开放redis集群总线端口
[root@localhost src]# firewall-cmd --zone=public --add-port=17000/tcp --permanent
[root@localhost src]# firewall-cmd --zone=public --add-port=17001/tcp --permanent
# 重新加载
[root@localhost src]# firewall-cmd --reload
# 查看全部开放端口
[root@localhost src]# firewall-cmd --list-all
# 删除某个端口
[root@localhost src]# firewall-cmd --zone=public --remove-port=80/tcp --permanent

# 最终每台机器端口开放结果:
[root@localhost src]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: dhcpv6-client ssh
ports: 7001/tcp 17000/tcp 7000/tcp 17001/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:

配置节点

启动所有节点

# 启动135/136/137/138上的7000和7001节点
redis-server /z/redis-cluster/7000/redis.conf
redis-server /z/redis-cluster/7001/redis.conf
# 关闭节点
# redis-cli -p 7000 shutdown

# 如果报错
/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
from ./redis-trib.rb:25:in `<main>'
# 需要为ruby安装redis库
gem install redis

配置主从关系

# 创建主节点(redis-trib.rb文件位于/z/packages/redis-3.2.1/src/下)
[root@localhost src]# ./redis-trib.rb create 192.168.16.135:7000 192.168.16.136:7000 192.168.16.137:7000 192.168.16.138:7000
# 查看所有节点
[root@localhost src]# redis-cli -c -p 7000 cluster nodes
# 设置从节点
[root@localhost src]# ./redis-trib.rb add-node --slave --master-id c31ba3dad768b34f21b543608e5864ad40ea720c 192.168.16.138:7001 192.168.16.135:7000

.........
# 最终的主从关系
[root@localhost src]# redis-cli -c -p 7000 cluster nodes
2b6837803045db79634ed26f57a696f507836fe7 192.168.16.135:7001 slave bfd612e3f53efcd8d79c2cb9a012807d66a15473 0 1492141670958 2 connected
11d01d53e04ff629ebab359d939e472ac7804da2 192.168.16.137:7000 master - 0 1492141666946 3 connected 8192-12287
23a03ea8f1f09254fa960545ff33a5bd559f21bc 192.168.16.138:7001 slave c31ba3dad768b34f21b543608e5864ad40ea720c 0 1492141667853 1 connected
0cbd794de620887d68518c2a169ed8d20a00eda8 192.168.16.137:7001 slave 0301c952a8bbdd7ab7ef66e60daad506b813fc13 0 1492141665944 4 connected
43a0f168a5a31156210513671369baf166eb280b 192.168.16.136:7001 slave 11d01d53e04ff629ebab359d939e472ac7804da2 0 1492141667953 3 connected
0301c952a8bbdd7ab7ef66e60daad506b813fc13 192.168.16.138:7000 master - 0 1492141669955 4 connected 12288-16383
bfd612e3f53efcd8d79c2cb9a012807d66a15473 192.168.16.136:7000 master - 0 1492141668953 2 connected 4096-8191
c31ba3dad768b34f21b543608e5864ad40ea720c 192.168.16.135:7000 myself,master - 0 0 1 connected 0-4095

命令描述
–slave表示添加的是从节点
–master-idc31ba3dad768b34f21b543608e5864ad40ea720c , 主节点id
192.168.16.138:7001新节点
192.168.16.135:7000集群中任意一个旧节点

测试

未完成....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Redis Cluster