Redis Cluster綜合實驗

Redis Cluster

簡介

redis cluster 是redis官方提供的分佈式解決方案,在3.0版本後推出的,有效地解決了redis分佈式的需求,當一個redis節點掛了可以快速的切換到另一個節點。當遇到單機內存、併發等瓶頸時,可以採用分佈式方案要解決問題。

在這裏插入圖片描述

實驗開始

先搭建mysql主從:

首先用yum安裝mysql服務

 yum -y install mysql mysql-devel mysql-server
主:

再配置文件裏添加:

vim /etc/my.cnf
server-id=1
log-bin=master-bin              #主主這個也必須都要寫
log-slave-updates=true       #假如做mysql主主必須兩臺都要寫
binlog-do-db=testdb    #這個是你需要同步的庫 這兩步主從都一樣
binlog-ignore-db=mysql  #這個是你絕對不能授權同步的庫  

這個testdb庫,主從都要先有庫纔可以

然後授權步驟:

給主mysql服務器授權

grant replication slave on *.* to 'slave'@'192.168.1.%' identified by '123.com';

這句話是說由服務器擬定一個用戶和和密碼等下從服務器也用戶這個登陸

flush privileges;
show master status;

這個命令是給一個匹配碼之類的東西,從服務器要寫上去才能和主建立連接
在這裏插入圖片描述

從:

修改my.cnf配置文件

vim  /etc/my.cnf

添加:

server-id=2
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index

重啓MySQL

service mysqld restart

進入MySQL

mysql -u root -p
change master to master_host='192.168.1.1',master_user='slave',master_password='123.com',master_log_file='master-bin.000002',master_log_pos=336;
start slave;
show slave status\G

看到兩個yes就成功了
創建測試數據:
在這裏插入圖片描述
然後把你主從分別授權一個遠程用戶方便讓php登錄:
在這裏插入圖片描述

安裝redis

解壓軟件包

tar -zxvf redis-4.0.6.tar.gz -C /usr/local

安裝redis

cd /usr/local/redis/
make && make install
echo "511" > /proc/sys/net/core/somaxconn
echo never > /sys/kernel/mm/transparent_hugepage/enabled

修改配置文件

vim /etc/sysctl.conf

添加:

vm.overcommit_memory = 1
sysctl –p
mkdir /usr/local/clustem  

用六臺redis做實驗,三臺主節點,三臺從節點,通過修改配置文件的端口號來實現一臺服務器上開六臺redis

cd /usr/local/clustem/
mkdir 7000 7001 7002 7003 7004 7005
cd /usr/local/redis/

vim redis.conf
`六個端口號的配置文件修改參數一致,修改完複製到每個端口目錄下面``
修改:

port 7000    #修改端口號
cluster-enabled yes		#開啓集羣
cluster-config-file nodes-7000.conf		#集羣節點配置文件
cluster-node-timeout 5000	#集羣節點超時時限
appendonly yes		#開啓持久化
appendfilename "appendonly-7000.aof"		#持久化文件
daemonize yes		#redis後臺運行
bind 192.168.1.50

這是給另外的redis複製主配置文件:

cp /usr/local/redis/redis.conf /usr/local/clustem/7000   
cp /usr/local/redis/redis.conf /usr/local/clustem/7001
cp /usr/local/redis/redis.conf /usr/local/clustem/7002
cp /usr/local/redis/redis.conf /usr/local/clustem/7003
cp /usr/local/redis/redis.conf /usr/local/clustem/7004
cp /usr/local/redis/redis.conf /usr/local/clustem/7005

這是分別修改這幾個配置文件裏的不同處:

sed -i "s/7000/7001/g" /usr/local/clustem/7001/redis.conf 
sed -i "s/7000/7002/g" /usr/local/clustem/7002/redis.conf 
sed -i "s/7000/7003/g" /usr/local/clustem/7003/redis.conf 
sed -i "s/7000/7004/g" /usr/local/clustem/7004/redis.conf 
sed -i "s/7000/7005/g" /usr/local/clustem/7005/redis.conf 
sed -i"s/127.0.0.1/192.168.1.4/g" /usr/local/clustem/7000/redis.conf     以此類推7001,7002……

然後分別進去主目錄開啓

cd /usr/local/clustem/7000
redis-server redis.conf

之後就是加入羣集

redis-cli -h 192.168.1.50 -p 7000    #用六臺中的一臺登錄

在這裏插入圖片描述
在之後就是分槽點,注意沒有槽點是不能存儲數據的

redis-cli -h 192.168.1.50 -p 7000 cluster addslots {0..5461}		#爲主節點分配槽點,一個集羣最少三個主節點,少於三個則集羣不可用,爲主節點分配完槽點之後,集羣生效,槽點取值範圍0~16383,建議每臺主節點之間平均分
redis-cli -h 192.168.1.50 -p 7001 cluster addslots {5462..10922}
redis-cli -h 192.168.1.50 -p 7002 cluster addslots {10923..16383}

剩下的就是沒有槽點的變成從服務器
首先要查看幾個有槽點的類似於mac的地址的東西

redis-cli -h 192.168.1.50 -p 7000  cluster nodes

在這裏插入圖片描述
最後把對應的mac 寫在

redis-cli -h 192.168.1.4 -p 7003 cluster replicate 9edba6261362d1c4ca2c9d68c83c7b482a737d66
redis-cli -h 192.168.1.4 -p 7004 cluster replicate 5ac9540405a0ee221ae90aea85a85d40c9596b54
redis-cli -h 192.168.1.4 -p 7005 cluster replicate 00f8bd781f80e7a8051711dabfb53663b01144eb

在這裏插入圖片描述

然後去lnmp環境裏面
安裝redis模塊
解壓源碼包

unzip /root/桌面/phpredis-master.zip 

phpize #需要autoconf包,如果沒有可以通過yum安裝
安裝軟件包

cd phpredis-master
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

修改php.ini

vim /usr/local/php/php.ini   #添加模塊

添加;

extension=redis.so

重啓php

service  php-fpm  restart

最後編輯

vim   /usr/local/nginx/html/index.php

添加:

<?php
$redis = new Redis();
$redis->connect("192.168.1.4",7000) or die("could not connect redis server");
$query = "select * from nihao.dang_an limit 2";  這個是你要讓redis讀取到的那個庫的那個表
for ($key = 1; $key <=2; $key++){
if (!$redis->get($key)){
$connect = mysql_connect("192.168.1.2","root","123.com"); 
mysql_select_db(“nihao”,$connect);
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)){
$redis->set($row["id"],$row["name"]);
$myserver = "mysql";break;
}
}
else{
$myserver = "redis";
$data[$key] = $redis->get($key);
}
}
echo $myserver;
echo "<br>";
for ($key =1; $key<=2; $key++){
echo "number is <b><font color=#FF0000>$key</font></b>";
echo "<br>";
echo "name is <b><font color=#FF0000>$data[$key]</font></b>";
echo "<br>";
}
?>
Firefox   192.168.1.1/index.php

然後去redis查看有沒有數據
在這裏插入圖片描述

完結撒花

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章