1. 虚拟机克隆
使用VMware从装有Redis的虚拟机中克隆两台相同的虚拟机。
步骤:
(1)选中需要装有Redis的虚拟机,右击选择管理——》克隆
(2)
(3)
(4)
选择下边的单选按钮进行克隆,可以将源虚拟机的一些安装及配置都进行克隆。(5)
至此,虚拟机克隆就完成了。
2. 主从复制配置
主服务器:192.168.1.101
从服务器:192.168.1.102;192.168.1.104
分别配置两台从服务器的redis.conf文件
redis.conf文件目录:
/usr/local/redis/etc/redis.conf(我这是从解压后的redis安装包目录中拷贝到该目录的)
(1)在redis.conf文件中找到 slaveof<masterip> <masterport> 或 replicaof <masterip> <masterport>(旧版本的是前者,新版本的是后者,具体哪一版开始不一样的没追查)
(2)<masterip> <masterport>替换为对应的主服务器IP和主服务器的端口号。如果主服务器(redis)有设置密码的话,则需要配置密码(通过文件中的 masterauth 配置)
这时候,配置就基本完成了。然后分别对三台redis进行启动。
启动命令:
./redis-server /usr/local/redis/etc/redis.conf
执行完成后查看redis是否启动成功。
查看命令:
[root@localhost etc]# ps -ef|grep redis
root 4247 1 0 14:06 ? 00:00:01 ./redis-server *:6379
这就说明成功了。也可以通过查看端口来判定是否启动成功。
[root@localhost etc]# netstat -lntp|grep 6379
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 4247/./redis-server
tcp6 0 0 :::6379 :::* LISTEN 4247/./redis-server
然后通过
./redis-cli
命令进入redis里面。
验证:
在主服务器内,进行redis数据存储(set)后,在另外两台的redis服务器中,通过get命令可以获取到刚才存储的数据,但是从服务器里不能进行数据库写入操作,在从服务器内进行写入操作会报错。
主服务器内可以进行读写操作。
结果:
如果通过上边的验证后,从服务器不能通过get获取到主服务器存储的数据,则说明配置的有问题;能获取到主服务器存储的数据,证明主从复制配置成功。
3. 高可用配置
通过哨兵(sentinel)来进行Redis的高可用。
我这里用的其中一台从服务器进行的测试,可以单独使用一台或多台服务器进行sentinel配置高可用。
配置过程:
在redis(redis-5.0.5)的解压文件中,找到sentinel.conf
然后可以将该文件复制到 /usr/local/redis/etc 下进行编辑,也可以在解压的目录下进行编辑。
(1)打开 sentinel.conf 找到以下:
sentinel monitor mymaster 127.0.0.1 6379 2
#主节点 名称 IP 端口号 选举次数
将IP、端口号更改为对应的主服务器IP、端口号。
选举次数——》而将这个主实例判断为失效至少需要2个 Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行
(2)更改默认心跳检测时间,默认是30S
sentinel down-after-milliseconds mymaster 5000
(更改为5秒)
(3)
sentinel parallel-syncs mymaster 2
指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,
在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
(4)启动哨兵模式
./redis-server /usr/local/redis/etc/sentinel.conf --sentinel &
在master服务器上,通过redis-cli进入redis服务器内部,通过 info 命令可以查看到当前服务器角色名称及从节点的配置
因为我这里没启动另外两台从服务器,所以没有显示另外两台从节点信息。 如果是在 slave 服务器内部查看,角色会变成 slave,并在下边会有主节点的IP类的信息。
验证:
当把主服务器给停止之后,sentinel会在从服务器之间进行选举master节点,选举之后,可以通过info命令查看节点角色是否变更。
(可以将窗口复制一个,实时观察sentinel服务的日志,日志里会显示选举那台从节点为主节点。)
结果:
如果其中一台从节点变更为了主节点,则说明sentinel配置成功,如果从节点都没有变为主节点,说明sentinel配置失败。
总结:每天一小步,成长一大步o(* ̄︶ ̄*)o