有思俱乐部学习园地

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

工作人员

 
作者:
信息录入: