redis部署
redis docker部署
docker pull registry.docker-cn.com/library/redis
docker-compose.yml
version: '2'
services:
redis:
image: redis:latest
container_name: redis
restart: always
ports:
- 3308:6379
volumes:
- /data/home/redis/config/redis.conf:/usr/local/etc/redis/redis.conf
- /data/home/redis/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
離線部署redis
【准備】
1.Centos7.x系統
2.安裝gcc
3.redis安裝包
【防火牆配置】
查看防火牆狀態
firewall-cmd --state
停止firewall
systemctl stop firewalld.service
禁止firewall開機啟動
systemctl disable firewalld.service
關閉selinux
進入到/etc/selinux/config文件
vi /etc/selinux/config
將SELINUX=enforcing改為SELINUX=disabled
【安裝】
tar -zxvf redis-5.0.5.tar.gz
編譯
make
安裝
make PREFIX=/usr/local/redis install
在/usr/local/redis/下創建redis.conf和sentinel.conf文件
主:redis.conf
port 6379
bind 192.168.18.190 #本機ip
requirepass "myredis" #認證密碼
daemonize yes #支持后台運行,默認值為no
logfile "6379.log" #日志文件
dbfilename "dump-6379.rdb" #數據庫文件
dir "./"
#如若master設置了認證密碼,那么所有redis數據節點都配置上masterauth屬性
從:redis.conf
port 6379
bind 192.168.18.191
requirepass "myredis" #認證密碼
daemonize yes
logfile "6379.log"
dbfilename "dump-6379.rdb"
dir "./"
#如若master設置了認證密碼,那么所有redis數據節點都配置上masterauth屬性
masterauth "myredis" #主庫密碼
slaveof 192.168.18.190 6379
【sentinel】
port 26379
#開啟守護進程
daemonize yes
dir "/tmp" #Sentinel服務運行時使用的臨時文件夾
#指定日志文件存放位置
logfile "26379.log"
#指定主的IP 端口 “2”代表有兩個哨兵進程發現主服務器宕機便選取一個從服務器為主
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.18.190 6379 2 #主master
#redis數據master節點設置了認證,則需要如下配置
sentinel auth-pass mymaster myredis #認證密碼
sentinel down-after-milliseconds mymaster 30000
sentinel config-epoch mymaster 1
sentinel failover-timeout mymaster 180000
【配置文件說明:】
1. port :當前Sentinel服務運行的端口
2. dir : Sentinel服務運行時使用的臨時文件夾
3.sentinel monitor master001 192.168.110.101 6379 2:Sentinel去監視一個名為master001的主redis實例,這個主實例的IP地址為本機地址192.168.110.101,端口號為6379,而將這個主實例判斷為失效至少需要2個 Sentinel進程的同意,只要同意Sentinel的數量不達標,自動failover就不會執行
4.sentinel down-after-milliseconds master001 30000:指定了Sentinel認為Redis實例已經失效所需的毫秒數。當實例超過該時間沒有返回PING,或者直接返回錯誤,那么Sentinel將這個實例標記為主觀下線。只有一個 Sentinel進程將實例標記為主觀下線並不一定會引起實例的自動故障遷移:只有在足夠數量的Sentinel都將一個實例標記為主觀下線之后,實例才會被標記為客觀下線,這時自動故障遷移才會執行
5.sentinel parallel-syncs master001 1:指定了在執行故障轉移時,最多可以有多少個從Redis實例在同步新的主實例,在從Redis實例較多的情況下這個數字越小,同步的時間越長,完成故障轉移所需的時間就越長
6.sentinel failover-timeout master001 180000:如果在該時間(ms)內未能完成failover操作,則認為該failover失敗
7.sentinel notification-script <master-name> <script-path>:指定sentinel檢測到該監控的redis實例指向的實例異常時,調用的報警腳本。該配置項可選,但是很常用
redis-cli -h 192.168.18.190 -p 6379 -a 123456 info replication
redis-cli -h 192.168.18.191 -p 6379 -a 123456 info replication
redis-cli -h 192.168.18.191 -p 6379 -a 123456 info replication
redis-server /etc/redis/6379.conf
redis-server /etc/redis/6379.conf #啟動redis
redis-cli -h 192.168.18.190 -p 6379 -a 123456 shutdown #關閉redis
【連接】
redis-cli -h 192.168.18.190 -p 6379 -a myredis
【關閉】
redis-cli -h 192.168.18.190 -p 6379 -a myredis shutdown