redis集群环境搭建

简单步骤:
安装完redis单机版后,操作如下步骤:
使用一台服务器安装redis集群

第一步:创建文件夹目录:
(1)    mkdir -p /usr/local/redis-4.0/cluster/7001(创建7001到7006,存放配置文件)
(2)    mkdir /usr/local/redis-4.0/data(用来存放redis数据文件)

第二步:拷贝配置文件
(1)    cp  /usr/local/redis-4.0/redis.conf /usr/local/redis-4.0/cluster/7001
(2)    mv /usr/local/redis-4.0/cluster/7001/redis.conf /usr/local/redis-4.0/cluster/7001/redis-7001.conf

第三步:修改配置文件
vi /usr/local/redis-4.0/cluster/7001/redis-7001.conf
port 700*(分别对每个机器的端口号进行设置)
bind 192.168.1.150(必须要绑定当前机器的ip,不然会无限悲剧下去哇..深坑勿入!!!)
dir /usr/local/ redis-4.0/cluster/700*/(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据,深坑勿入!!!)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes-700*.conf(这里700x最好和port对应上)
cluster-node-timeout 5000
appendonly yes
pidfile /var/run/redis_700*.pid
logfile /usr/local/redis-4.0/data/700*/redis.log
daemonize yes


第四步:安装ruby
(1)yum install ruby
(2)yum install rubygems
(3)gem install redis (安装redis和ruby的接口)

第五步:分别启动6个redis实例,然后检查是否启动成功
(1)/usr/local/redis-4.0/bin/redis-server /usr/local/redis-4.0/cluster/redis-700*.conf 
(2)ps -el | grep redis 查看是否启动成功


第六步:创建集群,执行redis-trib.rb
(1)cd /usr/local/redis-4.0/bin/redis-trib.rb(从解压编译的目录/usr/local/redis-4.0.9/src拷贝)
(2)./redis-trib.rb  create --replicas 1 192.168.1.150:7001 192.168.1.150:7002 192.168.1.150:7003 192.168.1.150:7004 192.168.1.150:7005 192.168.1.150:7006
第七步:到此为止我们集群搭建成功!进行验证:
(1)连接任意一个客户端即可:./redis-cli -c -h -p (-c表示集群模式,指定ip地址和端口号)如:/usr/local/redis/bin/redis-cli -c -h 192.168.1.171 -p 700*
(2)进行验证:cluster info(查看集群信息)、cluster nodes(查看节点列表)
(3)进行数据操作验证
(4)关闭集群则需要逐个进行关闭,使用命令:usr/local/redis/bin/redis-cli -c -h 192.168.1.171 -p 700* shutdown

第八步:(补充)
友情提示:当出现集群无法启动时,删除临时的数据文件,再次重新启动每一个redis服务,然后重新构造集群环境。
 

 

 

 

一、Redis集群安装配置详细步骤

IP地址:192.168.1.150

安装路径:/user/local/redis4.0.9

192.168.1.150:7001

192.168.1.150:7004

192.168.1.150:7002

192.168.1.150:7005

192.168.1.150:7003

192.168.1.150:7006

1、解压文件

tar -zxvf redis-4.0.9.tar.gz -C /usr/local/

 

2、安装gcc依赖

执行gcc -v查看是否有安装gcc,如果没有安装,执行命令sudo yum install -y gcc

 

3、编译安装

cd /usr/local/redis-4.0.9

make

cd /usr/local/redis-4.0.9/src

make install PREFIX=/usr/local/redis-4.0

 

 

4、创建目录结构

cp /usr/local/redis-4.0.9/src/redis-trib.rb /usr/local/redis-4.0/bin/ #拷贝执行集群的文件

mkdir -p /usr/local/redis-4.0/cluster #集群配置文件目录

mkdir -p /usr/local/redis-4.0/data/7001 #创建数据、日志保存目录6个,7001至7006

 

5、配置redis.conf文件

cp /usr/local/redis-4.0.9/redis.conf /usr/local/redis-4.0/cluster/

mv redis.conf redis-7001.conf #重命名文件

