redis主从和哨兵

2020/09/16 redis

redis主从和哨兵

1.redis 主  端口 6300  
  redis 从  端口 6301
  redis 从  端口 6302

主服务器修改
  port 6300
  pidfile /zyc/redis_sentry/zhucong/pid/redis_zhu.pid
  logfile "/zyc/redis_sentry/zhucong/log/redis_zhu.log" 
  dir /zyc/redis_sentry/zhucong/dir/zhu

从服务器修改
  port 6301
  pidfile /zyc/redis_sentry/zhucong/pid/redis_cong_1.pid
  logfile "/zyc/redis_sentry/zhucong/log/redis_cong_1.log" 
  dir /zyc/redis_sentry/zhucong/dir/cong_1
  slaveof 127.0.0.1 6300

  port 6302
  pidfile /zyc/redis_sentry/zhucong/pid/redis_cong_2.pid
  logfile "/zyc/redis_sentry/zhucong/log/redis_cong_2.log" 
  dir /zyc/redis_sentry/zhucong/dir/cong_2
  slaveof 127.0.0.1 6300



启动
/www/server/redis/src/redis-server  /zyc/redis_sentry/zhucong/conf/redis_zhu.conf &
/www/server/redis/src/redis-server  /zyc/redis_sentry/zhucong/conf/redis_cong_1.conf &
/www/server/redis/src/redis-server  /zyc/redis_sentry/zhucong/conf/redis_cong_2.conf &


2.哨兵的作用的主服务器down 掉以后 ,从服务器变为主服务器  很大程度保证可用性
哨兵服务器
pidfile /zyc/redis_sentry/shaobing/pid/shaobing1.pid
后面的1 代码一个哨兵  mymaster  随便命名   127.0.0.1  6300  主服务器名称和端口
sentinel monitor mymaster 127.0.0.1 6300 1
先启动哨兵再起动主从 才生效    
/www/server/redis/src/redis-sentinel  /zyc/redis_sentry/shaobing/conf/sentinel_1.conf &

	
<?php
//初始化redis对象
$redis = new Redis();
//连接sentinel服务 host为ip,port为端口,哨兵的ip和端口号  随便一个哨兵
$redis->connect( "127.0.0.1", "26379");
	
//獲取主庫列表及其狀態資訊  不好使用不知道为什么
$result = $redis->rawCommand('SENTINEL', 'masters');
	
//master_name应该由运维告知(也可以由上一步的信息中获取 配置文件)
$master_name="mymaster";  //哨兵的配置文件
$result = $redis->rawCommand('SENTINEL', 'master', $master_name);  //获取主服务器信息
$zhu= ['ip'=>$result[3], 'port'=>$result[5]];
	
//根据所配置的主库redis名称获取其对应从库列表及其信息
$result = $redis->rawCommand('SENTINEL', 'slaves', $master_name);  //获取多个从服务器信息
$slaves = [];
	
foreach ($result as $val)
{
	 $slaves[] = ['ip'=>$val[3], 'port'=>$val[5]];
}
	
$data['zhu']=$zhu;
$data['cong']=$slaves;
//echo "<pre>";print_r($data);
	
//获取特定名称的redis主库地址
$result = $redis->rawCommand('SENTINEL', 'get-master-addr-by-name', $master_name);
//以上部分可以获取到主库的ip和对应端口,程序可以直接像链接单台redis一样链接操作使用
	
echo "<pre>";print_r($result);

Search

    Table of Contents