我们知道了主从复制的原理之后,关键是怎么搭建呢???我想当我们学会了这些之后,都知道概念了,都想实际的尝试一下。
本节的目的:
1.搭建一主一从架构
2.测试:往主节点去写,在从节点去读,可以读到,主从架构就搭建成功了
首先需要在安装好java环境的机器上操作,再安装tcl
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar -xzvf tcl8.6.1-src.tar.gz
cd /usr/local/tcl8.6.1/unix/
./configure
make && make install
使用redis-3.2.8.tar.gz(截止2017年4月的最新稳定版)
cd /usr/local/
tar -zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make && make test && make install
(1)redis utils目录下,有个redis_init_script脚本(这个是redis已经帮我们准备好的文件)
(2)将redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_6379,6379是我们希望这个redis实例监听的端口号(这样做主要是为了区分哪些守护进程会占用那些端口,不会显得很混乱)
在redis的安装目录下:
cp utils/redis_init_script /etc/init.d/
cd /etc/init.d
mv redis_init_script redis_6379
!!!注意:上面的etc是虚拟机的根目录下的etc,也就是启动机器时的配置
(3)修改redis_6379(初始化脚本)脚本的第6行的REDISPORT,设置为相同的端口号(默认就是6379)
vi redis_6379
(4)创建两个目录:/etc/redis(存放redis的配置文件),/var/redis/6379(存放redis的持久化文件)
mkdir /etc/redis
mkdir /var/redis
mkdir /var/redis/6379
!!!注意:上面的etc是虚拟机的根目录下的etc,也就是启动机器时的配置
(5)修改redis配置文件(默认在根目录下,redis.conf),拷贝到/etc/redis目录中,修改名称为6379.conf(这样做的原因是虚拟机开启的时候会自动读取init.d文件,里面有redis的初始化配置文件redis_6379,这个文件里面配置了会启动redis,同时读取 /etc/redis下的配置文件,这样就可以跑起来了)
cd /usr/local/redis-3.2.8
cp redis.conf /etc/redis/6379.conf
cd /etc/redis/
vi 6379.conf
daemonize yes 让redis以daemon进程(守护进程)运行
pidfile /var/run/redis_6379.pid 设置redis的pid文件位置
port 6379 设置redis的监听端口号
dir /var/redis/6379 设置持久化文件的存储位置
总结:
- redis_6379是初始化脚本,启动时会自动加载init.d中的这个文件,这个文件中配置了redis配置文件的路径,也就是 /etc/redis目录中,名称为
6379.conf
的文件
(7)启动redis,执行
cd /etc/init.d
chmod 777 redis_6379
在redis_6379脚本中,最上面,加入两行注释
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
chkconfig redis_6379 on
在slave node上配置:
vi /etc/redis/6379.conf
slaveof 192.168.1.1 6379
也可以使用slaveof命令
基于主从复制架构,实现读写分离
redis slave node只读,默认开启,slave-read-only
开启了只读的redis slave node,会拒绝所有的写操作,这样可以强制搭建成读写分离的架构
master上启用安全认证,
requirepass 密码(自己定义)
masterauth 密码(和上面的一样)
在搭建生产环境的集群的时候,不要忘记修改一个配置,bind,在6379.conf
上
bind 127.0.0.1 属于本地的开发调试的模式,就只能127.0.0.1本地才能访问到6379的端口
而且这个ip不要搞错了,要不就和我一样惨,找了一晚上,发现自己写错了ip…
先启动主节点,再启动从节点,记得关掉防火墙
systemctl stop iptables
systemctl stop ip6tables
systemctl disable iptables
systemctl disable ip6tables
systemctl stop firewalld.service
同样我们在slave上可以执行info replication
,获取到从节点的信息。
至此,主从架构搭建完毕。