/usr/local/redis-4.0/cluster/redis-7001.conf /usr/local/redis-4.0/cluster/redis-700*.conf #(拷贝六个节点配置文件)。

vim redis-7001.conf 编辑配置文件

修改内容:

#该节点端口号
port 700*

#(绑定本机内网地址)
bind 172.21.0.4

#redis数据保存路径
dir /usr/local/redis-4.0/data/700*/

#是否开启集群
cluster-enabled yes

#集群节点配置文件,程序客户端连接时从该配置文件中获取ip,如供外网访问,
#该文件中的IP地址是内网地址的话需要改成外网地址客户端才能连接得上
cluster-config-file nodes-700*.conf

#集群节点的通信时间
cluster-node-timeout 5000

#开启aof方式持久化
appendonly yes

#日志文件路径
logfile "/usr/local/redis-4.0/data/700*/redis.log"

pidfile /var/run/redis_7001.pid

#线程后台启动
daemonize yes

6、安装ruby

yum -y install ruby
yum -y install rubygems
gem install redis #(安装redis和ruby的接口)

CentOS7 yum库中ruby的版本支持到 2.0.0,可gem 安装redis需要最低是2.2.2,采用rvm来更新ruby:

(1)安装RVM

curl -L get.rvm.io | bash -s stable

执行:

curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
ccurl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
find / -name rvm -print

https://i-blog.csdnimg.cn/blog_migrate/7fafebcf05c66a5167dba6694af7d8d0.png

需要执行的命令如下:

curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -L get.rvm.io | bash -s stable

使刚安装的rvm立即生效:

source /usr/local/rvm/scripts/rvm

查看rvm库中ruby版本:

rvm list known

(2)安装一个ruby版本

rvm install 2.4.1

使用一个ruby版本

rvm use 2.4.1

设置默认版本

rvm use 2.4.1 –default

卸载一个已知版本

rvm remove 2.0.0

查看ruby版本:

ruby --version

重新安装redis:

gem install redis

 

7、分别启动6个redis实例,然后检查是否启动成功

#(起动6个节点,获取做个shell脚本文件批量启动)
/usr/local/redis-4.0/bin/redis-server /usr/local/redis-4.0/cluster/redis-700*.conf

 

 

8、打开防火墙端口(创建集群前开放端口)

#添加端口:
firewall-cmd --permanent --add-port=7001/tcp(7001至7006)

#添加端口:
firewall-cmd --permanent --add-port=17001/tcp(17001至17006)

#重启防火墙:
firewall-cmd --reload

注意:

redis集群总线端口为redis客户端端口加上10000,比如说你的redis 6379端口为客户端通讯端口,那么16379端口为集群总线端口,所以开放防火墙端口的时候也要对其开放。

更多关于防火墙的操作:

#防火墙启用状态:
firewall-cmd –state

#查看防火墙是否已开发:
firewall-cmd --query-port=9876/tcp

#查看所有打开的端口: 
firewall-cmd --list-ports(或后面是-all)

#启动防火墙:
service firewalld start

#关闭防火墙:
service firewalld stop

#删除端口:
firewall-cmd --permanent --remove-port=17006/tcp

 

9、云服务器安全组开放端口,线上可以指定IP地址(创建集群前开放端口)

来源:124.64.236.185(指定对某一外网ip或全开放0.0.0.0/0)

协议端口:TCP:7001,7002,7003,7004,7005,7006,17001,17002,17003,17004,17005,17006

 

10、创建集群,给节点分片(槽)

# --replicas 1 表示1主1从,前三个节点为主节点,后三个为对应前三个主节点的从节点
# --replicas 1 表示1主2从,前三个节点为主节点,后六个节点为从节点,分两组,三个一组,
#一一对应主节点。
/usr/local/redis-4.0/bin/redis-trib.rb create --replicas 1 192.168.1.150:7001 192.168.1.150:7002 192.168.1.150:7003 192.168.1.150:7004 192.168.1.150:7005 192.168.1.150:7006

参照 以上6、安装ruby

然后再次执行(ip地址使用外网IP地址,要不然程序使用内网地址操作失败):

