在两台Ubuntu 16.04服务器上安装redis集群

参考:https://www.cnblogs.com/xwgcxk/p/10775805.html

安装环境:
主服务器:阿里云ECS,安装Ubuntu 16.04
备份服务器:腾讯云ECS,安装Ubuntu 16.04
Redis版本:5.0.5

一、背景
最近在兼职运维的工作,需要对Redis服务进行监控。由于公司比较小,前期是没有多余服务器的,因此只能在一台服务器上搭建Redis集群。最近公司新购了一台阿里云ECS服务器,正好趁此机会将各个服务配置成双机热备份。对于Redis,就利用其自身提供的集群功能来实现。

二、安装Redis
首先,在两台服务器上安装好Redis。要注意的是,通过ap-get install redis-server安装的是比较老的3.×版本,由于我希望采用最新的版本,因此需要通过源代码编译安装。以下是安装过程,以阿里云ECS服务器为例:(也可参考https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04

1、下载redis-5.0.5.tar.gz
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
2、解压、编译、安装
tar -zxvf redis-5.0.5.tar.gz
cd redis-5.0.5
make
make install PREFIX=/usr/local/redis
安装成功后,可以使用make test进行测试,但耗时比较长。
3、验证redis是否可以启动
(1)执行如下命令:
redis-server redis.conf
可能会提示找不到redis-server。检查发现在/usr/local/bin中没有redis-server脚本。解决办法是将/redis-5.0.5/src中的相关脚本都拷贝到/usr/local/bin中。我这里只拷贝三个:redis-server、redis-cli和后面创建集群会用到的redis-trib.rb。
(2)执行ps -ef | grep redis,如果出现redis进程,则表面redis启动成功。验证完毕后要记得停掉Redis,可以通过kill命令(没有开启守护进程时),或/etc/init.d/redis-server stop(开启守护进程时)来停掉。

三、配置Redis
过程就不多用文字描述了,这里只记录命令步骤。
mkdir /etc/redis
cd /etc/redis
mkdir 7000 7001 7002
cp ~/redis-5.0.5/redis.conf 7000
cd 7000
vi redis.conf
编辑以下项的值:
port 7000

bind 127.0.0.1

daemonize yes //redis后台运行
pidfile /var/run/redis/redis_7000.pid
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
dir /var/lib/redis/7000 //Redis工作目录,redis数据会写入该目录
logfile "/root/log/redis/7000/redis.log" //更改redis日志目录。注意,根据自己日志所在目录修改。
依次将redis.conf拷贝到7001和7002文件夹,修改上面的项并将7000改为7001、7002即可。

这里要注意的是,pidfile指定的路径和dir指定的路径中都没有redis,新建redis目录后要记得赋予相应的组和所有者。例如,腾讯云ECS默认账户不是root而是ubuntu,此时如果采用sudo mkdir /var/run/redis或sudo mkdir -p /var/lib/redis/7000来创建目录的话,它们的用户组是root,所有者也是root。这样会导致redis-server启动时报权限错误。解决办法是通过命令sudo chgrp -R ubuntu /var/run/redis来将redis的用户组改为ubuntu,sudo chown -R ubuntu /var/run/redis来将所有者也改为ubuntu。

四、启动redis
redis-server /etc/redis/7000/redis.conf
redis-server /etc/redis/7001/redis.conf
redis-server /etc/redis/7002/redis.conf
启动后,用命令ps -ef | grep redis来检查redis是否已在3个端口启动。如果某个端口没有启动成功,查看相应端口对于的日志找原因。

以上就是在阿里云ECS服务器上安装、配置redis集群的过程。阿里云配置好后,再在腾讯云中进行类似的配置即可,只不过为了区分,可以将腾讯云中的三个端口改为7003、7004、7005.

五、创建集群
创建集群前,需要到腾讯云和阿里云后台中开启端口,方法是到实例的安全组中配置入方向规则,每条规则对于一个端口。同时,还要将每个端口再加上10000后的端口打开,即对于7000端口,需要同时打开17000端口。规则配置好后见下图:


规则

在两台服务器上都启动redis后,再到其中一台服务器中执行下面的命令来创建集群:
redis-cli --cluster create 阿里云实例IP:7000 阿里云实例IP:7001 阿里云实例IP:7002 腾讯云实例IP:7003 腾讯云实例IP:7004 腾讯云实例IP:7005 --cluster-replicas 1
命令执行后会提示,输入yes即可。


创建成功

六、节点握手
虽然上面 的6个节点都启用了群集支持,但默认情况下它们是不相互信任或者说没有联系的。节点握手就是在各个节点之间创建链接(每个节点与其他节点相连),形成一个完整的网格,即集群。方法是进入某个节点,如阿里云ECS的7000节点(通过命令redis-cli -p 7000),然后执行下面的命令将其他节点连接起来:
cluster meet 阿里云实例IP 7001
cluster meet 阿里云实例IP 7002
cluster meet 腾讯云实例IP 7003
cluster meet 腾讯云实例IP 7004
cluster meet 腾讯云实例IP 7005

七、集群验证
在第一台机器上连接集群的7002端口的节点,在另外一台连接7005节点,连接方式为 redis-cli -h 192.168.31.245 -c -p 7002 ,加参数 -C 可连接到集群,因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略。

在7005节点执行命令 set hello world ,执行结果如下:

image

然后在另外一台7002端口,查看 key 为 hello 的内容, get hello ,执行结果如下:

image

以上过程使用的方法和图片部分借用了博客https://www.cnblogs.com/xwgcxk/p/10775805.html,特此感谢!
另外还参考了一下博客:
(1)https://blog.csdn.net/XIANZHIXIANZHIXIAN/article/details/82391609
(2)https://www.cnblogs.com/esofar/p/10486621.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容