centos 安裝 redis (單機、哨兵、Cluster)
在安裝 redis 的時候需要先安裝 tcl
下載 tcl 包
tar -zxvf tcl8.6.8-src.tar.gz
cd tcl8.6.8
cd unix/
./configure
make && make install
安裝 redis
下載一個 redis
http://www.redis.cn/download.html
選擇一個版本的 使用的3.2.9
redis-3.2.9.tar.gz
解壓
tar -zxvf redis-3.2.9.tar.gz
cd redis-3.2.9
make && make test && make install
------------------------------------------------------------------------------------------------------------------------------
生產環境的啟動方案
1、建立兩個目錄
mkdir -p /etc/redis 存放 redis 的配置檔案
mkdir -p /var/redis/6379 存放 redis 的持久化檔案
2、將 redis/redis.conf 拷貝到 /etc/redis 目錄下
cp redis.conf /etc/redis、
重新命名 /etc/redis/ 目錄下的 redis.conf 為 6379.conf
3、修改 6379.conf 配置檔案
daemonize yes 守護程序
pidfile /var/run/redis_6379.pid redis 的 pid 檔案位置
port 6379 埠
dir /var/redis/6379 持久化檔案存放位置
4、將 redis -> utils 下的 redis_init_script 指令碼放到 /etc/init.d 目錄下
並且名字改為 redis_6379, 設定為跟隨系統啟動
cd /usr/local/redis-3.2.9/utils
cp redis_init_script /etc/init.d/
cd /etc/init.d/
mv redis_init_script redis_6379
chmod 777 redis_6379
在 redis_6379 啟動指令碼中新增兩行註釋
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
chkconfig redis_6379 on
----------------------------------------------------------------------------------------------------------------------------
關於 redis 的兩種持久化方案的配置
redis 的持久化方案分為 RDB 和 AOF
1、RDB 的配置
配置 /etc/redis/6379.conf 配置 save 就同時開啟了 RDB 持久化
save 900 1
save 300 10
save 60 10000
2、AOF 持久化
配置 /etc/redis/6379.conf
appendonly yes 開啟 AOF 持久化
注意:
如果 RDB 和 AOF 同時工作的話,如果 redis 重啟, 會優先使用 RDB 的持久化方案
也就是用 /var/redis/6379/dump.rdb 來恢復資料
--------------------------------------------------------------------------------------------------------------------------------
redis replication
一、配置主從
從節點的 6379.conf 中配置
slaveof masterip masterport 設定主節點
slave-read-only yes 強制性的讀寫分離,子節點只讀不可寫
主從節點的 6379.conf 的 bind hostip 都要配置
用 redis-cli -h hostip 來連線 redis
先開始主節點,再開啟從節點
注意: 新增 6379 到 tcp 監聽
systemctl start firewalld.service
firewall-cmd --zone=public --add-port=6379/tcp --permanent
iptables -A INPUT -ptcp --dport 6379 -j ACCEPT
systemctl stop firewalld.service
---------------------------------------------------------------------------------------------------------------------------------
redis sentinel(哨兵)
一、先建兩個目錄
mkdir -p /etc/sentinel/ 存放 sentinel 的配置檔案
mkdir -p /var/sentinel/5000/ 用來存放 sentinel 的日誌
二、將 redis 的 sentinel.conf 放到 /etc/sentinel/ 下
三、將 sentinel.conf 修改為 5000.conf
mkidr -p /var/log/sentinel/5000
新增
daemonize yes
logfile /var/log/sentinel/5000/sentinel.log
修改以下配置
bind 127.0.0.1 192.168.6.58
port 5000
dir /etc/sentinel/5000
sentinel monitor mymaster 192.168.6.58 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
啟動:
redis-sentinel /etc/sentinel/5000.conf
檢視日誌能看到 sentinel 的資訊,和主節點從節點的資訊
根據 sentinel 的節點發現機制能自動發現 sentinel 不需要我們配置就能找到
sentinel 的節點管理
進入
redis-cli -h 192.168.6.58 -p 5000
sentinel master mymaster -- master 資訊
sentinel slaves mymaster -- 從節點資訊
sentinel sentinels mymaster -- sentinel 資訊
sentinel get-master-addr-by-name mymaster -- 獲取 master 的地址
---------------------------------------------------------------------------------------------------------------------------------
redis cluster 的配置
一、建立兩個目錄
mkdir /etc/redis-cluster 節點的配置檔案目錄
mkdir /var/log/redis 日誌路徑
mkdir -p /var/redis/7002 持久化檔案路徑
二、將 、/usr/local/redis 下的 redis.conf 拷貝到 /etc/redis-cluster 下 並改名為 7001.conf
cp /usr/local/redis-3.2.9 /etc/redis-cluster
mv redis.conf ./7001.conf
三、修改 配置檔案
vi 7001.conf
port 7001
cluster-enabled yes
cluster-config-file /etc/redis-cluster/nodes-7001.conf
daemonize yes
pidfile /var/run/redis_7001.pid
dir /var/redis/7001
logfile /var/log/redis/7001.log
bind 192.168.6.58
appendonly yes
注意:
在配置檔案中不能包含 slaveof 的配置存在
四、配置啟動檔案
cd /usr/local/redis-3.2.9/utils/
cp redis_init_script /etc/init.d/
mv redis_init_script redis_7001
vi redis_7001
REDISPORT=7001
按照以上的配置,在三臺機器上分別配置兩個檔案,總共6份
分別啟動這6個例項
五、叢集管理工具
安裝 ruby
第一種方式:
yum install -y ruby
yum install -y rubygems
gem install redis
cp /usr/local/redis-3.2.9/src/redis-trib.rb /usr/local/bin
用以上方法安裝的 ruby 版本是2.0.0 可能不適合
第二種方式
下載 ruby 的包
cd /usr/local
wget http://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz
tar -zxvf ruby-2.5.0.tar.gz
cd ruby-2.5.0/
./configure --prefix=/usr/local/ruby
cd /usr/local/ruby
cp ./bin/ruby /usr/local/bin/
cp ./bin/gem /usr/local/bin/
ln -s /usr/local/bin/ruby /usr/bin/ruby
檢查 ruby -v
安裝 ruby gem redis 依賴
cd /usr/local
wget http://rubygems.org/downloads/redis-3.3.0.gem
整合openssl庫到ruby
yum install zlib-devel
cd /etc/local/ruby-2.5.0
cd ext/zlib
ruby extconf.rb
//在操作下一步之前需要修改Makefile檔案中的zlib.o: $(top_srcdir)/include/ruby.h,
//將$(top_srcdir)修改為../..如下
//zlib.o: ../../include/ruby.h
//這一步如果不修改,make時會爆出另外一個錯誤
//make:*** No rule to make target `/include/ruby.h', needed by `zlib.o'. Stop
make && make install
cd /usr/local
gem install -l /etc/local/redis-3.3.0.gem
如果出現錯誤[-bash: /usr/bin/gem: No such file or directory]
ln -s /usr/local/bin/gem /usr/bin/gem
檢查redis-trib.rb的可用性
./redis-4.0.1/src/redis-trib.rb
出現以上資訊表示可用
另一個缺少 openssl 庫的錯誤
yum install openssl-devel
整合 openssl 庫到 ruby
cd /etc/local/ruby-2.5.0
cd ext/openssl
ruby extconf.rb
//同樣修改Makefile中的$(top_srcdir)為../..
make && make install
六、建立 redis-cluster 叢集
cp /usr/local/redis-3.2.9/src/redis-trib.rb /usr/local/bin
redis-trib.rb create --replicas 1 192.168.6.58:7001 192.168.6.58:7002
192.168.6.63:7003 192.168.6.63:7004
192.168.6.65:7005 192.168.6.65:7006
檢視叢集資訊
redis-trib.rb check 192.168.6.58:7001