/usr/local/redis-4.0/bin/redis-trib.rb create --replicas 1 192.168.1.150:7001 192.168.1.150:7002 192.168.1.150:7003 192.168.1.150:7004 192.168.1.150:7005 192.168.1.150:7006

 

注意:当出现一直提示Waiting for the cluster to join....时,需要开放连接redis客户端口和集群总线端口参考上面开放端口内容。

 

集群连接找的是nodes-700*.conf文件中的ip地址,如果使用内网地址创建集群分片则,该文件记录的是内网地址,同时程序取到的也是内网地址,这样操作就会报错:

 

 

检查集群情况:

/usr/local/redis-4.0/bin/redis-trib.rb check 192.168.1.150:7001

 

11、验证

/usr/local/redis-4.0/bin/redis-cli -c -h 192.168.1.150 -p 7001

cluster info

cluster nodes

 

cluster meet 192.168.1.150 7003

 

12、编写启动、关闭shell脚本

启动redis集群命令脚本:

vim start-all.sh

/usr/local/redis-4.0/bin/redis-server /usr/local/redis-4.0/cluster/redis-7001.conf
/usr/local/redis-4.0/bin/redis-server /usr/local/redis-4.0/cluster/redis-7002.conf
/usr/local/redis-4.0/bin/redis-server /usr/local/redis-4.0/cluster/redis-7003.conf
/usr/local/redis-4.0/bin/redis-server /usr/local/redis-4.0/cluster/redis-7004.conf
/usr/local/redis-4.0/bin/redis-server /usr/local/redis-4.0/cluster/redis-7005.conf
/usr/local/redis-4.0/bin/redis-server /usr/local/redis-4.0/cluster/redis-7006.conf

 

停用集群命令脚本:

vim shutdown-all.sh

/usr/local/redis-4.0/bin/redis-cli -c -h 192.168.1.150 -p 7001 shutdown
/usr/local/redis-4.0/bin/redis-cli -c -h 192.168.1.150 -p 7002 shutdown
/usr/local/redis-4.0/bin/redis-cli -c -h 192.168.1.150 -p 7003 shutdown
/usr/local/redis-4.0/bin/redis-cli -c -h 192.168.1.150 -p 7004 shutdown
/usr/local/redis-4.0/bin/redis-cli -c -h 192.168.1.150 -p 7005 shutdown
/usr/local/redis-4.0/bin/redis-cli -c -h 192.168.1.150 -p 7006 shutdown

设置权限启动

chmod 777 start-all.sh

chmod 777 shutdown -all.sh

这样就可以使用./start-all.sh、shutdown -all.sh启动和关闭了

 

13、Vim字符替换使用

vim 字符串全部替换 格式:

#str2全部替换str1字符
:1,$/str1/str2/g

#光标所在行中str2替换str1字符
: s/str1/str2/g

如全部替换:

:1,$ s/172.21.0.4/192.168.1.150/g

14、Java连接集群测试

public class RedisClusterTest {

    public static void main(String[] args) throws IOException {
        JedisCluster cluster =null;
        try{
            Set<HostAndPort> nodes = new HashSet<>();
            nodes.add(new HostAndPort("192.168.1.150", 7001));
            nodes.add(new HostAndPort("192.168.1.150", 7002));
            nodes.add(new HostAndPort("192.168.1.150", 7003));
            nodes.add(new HostAndPort("192.168.1.150", 7004));
            nodes.add(new HostAndPort("192.168.1.150", 7005));
            nodes.add(new HostAndPort("192.168.1.150", 7006));

            JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
            jedisPoolConfig.setMaxTotal(10); //最大连接数
            jedisPoolConfig.setMaxIdle(1);//最大空闲数
            jedisPoolConfig.setMaxWaitMillis(10*1000);//最大等待时间,超过该时间还未获取到连接,会抛出异常

            cluster = new JedisCluster(nodes, jedisPoolConfig);

            cluster.set("age", "18");
            System.out.println(cluster.get("age"));

        }finally {
            if(cluster != null){
                cluster.close();
            }

        }

    }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值