Linux上进行redis集群搭建(阿里云服务器实际搭建成功)

Redis集群搭建

阿里云服务器实战搭建成功,采用3台机器(3个主节点),每台机器2个节点(一个主节点,一个备份节点),共计6节点。

使用redis版本:4.0.11

服务器:centos

相关数据

主机外网ip 内网地址 端口 备注
out-ip1 inner-ip1 6379,6380 每台机器两个节点,端口分别是6379,6380
out-ip2 inner-ip2 6379,6380 每台机器两个节点,端口分别是6379,6380
out-ip3 inner-ip3 6379,6380 每台机器两个节点,端口分别是6379,6380

redis密码:pwd2019

注意:所有的节点的密码要设置统一。

1 搭建单机版redis

首先搭建一个单机版的redis,并保证其可用。

此处不详述搭建过程,可参考:[Linux安装搭建redis][https://blog.csdn.net/weixin_43566469/article/details/84889639]

2 创建目录和基本节点

# 1. 创建redis集群目录
mkdir /usr/local/redis-cluster
# 2. 复制redis单机版,因本次搭建每台机器上两个节点,因此复制2份
cp -r /usr/local/redis /usr/local/redis-cluster/redis01
cp -r /usr/local/redis /usr/local/redis-cluster/redis02
# 3. 删除复制后的redis中的数据文件 dump.rdb或appendonly.aof。集群一旦搭建,会规划好所有的slot和redis节点的关系. 原有的数据无法实现CRC16算法计算. 会导致集群搭建失败.
cd /usr/local/redis-cluster/redis01
rm -rvf dump.rdb appendonly.aof
cd /usr/local/redis-cluster/redis02
rm -rvf dump.rdb appendonly.aof
# 4. 修改配置文件redis.conf
vi redis.conf
	# 后台启动
	daemonize yes
	# 如果需要外网访问集群。需将bind 127.0.0.1 这一行注释掉,如下
	# bind 127.0.0.1
	# 设置端口,6379或6380
	port 6379
	# 设置访问主节点的密码
	masterauth pwd2019
	# 设置密码
	requirepass pwd2019
	# 开启集群
	cluster-enabled yes
	# 节点配置文件
	cluster-config-file nodes-6379.conf
	# 节点超时时间
	cluster-node-timeout 15000

3台机器上均执行以上操作,就搭好了6个redis节点。配置文件可以写好一份后,进行复制也是也可以的,不过要注意端口号可能要更改一下。

3 安装ruby和gem包

ruby是一个脚本语言. 在redis的集群cluster中,集群的节点之间,是使用ruby脚本实现数据通讯的. redis的集群需要ruby提供数据访问.

yum install -y ruby

因为使用的是redis的较高版本,需要手动安装rvm,然后再安装gem。步骤如下:

# 先获取一个签名认证服务
gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
# 安装rvm
curl -sSL https://get.rvm.io | bash -s stable
# 查看rvm库中已知的ruby版本
rvm list known
# 安装一个ruby版本
rvm install 2.5.5
# 设置使用默认版本
rvm use 2.5.5 --default
# 安装gem
gem install redis

4 开启端口防火墙

注意:如果redis集群需要在外网访问,需要开放端口(如果只在内网访问,忽略该步骤),执行以下操作:

此处使用了6379,6380端口。但实际上,redis还需要16379和16380端口作为总线端口。规则是redis所使用的端口+10000。

因此需要开放6379,6380,16379,16380四个端口。

如果是阿里云服务器,就需要在安全组上开放这些端口。

5 集群脚本准备

以下工作只需一台机器上执行即可。

# 找到已编译的源码包下的src目录的redis-trib.rb脚本文件
cd /usr/local/redis-4.0.11/src
# 复制脚本到redis集群工作目录
cp redis-trib.rb /usr/local/redis-cluster
# 修改集群脚本配置,先找到client.rb,这个文件在使用的ruby下的gem包下
find /usr/ -name 'client.rb'
# 如果发现很多,注意一个是ruby版本,比如这里使用的是2.5.5,一个是gems后面是redis
# 比如这里应该是这个文件
/usr/local/rvm/gems/ruby-2.5.5/gems/redis-4.1.2/lib/redis/client.rb
# 修改这个文件
vi /usr/local/rvm/gems/ruby-2.5.5/gems/redis-4.1.2/lib/redis/client.rb
# 找到password一行,修改为正确的密码,然后保存退出
DEFAULTS = {
      :url => lambda { ENV["REDIS_URL"] },
      :scheme => "redis",
      :host => "127.0.0.1",
      :port => 6379,
      :path => nil,
      :timeout => 5.0,
      :password => "pwd2019",
      :db => 0,
      :driver => nil,
      :id => nil,
      :tcp_keepalive => 0,
      :reconnect_attempts => 1,
      :reconnect_delay => 0,
      :reconnect_delay_max => 0.5,
      :inherit_socket => false
    }


7 启动redis所有节点的

# 启动节点1
cd /usr/local/redis-cluster/redis01
./bin/redis-server redis.conf
# 启动节点2
cd /usr/local/redis-cluster/redis02
./bin/redis-server redis.conf

可以将上述命令写成一个脚本文件,方便执行

# 创建start-all.sh脚本文件
vi start-all.sh

#!/bin/bash
cd /usr/local/redis-cluster/redis01
./bin/redis-server redis.conf
cd /usr/local/redis-cluster/redis02
./bin/redis-server redis.conf

# 添加执行权限
chmod u+x start-all.sh

8 创建集群

保证所有的redis集群节点都已启动

然后在集群脚本准备好的机器(步骤5)上执行以下命令

# 使用外网ip创建集群,这样外网才能正常访问。如果不需要外网访问,可以使用内网ip创建集群
cd /usr/local/redis-cluster
./redis-trib.rb create --replicas 1 out-ip1:6379 out-ip2:6379 out-ip3:6379 out-ip3:6380 out-ip1:6380  out-ip2:6380

命令解析:

create - 创建集群

–replicas 1 - 定义备份机数量, 每个主机节点对应一个备份机.

ip:port- 提供redis应用所在的物理位置和端口号.

互动提示,一定要输入yes. 其他任何输入,都代表取消配置.

一般的,前3个节点将成为主节点,后面3个将成为从节点。这里依次输入了ip1,ip2,ip3,ip3,ip1,ip2的顺序,使ip3成为ip1的从节点,ip1成为ip2的从节点,ip2成为ip3的从节点。避免主从节点在同一台机器上。任何一台集群宕机都能保证集群仍能正常工作。

你可能感兴趣的:(linux,架构广场)