安装环境:
CentOS-7-x86_64-DVD-1804
win7系统
redis 4.0.14
redis-3.3.0.gem
ruby-2.3.1.tar
rubygems-2.7.6
tcl8.6.6-src.tar
集群模式: 3主3从集群模式
因为是搭建3主3从的集群,所以首先要做到集群之间的时钟同步。
1)准备3台服务器
3台服务器:【192.168.223.100】,【192.168.223.101】,【192.168.223.102】
2 )准备工作
三个节点都需要执行
首先安装ntp
# yum install ntp
# systemctl start ntpd.service
设置开机自启动
# systemctl enable ntpd.service
3 ) ntp服务端设置
第一台服务器192.168.223.100,作为ntpserver,将他设置为同步外网时间(ntpd服务开启默认就同步了)。
但是得设置允许内网网段可以连接它,将它作为内网的时间同步服务器,所以需要一个简单配置。
修改/etc/ntp.conf文件,添加如下信息,表示允许223网段来同步此服务器
# vi /etc/ntp.conf
# restrict 192.168.223.0 mask 255.255.255.0 #添加此行
设置后,重启ntpd服务,用ntpstat来检查效果【大概几秒钟就可以看到效果】
# systemctl restart ntpd
# ntpstat
# vi /etc/ntp.conf
设置后,重启ntpd服务,用ntpstat来检查效果【大概需要等十五分钟,看到效果】
# systemctl restart ntpd
# ntpstat
1)在/opt下创建software文件夹
解决中文乱码以及背景 Options ->Session Options
把安装redis所需要的软件放入/opt/software文件夹下,三台都需要如此操作:
下载ruby-2.3.1并上传至服务器
# https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
下载rubygems-2.7.6.tgz并上传至服务器
# https://rubygems.org/rubygems/rubygems-2.7.6.tgz
下载redis的gem并上传至服务器
# https://rubygems.org/downloads/redis-3.3.0.gem
下载tcl8并上传至服务器
# https://sourceforge.net/projects/tcl/files/Tcl/8.6.6/
下载redis3.2.0并上传至服务器
# http://download.redis.io/releases/redis-4.0.14.tar.gz
需要yum install -y zlib zlib-devel openssl openssl-devel gcc gcc-c++
支持
第一步,安装ruby
解压tar包
# tar zxf ruby-2.3.1.tar.gz
# cd ruby-2.3.1
配置并编译
# ./configure --prefix=/usr/local/ruby
# make && make install
配置环境变量
#vi /etc/profile
# PATH=$PATH:/usr/local/ruby/bin
#使文件生效
# source /etc/profile
# ruby -v
第二步,安装 rubygems
解压到/opt目录
# tar -zxf rubygems-2.7.6.tgz -C /opt
# cd /opt/rubygems-2.7.6
配置rubygem
$ ruby setup.rb #会将rubygems安装至上一步ruby的安装目录的lib目录下
#配置环境变量,使其支持gem命令
vi /etc/profile
在末尾加上 PATH=$PATH:/opt/rubygems-2.7.6/bin
# source /etc/profile
验证gem是否可以使用
# gem -v
# gem install -l redis-3.3.0.gem
# gem list redis
# tar zxf tcl8.6.6-src.tar.gz
# cd tcl8.6.6/unix
#配置并编译
# ./configure --prefix=/usr/local/tcl
# make && make install
# make install-private-headers
配置环境软连接及环境变量使其支持tcl
# ln -v -sf tclsh8.6 /usr/local/tcl/bin/tclsh
# chmod -v 755 /usr/local/tcl/lib/libtcl8.6.so
编辑文件
vi /etc/profile
在文件末尾添加 PATH=$PATH:/usr/local/tcl/bin
$ source /etc/profile
第五步,安装redis
# tar zxf redis-3.2.0.tar.gz -C /opt
# cd /opt/redis-3.2.0/src
make 安装redis(如果不修改Makefile文件则默认安装/usr/local/bin下)
# make
# make install
安装完成后会自动在 /usr/local/bin
下生成redis运行文件
#将集群控制脚本复制到 /usr/local/bin
下
# cp /opt/redis-4.0.14/src/redis-trib.rb /usr/local/bin
第六步,编写redis配置文件并启动实例
1、在三台主机创建redis-cluster目录
192.168.223.100
# mkdir -p /etc/redis-cluster/{7000,7001}
192.168.223.101
# mkdir -p /etc/redis-cluster/{7002,7003}
192.168.223.102
# mkdir -p /etc/redis-cluster/{7004,7005}
2、对应各个实例创建redis.conf配置文件
192.168.223.100
# cd /etc/redis-cluster/7000
# touch redis.conf
# cat redis.conf
#redis后台运行
daemonize yes
#pidfile文件对应目录
pidfile /var/run/redis_7000.pid
#指定端口
port 7000
#绑定地址
bind 192.168.223.100
#开启集群 把注释#去掉
cluster-enabled yes
#集群的配置 配置文件首次启动会自动生成
cluster-config-file nodes_7000.conf
#请求超时 设置5秒够了
cluster-node-timeout 5000
#aof日志开启 有需要就开启,它会每次写操作都记录一条日志
appendonly yes
注:同样的操作需要进行6次,过程中替换端口和ip地址。
# redis-server /etc/redis-cluster/7000/redis.conf
# redis-server /etc/redis-cluster/7001/redis.conf
# ps -ef | grep redis-server
#
$ vim /etc/init.d/redis-7000
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
export PATH=$PATH:/usr/local/bin/
REDISPORT=7000
PIDFILE=/var/run/redis_$REDISPORT.pid
CONF="/etc/redis-cluster/$REDISPORT/redis.conf"
case "$1" in
status)
if [ ! -f $PIDFILE ]
then
echo "Redis stopped..."
else
ps -ef | grep redis-server | grep $REDISPORT
fi
;;
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
redis-server $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
ps -ef | grep redis-server | grep $REDISPORT | awk '{print $2}' | xargs kill
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Please use start or stop as first argument"
;;
esac
# chkconfig --add redis-7000
# chkconfig redis-7000 on
同样的过程需要操作6次,分别是7000-7005
六、启动rediscluster集群
1、使用ruby自带的redis-trib.rb命令在192.168.223.100上构建
首先要关闭防火墙:
/opt/redis-4.0.14/src/redis-trib.rb create --replicas 1 192.168.223.100:7000 192.168.223.100:7001 192.168.223.101:7002 192.168.223.101:7003 192.168.223.102:7004 192.168.223.102:7005
如果报错 查看虚拟机上的700n端口是否在运行
如果报错 查看虚拟机上的700n端口是否在运行 :