关于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