1 单机
1.1 安装tcl
1.1.1 下载tcl安装包
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
1.1.2 解压
tar -xzvf tcl8.6.1-src.tar.gz
1.1.3 移动文件夹到/usr/local
目录
mv tcl8.6.1 /usr/local/tcl8.6.1
1.1.4 进入到unix
目录
cd /usr/local/tcl8.6.1/unix/
1.1.5 配置
./configure
1.1.6 编译安装
make && make install
1.2 安装redis
1.2.1 下载安装包
略
1.2.2 解压安装包
tar -zxvf redis-3.2.8.tar.gz
1.2.3 移动文件夹到/usr/local
目录
mv redis-3.2.8 /usr/local/redis-3.2.8
1.2.4 进入redis目录
cd /usr/local/redis-3.2.8
1.2.5 编译安装
make && make test && make install
1.3 配置
1.3.1 复制redis_init_script
脚本并重命名和修改权限
cp /usr/local/redis-3.2.8/utils/redis_init_script /etc/init.d/redis_6379
chmod 777 /etc/init.d/redis_6379
1.3.2 修改redis_6379中的端口号为6379
vi /etc/init.d/redis_6379
修改如下配置:
REDISPORT=6379
1.3.3 创建两个目录
/etc/redis(存放redis的配置文件)
/var/redis/6379(存放redis的持久化文件)
mkdir /etc/redis
mkdir /var/redis/6379 -p
1.3.4 复制并重命名redis.conf
文件
cp /usr/local/redis-3.2.8/redis.conf /etc/redis/6379.conf
1.3.5 修改redis.conf中的配置
vi /etc/redis/6379.conf
daemonize yes //让redis以daemon进程运行
pidfile /var/run/redis_6379.pid //设置redis的pid文件位置
port 6379 //设置redis的监听端口号
dir /var/redis/6379 //设置持久化文件的存储位置
1.3.6 启动redis
/etc/init.d/redis_6379 start
1.3.7 确认redis是否启动
ps -ef | grep redis
1.3.8 让redis跟随系统启动自动启动
第一步:
在redis_6379脚本中最上面加入以下两行注释
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
vi /etc/init.d/redis_6379
第二步:
设置脚本开机启动
chkconfig redis_6379 on
2 配置一主一从读写分离架构
2.1 安装两台单机redis
略:参考1
2.2 配置从节点
2.2.1 修改redis配置文件
vi /etc/redis/6379.conf
修改以下配置:
slaveof once4 6379 ## 配置主节点IP和端口号
slave-read-only yes ## 配置从节点只进行读操作
masterauth hadoop ## 配置主节点密码,如果主节点没有设置密码认证此步可以省略
bind once5 ## 指定绑定的本机的IP,单机模式不需要,集群模式必须指定
2.3 配置主节点
2.3.1 修改redis配置文件
vi /etc/redis/6379.conf
修改以下配置:
requirepass hadoop ## 配置主节点密码
bind once4 ## 指定绑定的本机的IP,单机模式不需要,集群模式必须指定
2.4 先启动(或重启)主节点,再启动(或重启)从节点
redis-cli -a hadoop shutdown ## 带密码停止
redis-cli shutdown ## 不带密码停止
/etc/init.d/redis_6379 stop ## 不带密码停止
/etc/init.d/redis_6379 start ## 启动
2.5 查看主从节点信息
2.5.1 连接redis-cli
/usr/local/bin/redis-cli [-h host] [-p port] [-a password]
## -h 省略默认为本机 -p省略默认为6379 -a省略默认为没有密码
使用info命令查看状态:
info
从节点得到以下结果:
# Replication
role:slave
master_host:once4
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:57
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
主节点得到以下结果:
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.247.5,port=6379,state=online,offset=99,lag=0
master_repl_offset:99
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:98
显示以上信息代表主从架构搭建完成
3 为一主一从读写分离架构配置哨兵
3.1 安装另外一台redis
安装另外一台redis once6,只需要安装,不需要启动,这台redis只是作为哨兵服务器使用–因为哨兵至少有3台服务器
3.2 在每台服务器上配置哨兵
3.2.1 在每台服务器上创建所需文件夹
mkdir /etc/sentinel ## 哨兵配置目录
mkdir -p /var/sentinel/5000 ## 哨兵运行目录
mkdir -p /var/sentinel/log/5000 ## 哨兵日志目录
3.2.2 复制每台服务器的配置文件到指定位置
cp /usr/local/redis-3.2.8/sentinel.conf /etc/sentinel/5000.conf
3.2.3 修改每台服务器上的配置文件5000.conf
port 5000 ## 哨兵端口号
bind once4 ## 哨兵绑定的本机IP
dir /var/sentinel/5000 ## 哨兵运行目录
sentinel monitor mymaster once4 6379 2 ## 主节点IP和端口号配置、quorum的配置(最后一个2)
sentinel auth-pass mymaster hadoop ## 可选,如果master没有密码可以不设置
sentinel down-after-milliseconds mymaster 30000 ## 每个哨兵sdown的超时时间
sentinel failover-timeout mymaster 60000 ## 执行故障转移的timeout超时时长
sentinel parallel-syncs mymaster 1 ## slave同步新的master的并行数量,数字越低,花费的时间越多
daemonize yes ## 后台运行, 此配置原配置文件没有,需自己添加
logfile /var/sentinel/log/5000/sentinel.log ## 运行日志位置, 此配置原配置文件没有,需自己添加
3.2.4 启动哨兵进程
在once4、once5、once6三台机器上,分别启动三个哨兵进程,组成一个集群
有以下两种方式:
redis-sentinel /etc/sentinel/5000.conf ## 推荐,这种方式启动和redis实例没有任何关系
redis-server /etc/sentinel/5000.conf --sentinel
备注:以下方式关闭哨兵的命令:
redis-cli -h once4 -p 5000 shutdown
3.3 检查哨兵状态
redis-cli -h once4 -p 5000 -a hadoop
sentinel master mymaster //查看master的状态
SENTINEL slaves mymaster //查看salves的状态
SENTINEL sentinels mymaster //查看哨兵的状态
SENTINEL get-master-addr-by-name mymaster //获取当前master的地址
info sentinel //查看哨兵信息
4 哨兵的操作
4.1 添加一个哨兵节点
像3中讲述的,修改配置文件,启动哨兵即可
4.2 删除一个哨兵节点
- 停止sentinal进程
- 在所有sentinal上执行
SENTINEL RESET *
操作,清理所有的master状态 - 在所有sentinal上执行
SENTINEL MASTER mastername
操作,查看所有sentinal对数量是否达成了一致、
4.3 slave的永久下线
- 停止要下线的slave
- 在所有的哨兵上面执行
SENTINEL RESET mastername
操作,让master摘除某个已经下线的slave
4.4 设置slave切换为Master的优先级
slave-priority,值越小优先级越高