redis服务器部署
一、 redis下载
官网:
点击进入
复制稳定版下载链接
使用wget + 下载地址下载到Ubuntu
二、 redis安装
解压
tar xzf redis-5.0.2.tar.gz
移动到/usr/local,并进入该目录
mv redis-5.0.2 /usr/local/
cd /usr/local/redis-5.0.2
安装编译工具
apt-get install build-essential gcc -y
修改cluster.c文件
vim src/cluster.c
修改目的:redis对主机名的支持不好,故无法使用域名,程序连接redis时会从服务端获取IP(172.16.7.x),非内网则无法连接,目的是使得外网可以连接到redis服务器
作用:修改cluster slots的返回值
问题存在:当节点增加时,需要全部机子再次修改文件并重新编译,再重启集群
修改clusterReplyMultiBulkSlots函数,约4116行
在如图4165行下面,添加以下内容:
if(strcmp(node->ip, "172.16.7.10") == 0) {
strcpy(node->ip, "redisserver1.1473.cn");
}
else if(strcmp(node->ip, "172.16.7.11") == 0) {
strcpy(node->ip, "redisserver2.1473.cn");
}
else if(strcmp(node->ip, "172.16.7.12") == 0) {
strcpy(node->ip, "redisserver3.1473.cn");
}
else if(strcmp(node->ip, "172.16.7.13") == 0) {
strcpy(node->ip, "redisserver4.1473.cn");
}
修改后如图:
在addReplyBulkCString(c, node->slaves[i]->ip); 的上一行添加:
if(strcmp(node->slaves[i]->ip, "172.16.7.10") == 0) {
strcpy(node->slaves[i]->ip, "redisserver1.1473.cn");
}
else if(strcmp(node->slaves[i]->ip, "172.16.7.11") == 0) {
strcpy(node->slaves[i]->ip, "redisserver2.1473.cn");
}
else if(strcmp(node->slaves[i]->ip, "172.16.7.12") == 0) {
strcpy(node->slaves[i]->ip, "redisserver3.1473.cn");
}
else if(strcmp(node->slaves[i]->ip, "172.16.7.13") == 0) {
strcpy(node->slaves[i]->ip, "redisserver4.1473.cn");
}
修改后如图:
代码修改指南:
根据自己的IP数量和域名定义添加或删除修改
修改完成后:wq保存,然后使用make进行编译
make
经过一大串文字输出之后,总算到了编译成功的界面
使用make install进行安装
make install
修改hosts
vim /etc/hosts
添加:
172.16.7.10 redisserver1.1473.cn
172.16.7.11 redisserver2.1473.cn
172.16.7.12 redisserver3.1473.cn
172.16.7.13 redisserver4.1473.cn
三、 配置redis服务
创建两个服务文件夹
mkdir -p redis-cluster/7001
mkdir -p redis-cluster/7001
将redis.conf分别复制一份到7001 7002
cp redis.conf redis-cluster/7001
cp redis.conf redis-cluster/7002
分别修改7001 7002的redis.conf
vim redis-cluster/7001/redis.conf
vim redis-cluster/7002/redis.conf
修改地方:
1. 69行bind修改为0.0.0.0或者该虚拟机的IP
2. 92行端口根据自己需求修改,为了内外网都能正常连接,我们使用DMZ映射出去的端口
3. 136行设置守护进程,允许后台运行
4. 158行修改pid文件为7001/7002
5. 171行设置日志文件
6. 263行修改目录为7001/7002的目录
7. 699行设置数据持久化
8. 729行设置为always
9. 838行取消注释,启用集群
10. 846行取消注释,并修改成7001/7002
11. 852行取消注释
以上配置完成,7001配置完成后需配置7002
给redis-cluster目录下的文件都赋予777权限
chmod -R 777 redis-cluster/*
使用命令启动redis服务器
redis-server 配置文件位置
例:
redis-server /usr/local/redis-5.0.2/redis-cluster/7001/redis.conf
redis-server /usr/local/redis-5.0.2/redis-cluster/7002/redis.conf
能看到端口打开即成功
netstat -anp | grep redis-server
四、 集群设置
redis集群最少需要6个节点,每台机器有2个节点,故需要3台机器组一个集群,请自行复制机器或配置
6 ÷ 2 = 3
以下以4台机器为例
1. 修改端口设置
vim /usr/local/redis-5.0.2/redis-cluster/7001/redis.conf
vim /usr/local/redis-5.0.2/redis-cluster/7002/redis.conf
修改port设置
2. 统一启动服务
redis-server /usr/local/redis-5.0.2/redis-cluster/7001/redis.conf
redis-server /usr/local/redis-5.0.2/redis-cluster/7002/redis.conf
3. 在第一台机器中启动集群(仅第一台机器):
redis-cli --cluster create 172.16.7.10:14004 172.16.7.10:14005 172.16.7.11:14006 172.16.7.11:14007 172.16.7.12:14008 172.16.7.12:14009 172.16.7.13:14011 172.16.7.13:14012 --cluster-replicas 1
以上IP端口根据自己的修改
确认信息后输入yes回车即可
最下面提示两行绿色字则集群启动成功
至此,安装配置集群已经完成,以下步骤非必做
五、 停止redis服务
在每台机器上执行:
kill -9 $(pidof redis-server)
rm /usr/local/redis-5.0.2/redis-cluster/7001/appendonly.aof
rm /usr/local/redis-5.0.2/redis-cluster/7001/dump.rdb
rm /usr/local/redis-5.0.2/redis-cluster/7001/nodes-7001.conf
rm /usr/local/redis-5.0.2/redis-cluster/7001/redis.log
rm /usr/local/redis-5.0.2/redis-cluster/7002/appendonly.aof
rm /usr/local/redis-5.0.2/redis-cluster/7002/dump.rdb
rm /usr/local/redis-5.0.2/redis-cluster/7002/nodes-7002.conf
rm /usr/local/redis-5.0.2/redis-cluster/7002/redis.log
所有服务关闭后集群就会自动瓦解
六、 redis设置密码
关闭集群,编辑redis.conf
vim /usr/local/redis-5.0.2/redis-cluster/7001/redis.conf
vim /usr/local/redis-5.0.2/redis-cluster/7002/redis.conf
添加以下内容(整个集群的机子都需要添加):
masterauth password
requirepass password
其中password为自己设置的密码
(重要)如果添加了密码,则启动集群的命令:
redis-cli --cluster create 172.16.7.10:14004 172.16.7.10:14005 172.16.7.11:14006 172.16.7.11:14007 172.16.7.12:14008 172.16.7.12:14009 172.16.7.13:14011 172.16.7.13:14012 --cluster-replicas 1 -a password
末尾添加了-a password