環(huán)境準備
IP | 角色 |
---|---|
172.16.144.91 | master |
172.16.144.13 | slave |
服務器系統(tǒng)參數(shù)優(yōu)化
修改系統(tǒng)文件最大打開數(shù)
echo '* soft nofile 102400' >> /etc/security/limits.conf
echo '* hard nofile 102400' >> /etc/security/limits.conf
ulimit -n 102400
修改somaxconn大小
echo 65535 > /proc/sys/net/core/somaxconn;
關閉 Pansparent Hugepage
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local --添加
到開啟啟動
echo never > /sys/kernel/mm/transparent_hugepage/enabled --臨時生效
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
echo "net.core.somaxconn=32767" >> /etc/sysctl.conf
redis配置
下載tar包
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
安裝REDIS
yum -y install gcc gcc-c++ tcl --安裝依賴包
tar -zxvf redis-4.0.10.tar.gz -C /usr/local/ --解壓包
cd /usr/local
mv redis-4.0.10 redis
cd redis
make
make MALLOC=
cd redis/src
make test
make install
【圖1】
cd /usr/local/redis/src/
cp redis-server redis-cli redis-sentinel /usr/bin/
修改redis.conf配置
vim /usr/local/redis/redis.conf
daemonize yes --redis服務后臺運行
bind 0.0.0.0 --bind配置項來指定要綁定的IP
port 6379 --端口
pidfile "/var/run/redis.pid"
protected-mode no
tcp-backlog 1024
logfile "/var/log/redis.log" --redis日志路徑
dir /data/redis --持久化文件保存路徑
masterauth "test2123456" --設置校驗密碼
requirepass "test2123456" --密碼認證
appendonly yes --開啟持久化
maxclients 10000 --設置最大連接數(shù)
maxmemory-policy noeviction --此參數(shù)內存淘汰機制赦颇,noeviction :當內存使用達到閾值的時候檩电,
所有引起申請內存 的命令會報錯。默認值
maxmemory 1024mb --設置內存占用澄者,此設置和你服務器內存大小有關素征,最大配置服務器內存的
75%迫卢。
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
修改sentinel.conf哨兵監(jiān)控文件參數(shù)如下:
daemonize yes --后臺運行
bind 0.0.0.0
protected-mode no
port 26379 --端口號
logfile "/data/redis/logs/sentinel.log" --日志路徑
dir "/data/redis/sdata" ----數(shù)據(jù)路徑
sentinel monitor test2redis 172.16.143.16 6379 1 監(jiān)控名稱 監(jiān)控服務器ip 監(jiān)控服務端口 選舉數(shù)量
sentinel down-after-milliseconds test2redis 8000
sentinel failover-timeout test2redis 15000
sentinel auth-pass test2redis test2123456
啟動redis
vim /etc/init.d/redis.sh
#!/bin/bash
/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
/usr/local/redis/src/redis-sentinel /usr/local/redis/sentinel.conf
驗證
Redis-cli
AUTH redis123
info replication
在master寫數(shù)據(jù) slave是否同步
sentinel.conf文件詳解
sentinel monitor <master-name> <ip> <redis-port> <quorum>
告訴sentinel去監(jiān)聽地址為ip:port的一個master貌踏,這里的master-name可以自定義捕捂,
quorum是一個數(shù)字,指明當有多少個sentinel認為一個master失效時春霍,master才算
真正失效
sentinel auth-pass <master-name> <password>
設置連接master和slave時的密碼砸西,注意的是sentinel不能分別為master和slave設置不
同的密碼,因此master和slave的密碼應該設置相同址儒。
sentinel down-after-milliseconds <master-name> <milliseconds>
這個配置項指定了需要多少失效時間芹枷,一個master才會被這個sentinel主觀地認為是不
可用的。 單位是毫秒莲趣,默認為30秒
sentinel parallel-syncs <master-name> <numslaves>
這個配置項指定了在發(fā)生failover主備切換時最多可以有多少個slave同時對新的
master進行 同步鸳慈,這個數(shù)字越小,完成failover所需的時間就越長喧伞,但是如果這個數(shù)
字越大走芋,就意味著越 多的slave因為replication而不可用⌒跏叮可以通過將這個值設為 1 來
保證每次只有一個slave 處于不能處理命令請求的狀態(tài)绿聘。
sentinel failover-timeout <master-name> <milliseconds>
failover-timeout 可以用在以下這些方面:
1. 同一個sentinel對同一個master兩次failover之間的間隔時間。
2. 當一個slave從一個錯誤的master那里同步數(shù)據(jù)開始計算時間次舌。直到slave被糾正為
向正確的master那里同步數(shù)據(jù)時熄攘。
3.當想要取消一個正在進行的failover所需要的時間。
4.當進行failover時彼念,配置所有slaves指向新的master所需的最大時間挪圾。不過,即使過
了這個超時逐沙,slaves依然會被正確配置為指向master哲思,但是就不按parallel-syncs所配
置的規(guī)則來了。