使用两台linux搭建redis主从复制架构

开头声明一下:操作是在两台虚拟机上的,一台ip:10.19.157.121,主机名:eshop-cache01

另一台ip10.19.157.125,主机名:eshop-cache03#号开头的都是命令,下面的主机名和ip是可以换使用的。其中eshop-cache01作为主节点,eshop-cache03作为从节点。命令# set nu, 可以在vi编辑模式显示行号,在vi编辑模式的命令模式下直接输入行号就可以跳转到指定行了。

这次的主从复制是在两台linux上操作的,

下载redis的包,下载地址:http://download.redis.io/releases/redis-3.2.8.tar.gz

redisC语言实现的,所以在Linux系统中需要安装gcc来进行编译,安装gcc请去百度小子那里查找。

接下来需要安装Tcl工具,如果不安装的话后期我们将无法对Redis进行测试,完成安装之后make test会报错,tcl包的下载地址是:http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz

使用ssh工具连接,版本是使用redis-3.2.8,把redis-3.2.8tcl上传到linux/usr/local下。

 

使用xshell连接linux

# cd /usr/local

# tar -xzvf tcl8.6.1-src.tar.gz

效果:

 

# cd  /usr/local/tcl8.6.1/unix/

# ./configure  

效果:

 

# make && make install

效果:

 

# cd ..

# cd ..

# cd ..

退回到local目录。

解压:# tar -zxvf redis-3.2.8.tar.gz

进入:# cd /redis-3.2.8/utils

复制:# cp redis_init_script /etc/init.d

至于为啥要复制到这里,百度小子会给你很好的答案。

退到redis-3.2.8下:#cd ../

etc下创建redis目录:# mkdir /etc/redis

 

拷贝redis.conf /etc/rediscp redis.conf /etc/redis/

效果:

 

这里移动redis.conf,是为了统一管理。

修改redis.conf6379.confmv redis.conf 6379.conf

 

至于为啥,后面会说到。

进入6379.confvi 6379.conf

61行,把bind 127.0.0.1修改为10.19.157.125(这个是我linux ip ,你们不要写我的啊)

 

128行,把no改为yes

 

第 163行修改日志存储位置,改为: logfile "/etc/log/redis/6379.log"

 

这个文件现在没有,等会创建。

247行,改为:dir /var/redis/6379

 

这个文件现在没有,等会创建,这个目录是修改持久化文件的存放位置。

265行,改为: slaveof eshop-cache01 6379

 

这个地方是slave节点要配置,master节点不需要配置。当然,这台服务器是我之前就创建好的,上面也已经搭建好了redis,你们也可以参照现在这些笔记在另一台linux上搭建redis,然后把这里的主机名称改一下就好了。(主机名称要是不行,可能是你没在/etc/hosts里面配置好对应关系。要是主机名称不行,这里就换成你的masterip就好了)。

从节点默认开启只读配置,这个配置只要你配置了slaveof就会起作用。见下图。

 

480行,改为: masterauth root

 

注意上图的配置是slave节点的,这里我也是模拟生产环境的,这个配置是说,连接master要带密码过去,而这个root也是在master里面设置的,所以你们在参照笔记搭建master的时候,要注意这个地方,master配置见下图。

master只配置:第272行,改为 requirepass root

 

这个root就是从节点连接的密码。

上面就把redis的核心文件配置好了。

创建/var/redis/6379

命令:# mkdir /var/redis

      # mkdir /var/redis/6379

 

这个6379是用来存放redis持久化文件的。

进入init.d目录:#cd /etc/init.d

 

redis_init_script改名为redis_6379:# mv redis_init_script redis_6379

redis跟随系统启动自动启动

redis_6379脚本中,最上面,加入两行注释

# chkconfig:   2345 90 10

# description:  Redis is a persistent key-value database

 

然后: # chkconfig redis_6379 on

这里可以查看一下redis_6379文件:# cat redis_6379

 

从上面可以看到,为啥要把修改redis.conf6379.conf

启动redis# ./redis_6379 start

 

要是报下面这个错误,是因为安装redis的是没有make install或者是make install没起作用。

 

我们进入:#cd /usr/local/redis-3.2.8

 

重新:# make install。出现下面的情形就可以了。

 

回到/etc/init.d,重新执行:# ./redis_6379 start

成功启动,查看命令:# ps -ef | grep redis

 

下面是使用telnet的使用:

#rpm -q telnet

#rpm -q telnet-server

分别执行,要是没安装出现:

 

执行#yum list |grep telnet

 

要是没出现,那就自己去百度小子那里下载再上传吧。

执行:#yum install telnet.i686

 

再执行:# yum install telnet-server.i686

 

查看服务:# service xinetd restart

 

失败了,没事。

执行:# vi /etc/xinetd.d/telnet

disable yes改为no

 

保存退出,重启服务:# service xinetd restart

 

telnet默认端口是23,测试一下:

# netstat -tnl |grep 23,正在监听。

 

 

执行 # redis-cli ping ,出现:

 

这是因为我们修改了bind的缘故。

执行# redis-cli -h,出现一堆命令,

 

执行:# redis-cli -h 10.19.157.125 ping,上面可知-h ip和主机名称都可以。

 

 

 

出现上面错误的原因是我们开启了密码,所以要这样

执行:# redis-cli -a root -h eshop-cache03 ping

 

终于可以了,累死。。

下面连接master了。

 

 

出现这个错误的原因是,从节点的6379端口没有开启,被防火墙拦截了。

执行:# iptables -A INPUT -ptcp --dport  6379 -j ACCEPT

      # iptables -L -n

6379端口已经再监听了。

要是出现下面的情况,重启一下就好了:# service iptables restart

 

使用这个命令可以查看,端口是否允许别的主机访问:netstat -anp | grep 6379

Master

 

从节点:

 

主节点执行:# telnet 10.19.157.125 6379

 

 

# telnet eshop-cache01 6379下面这种错误是slave或者master的防火墙拦截了

 

 

退出编辑:quit

查看主节点信息,如下图:

 

 

查看从节点信息,如下图:

 

这时候就可以在masterset一个key,从节点就可以马上拿到了。

到这里基本结束了,注意开发6379端口时,要是redis没开启,使用telnet连接,是显示连接拒绝的,所以要先开启redis先(不使用端口,开放出来也无法使用)。上面一系列的操作只是基本redis主从搭建,还没有搭建完,完整的搭建后面再书写。

 

posted @ 2018-06-14 17:35  可爱的鱼  阅读(2156)  评论(1编辑  收藏  举报