關於redis如何安裝,參考: redis單點安裝
修改redis.conf共8處,便可實現一個主從Redis搭建. 仍是很簡單的.如今咱們正式開始搭建吧.
bind 127.0.0.1
改成: bind 0.0.0.0
須要跨服務器訪問,若是是生產最好指定IP或添加防火牆.protected-mode yes
改成: protected-mode no
若是是yes保護模式,須要配置bind或者設置密碼,no的話則設置port 6379
改成: port 6381
訪問端口daemonize no
改成: daemonize yes
守護進程模式運行pidfile /var/run/redis.pid
改成: pidfile /var/run/redis_6381.pid
啓動使用的PIDdir ./
改成: dir /usr/local/redis-ms/6381/
存儲日誌與數據文件的目錄replicaof <masterip> <masterport>
改成:replicaof 192.168.21.22 6381
(從redis.conf配置才設置)# masterauth <master-password>
改成: masterauth o9bEuO6iDKrIhYkx
slave節點設置master的密碼,#requirepass 123456
改成: requirepass o9bEuO6iDKrIhYkx
設置訪問時須要的密碼mkdir -p /usr/local/redis-ms/{6381,6382,6383,script}
#複製三次 cp ~/soft/redis-5.0.7/redis.conf /usr/local/redis-ms/6381/ cp ~/soft/redis-5.0.7/redis.conf /usr/local/redis-ms/6382/ cp ~/soft/redis-5.0.7/redis.conf /usr/local/redis-ms/6383/ # 更高級玩法: 一次將一個文件複製到多個目錄 echo /usr/local/redis-ms/6381/ /usr/local/redis-ms/6382/ /usr/local/redis-ms/6383/ |xargs -n 1 cp -v ~/soft/redis-5.0.7/redis.conf
# 69行 容許 bind 0.0.0.0 # 88行 protected-mode yes # 92行 port 6381 # 136行 daemonize yes # 158行 pidfile /var/run/redis_6381.pid # 263行 dir /usr/local/redis-ms/6381/ # 509行 requirepass 123456
# 69行 容許 bind 0.0.0.0 # 88行 protected-mode yes # 92行 port 6382 # 136行 daemonize yes # 158行 pidfile /var/run/redis_6382.pid # 263行 dir /usr/local/redis-ms/6382/ # 287行 replicaof 192.168.21.22 6381 # 295行 masterauth 123456 # 509行 requirepass 123456
# 69行 容許 bind 0.0.0.0 # 88行 protected-mode yes # 92行 port 6383 # 136行 daemonize yes # 158行 pidfile /var/run/redis_6383.pid # 263行 dir /usr/local/redis-ms/6383/ # 287行 replicaof 192.168.21.22 6381 # 295行 masterauth 123456 # 509行 requirepass 123456
bind
protected-mode yes 保護模式.
port 端口號
daemonize 守護模式
pidfile 存儲PID的文件
當Redis以守護進程方式運行時,Redis默認會把pid寫入/var/run/redis.pid文件replicaof 主從複製html
masterauth master訪問密碼
requirepass 訪問權限
主從集羣涉及多個實例redis,若是手動啓動,關閉很是麻煩,耗時,咱們須要借用腳原本管理.
touch /usr/local/redis-ms/script/redis-ms.sh
redis
#!/bin/sh ##################### # 名稱: redis主從服務腳本 # 時間: 2020-01-05 # 做者: 百里 ##################### # 端口配置 port_list=(6381 6382 6383) # redis-server服務 EXEC=/usr/local/bin/redis-server # 客戶端鏈接 CLIEXEC=/usr/local/bin/redis-cli #pid文件位置 PIDFILE="/var/run/redis_%d.pid" #配置文件存放位置 CONF="/usr/local/redis-ms/%d/redis.conf" #密碼,若是有密碼則在此處添加 PASS=123456 # 啓動腳本 start(){ for port in ${port_list[@]};do pidfile=$(printf $PIDFILE $port) if [ -f $pidfile ];then echo "$pidfile exists, process is already running or crashed" else echo "Starting Redis ${port} server..." conf=$(printf $CONF $port) $EXEC $conf fi done } # 中止函數 stop(){ # 循環處理 for port in ${port_list[@]};do pidfile=$(printf $PIDFILE $port) if [ ! -f $pidfile ];then echo "$pidfile does not exist, process is not running" else PID=$(cat $pidfile) echo "Stopping Redis ${port}..." if [ -z $PASS ];then $CLIEXEC -p $port shutdown else $CLIEXEC -p $port -a $PASS shutdown fi while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi done } # 重啓函數 restart() { stop start } # 狀態函數 status() { netstat -nplt |grep redis } case "$1" in start) start ;; stop) stop ;; restart) restart ;; status) status ;; *) echo "Please use start or stop or restart or status as first argument" ;; esac
touch /usr/lib/systemd/system/redis-ms.service
shell
[Unit] Description=redis-ms replication After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/redis-ms/script/redis-ms.sh start ExecStop=/usr/local/redis-ms/script/redis-ms.sh stop ExecReload=/usr/local/redis-ms/script/redis-ms.sh restart [Install] WantedBy=multi-user.target
systemctl daemon-reload
服務器
systemctl start redis-ms
網絡
systemctl start redis-ms
函數
systemctl start redis-ms
ui
systemctl enable redis-ms
spa
systemctl is-enabled redis-ms
.net
參考:rest