1、需要三台服务器
如:服务器A、B、C
2、在三台服务器上安装gcc,执行如下命令
yum install gcc
3、验证是否安装好gcc
gcc -v
如果出现如下信息,代表已安装好
- 如果防火墙是开启状态,需要防火墙开通端口
永久开放如下服务器端口
(1)服务器A,执行如下命令
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=6380/tcp --permanent
firewall-cmd --zone=public --add-port=16379/tcp --permanent
firewall-cmd --zone=public --add-port=16380/tcp --permanent
firewall-cmd --reload
查看服务器上已经永久开放的端口,执行如下命令
firewall-cmd --list-ports
必须要包含以上接口,如下截图
(2)服务器B,执行如下命令
firewall-cmd --zone=public --add-port=6381/tcp --permanent
firewall-cmd --zone=public --add-port=6382/tcp --permanent
firewall-cmd --zone=public --add-port=16381/tcp --permanent
firewall-cmd --zone=public --add-port=16382/tcp --permanent
firewall-cmd --reload
查看服务器上已经永久开放的端口,执行如下命令
firewall-cmd --list-ports
必须要包含以上接口
- 服务器C,执行如下命令
firewall-cmd --zone=public --add-port=6383/tcp --permanent
firewall-cmd --zone=public --add-port=6384/tcp --permanent
firewall-cmd --zone=public --add-port=16383/tcp --permanent
firewall-cmd --zone=public --add-port=16384/tcp --permanent
firewall-cmd --reload
查看服务器上已经永久开放的端口,执行如下命令
firewall-cmd --list-ports
必须要包含以上端口
5、配置服务器参数(三台服务器都需要执行)
(1)root权限编辑 /etc/sysctl.conf
net.core.somaxconn = 512 (注意:此条在sysctl.conf末尾可能会有此参数,如果有,并且数值大于512,则不需要修改,如果没有则需要添加此条)
vm.overcommit_memory = 1 (注意:这条在sysctl.conf原先是没有的,在文件尾部添加此条)
执行以下语句使参数生效
sysctl -p
(2)修改/etc/rc.local
在文件尾部添加
echo never > /sys/kernel/mm/transparent_hugepage/enabled
添加后,用root用户手工执行一次,执行时间可能会要一段时间,请等待
echo never > /sys/kernel/mm/transparent_hugepage/enabled
(3)使用root用户编辑 /etc/security/limits.conf
在文件尾部添加
redis soft nproc 20470
redis hard nproc 163840
redis soft nofile 10240
redis hard nofile 655360
(4)修改/etc/ssh/sshd_config
#修改如下内容
UseLogin yes (注意:是修改,原本是被注释的,并且是no)
修改后重启ssh,执行如下命令:
systemctl restart sshd
6、安装Redis
(1)将redis安装包上传至/home/redis目录下
(2)解压
tar -zxvf redis-5.0.5.tar.gz
(3)编译
进入redis解压出来的文件夹的src中,如:cd /home/redis/redis-5.0.5/src
执行make命令
注意:上述3个步骤每台服务器都要操作
(4)复制主要文件到指定目录
- 服务器A执行如下命令
mkdir -p /home/redis/redis-6379/bin
mkdir -p /home/redis/redis-6380/bin
mkdir -p /home/redis/redis-6379/etc
mkdir -p /home/redis/redis-6380/etc
cp /home/redis/redis-5.0.5/redis.conf /home/redis/redis-6379/etc/
cp /home/redis/redis-5.0.5/redis.conf /home/redis/redis-6380/etc/
进入/home/redis/redis-5.0.5/src目录
cd /home/redis/redis-5.0.5/src
cp mkreleasehdr.sh redis-check-aof redis-benchmark redis-check-rdb redis-cli redis-server /home/redis/redis-6379/bin (注意:从上面的cp开始到最后的bin,是一条执行命令)
cp mkreleasehdr.sh redis-check-aof redis-benchmark redis-check-rdb redis-cli redis-server /home/redis/redis-6380/bin (注意:从上面的cp开始到最后的bin,是一条执行命令)
- 服务器B执行如下命令
mkdir -p /home/redis/redis-6381/bin
mkdir -p /home/redis/redis-6382/bin
mkdir -p /home/redis/redis-6381/etc
mkdir -p /home/redis/redis-6382/etc
cp /home/redis/redis-5.0.5/redis.conf /home/redis/redis-6381/etc/
cp /home/redis/redis-5.0.5/redis.conf /home/redis/redis-6382/etc/
进入/home/redis/redis-5.0.5/src目录
cd /home/redis/redis-5.0.5/src
cp mkreleasehdr.sh redis-check-aof redis-benchmark redis-check-rdb redis-cli redis-server /home/redis/redis-6381/bin (注意:从上面的cp开始到最后的bin,是一条执行命令)
cp mkreleasehdr.sh redis-check-aof redis-benchmark redis-check-rdb redis-cli redis-server /home/redis/redis-6382/bin (注意:从上面的cp开始到最后的bin,是一条执行命令)
- 服务器C执行如下命令
mkdir -p /home/redis/redis-6383/bin
mkdir -p /home/redis/redis-6384/bin
mkdir -p /home/redis/redis-6383/etc
mkdir -p /home/redis/redis-6384/etc
cp /home/redis/redis-5.0.5/redis.conf /home/redis/redis-6383/etc/
cp /home/redis/redis-5.0.5/redis.conf /home/redis/redis-6384/etc/
进入/home/redis/redis-5.0.5/src目录
cd /home/redis/redis-5.0.5/src
cp mkreleasehdr.sh redis-check-aof redis-benchmark redis-check-rdb redis-cli redis-server /home/redis/redis-6383/bin (注意:从上面的cp开始到最后的bin,是一条执行命令)
cp mkreleasehdr.sh redis-check-aof redis-benchmark redis-check-rdb redis-cli redis-server /home/redis/redis-6384/bin (注意:从上面的cp开始到最后的bin,是一条执行命令)
(5)修改配置
- 修改服务器A的6379配置
vi /home/redis/redis-6379/etc/redis.conf
更改点如下:
1) daemonize yes(原先为no,改为yes)
2) port 6379(分别对每个机器的端口号进行设置)
3) pidfile /var/run/redis_6379.pid(守护进程文件,每个端口不一样)
3) dir /home/redis/redis-6379(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据)
4) cluster-enabled yes(启动集群模式,将原来的注释去掉)
5) cluster-config-file nodes-6379.conf(集群节点信息文件,这里800x最好和port对应上,原先是注释的,将原来的注释去掉)
6) cluster-node-timeout 15000(原先是注释的,将原来的注释去掉)
7) bind IP1(修改bind绑定访问ip信息,注意不同节点不同的IP)
8) protected-mode no (关闭保护模式,原先是yes)
9) appendonly yes
- 修改服务器A的6380配置
vi /home/redis/redis-6380/etc/redis.conf
更改点如下:
1) daemonize yes(原先为no,改为yes)
2) port 6380(分别对每个机器的端口号进行设置)
3) pidfile /var/run/redis_6380.pid(守护进程文件,每个端口不一样)
3) dir /home/redis/redis-6380(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据)
4) cluster-enabled yes(启动集群模式,将原来的注释去掉)
5) cluster-config-file nodes-6380.conf(集群节点信息文件,这里800x最好和port对应上,原先是注释的,将原来的注释去掉)
6) cluster-node-timeout 15000(原先是注释的,将原来的注释去掉)
7) bind IP1(修改bind绑定访问ip信息,注意不同节点不同的IP)
8) protected-mode no (关闭保护模式,原先是yes)
9) appendonly yes
服务器B、C同上,只需要修改所有有关端口的为6381、6382、6383、6384即可,还有需要修改IP为各自的IP,配置见压缩包
(6)启动各节点服务
服务器A执行如下命令
/home/redis/redis-6379/bin/redis-server /home/redis/redis-6379/etc/redis.conf (这两行是一条命令)
显示如下代表启动成功
/home/redis/redis-6380/bin/redis-server /home/redis/redis-6380/etc/redis.conf (这两行是一条命令)
服务器B执行如下命令
/home/redis/redis-6381/bin/redis-server /home/redis/redis-6381/etc/redis.conf (这两行是一条命令)
/home/redis/redis-6382/bin/redis-server /home/redis/redis-6382/etc/redis.conf (这两行是一条命令)
服务器C执行如下名
/home/redis/redis-6383/bin/redis-server /home/redis/redis-6383/etc/redis.conf (这两行是一条命令)
/home/redis/redis-6384/bin/redis-server /home/redis/redis-6384/etc/redis.conf (这两行是一条命令)
(7)集群启动,在服务器A上执行
/home/redis/redis-6379/bin/redis-cli --cluster create --cluster-replicas 1 ip1:6379 ip1:6380 ip2:6381 ip2:6382 ip3:6383 ip3:6384
(8)检查集群,在服务器A上执行
/home/redis/redis-6379/bin/redis-cli -c -h 186.1.62.200 -p 6379
在redis命令中执行 cluster info
出现如下信息:
在redis命令中执行 cluster nodes
出现如下信息:
代表集群搭建成功