redis集群搭建
1,需要两台虚拟机 可以同为cs7 每台各弄三个节点
第一台服务器的ip为192.168.1.150
第二台服务器的ip为 192.168.1.106
2,每台服务器先搭建redis开发环境
1> 在根目录创建/alidata/webroot/redis
2> 然后执行命令下载tcl:wget http://downloads.sourceforge.net/tcl/tcl8.6.3-src.tar.gz
3> 然后解压tcl:tar -zxvf tcl8.6.3-src.tar.gz 并修改文件名字问tcl
4> 然后进入tcl/unix目录 cd /tcl/unix
5> 然后执行命令./configure
6> 然后使用make
7> 然后使用make install 最终可查看安装成功
8> 然后下载安装redis
9> 然后执行命令下载redis包:wget http://download.redis.io/releases/redis-3.0.5.tar.gz
10> 然后解压redis包:tar -zxvf redis.....tar.gz
11> 然后修改redis文件名称为redis mv redis-3.0.5.tar.gz redis
12> 然后进去到redis目录
13> 然后使用命令make
14> 然后进去到src目录 cd src/
15> 然后使用命令 make test 当make test执行完之后 执行make install
3,redis作为服务启动
1.vim /etc/init.d/redis
# Date 2015-12-10
# chkconfig: 2345 10 90
# description: Start and Stop redis
PATH=/usr/local/kencery/redis/src:/sbin:/usr/bin:/bin
REDISPORT=6379
EXEC=/usr/local/kencery/redis/src/redis-server
REDIS_CLI=/usr/local/kencery/redis/src/redis-cli
PIDFILE=/var/run/redis.pid
CONF="/usr/local/kencery/redis/redis.conf"
AUTH="1234"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed."
else
echo "Starting Redis server..."
$EXEC $CONF
fi
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [-f $PIDFILE ]
then
echo "$PIDFILE exists, process is not running."
else
PID=$(cat $PIDFILE)
echo "Stopping..."
$REDIS_CLI -p $REDISPORT SHUTDOWN
sleep 2
while [ -x $PIDFILE ]
do
echo "Waiting for Redis to shutdown..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
exit 1
esac
redis 脚本
2> chmod 755 /etc/init.d/redis
3> 尽量重启下服务器 service redis restart
4,上面两台服务器都已经安装好了redis, 现在请将redis/src/目录下面的redis-trib.rb
移动到 /usr/lcoal/bin/ 目录下
Mv redis-trib.rb /usr/local/bin 另一台服务器也是进行同样的操作移动
5, 由于下面要使用这个redis-tribb.rb这个命令 所以先下载能够执行rb
的这个工具
使用命令yum -y install ruby ruby-devel rubygems rpm-build 进行下载
然后使用命令gem install redis安装成功的效果图
6,创建节点
首先在第一台服务器的redis/目录下面创建redis_cluster 目录
然后创建名为7000 7001 7002的目录
Mkdir 7000
Mkdir 7001
Mkdir 7002
然后将redis/redis.conf 复制一份到7000 7001 和7002目录下面
cp redis.conf redis_cluster/7000
cp redis.conf redis_cluster/7001
cp redis.conf redis_cluster/7002
分别修改这三个文件:
首先修改7000的文件
Port 7000 端口号
Daemonize yes redis后台运行
Pidfile /var/run/redis_7000.pid pidfile对应 7000
Bind 192.168.1.150 本地ip
cluster-enabled yes 开启集群 去掉前面的#号
cluster-config-file nodes_7000.conf 集群的配置
cluster-node-timeout 15000 请求超时 15秒
appendonly yes aof日志开启
然后修改7001的文件
Port 7001端口号
Daemonize yes redis后台运行
Pidfile /var/run/redis_7001.pid pidfile对应 7001
Bind 192.168.1.150 本地ip
cluster-enabled yes 开启集群 去掉前面的#号
cluster-config-file nodes_7001.conf 集群的配置
cluster-node-timeout 15000 请求超时 15秒
appendonly yes aof日志开启
修改哪个文件 那么他的端口号就要与文件名对应 以此类推
在另一台服务器创建 7003 7004 7005目录 具体配置和上面一样
第一台服务器的启动效果图
第二服务器启动的效果图
然后cd到usr/local/bin目录下面 因为要使用redis-trib.rb
./redis-trib.rb create --replicas 1 192.168.1.150:7000 192.168.1.150:7001 192.168.1.150:7002 192.168.1.106:7003 192.168.1.106:7004 192.168.1.106:7005
然后会提示你输入yes
最后安装成功名
最后进行集群走据
在第一台服务器连接 7002端口的节点./redis-cli -h 192.168.1.150 -c -p 7002
在另一台服务器连接7005端口的节点./redis-cli -h 192.168.1.106 -c -p 7005
然后在7005执行命令 set hello world
然后在7002的里面去get hello 结果会出现world
最终集群搭建完毕!!!
Redis 集群会把数据存在一个 master 节点,然后在这个 master 和其对应的salve 之间进行数据同步。当读取数据时,也根据一致性哈希算法到对应的 master 节点获取数据。只有当一个master 挂掉之后,才会启动一个对应的 salve 节点,充当 master 。
需要注意的是:必须要3个或以上的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的一半时,整个集群就无法提供服务了。

浙公网安备 33010602011771号