记一次ubuntu下redis集群全过程以及后续维护事项

本次集群采用redis官方推荐的redis cluster集群方式.
注意必须要3个或以上的主节点,否则在创建集群时会失败.
–part1 每台单机安装redis
–拷贝文件
scp redis-3.2.1.tar.gz username@10.100.94.195:/home/username
scp redis.conf username@10.100.94.195:/home/username
scp tcl8.6.1-src.tar.gz username@10.100.94.195:/home/username
–解压
tar xvf redis-3.2.1.tar.gz
tar xvf tcl8.6.1-src.tar.gz
–整理文件
sudo -i
cd /home/username
mv redis-3.2.1 /usr/local/redis
mv tcl8.6.1 /usr/local/tcl
mv redis.conf /usr/local
–安装插件
apt-get install libc6-dev
make MALLOC=libc 仅在有必要时考虑这一步,大部分情况忽略,不能执行下面./configure命令时安装
如果没有make命令 则安装如下
apt-get install build-essential

–安装tcl
cd /usr/local/tcl/unix
./configure
make
make test
make install

–安装redis
cd /usr/local/redis
make
cd /usr/local/redis/src
make test
如果遇到
[err]: Test replication partial resync…,则用以下方法解决
在这里插入图片描述

/usr/local/redis/src
make install

-part2 集群-
1.准备
检查ruby有没有安装好 ruby -v,如果没有安装好,如下:
apt install ruby-full
执行下面这个gem命令
执行之前,检查能不能连到外网,如果不能, 注意开代理,临时开代理命令如下
export http_proxy=http://xxx.com:80
export https_proxy=http://xxx.com:80

gem install redis
2. a. /usr/local下创建两个文件夹
b. 复制redis.conf 到这俩能个文件夹下,并更改redis.conf,如下
port 7000 //端口 比如7000,7002,7003
bind 本机ip //默认ip为127.0.0.1 改为其他节点机器可访问的本机ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志 
3.启动每个节点
redis-server 7000/redis.conf 注意需要sudo权限
查看 ps -ef | grep redis
一定注意不要在集群之前设置密码,建议之后也不设密码
4. 安装完所有节点,并启动后,就可以集群了. 运行集群命令 /usr/local/redis/src/redis-trib.rb 如下:
./redis-trib.rb create --replicas 1 10.193.146.234:7000 10.212.207.30:7002 10.212.207.30:7003 10.177.209.145:7004 10.177.209.145:7005 10.218.61.183:7006 10.218.61.183:7007 10.212.207.34:7008 10.212.207.34:7009 10.177.209.212:7010 10.177.209.212:7011 10.218.61.210:7012 10.218.61.210:7013 10.212.226.208:7014 10.212.226.208:7015 10.218.88.219:7016 10.218.88.219:7017 10.193.146.234:7001

这里的命令参数 --replicas 1 表示每台master 有一个slave; 所以语句中,依次为 master 和slave的1对1的配对 ,并循环往复.比如:10.193.146.234:7000 10.212.207.30:7002是一对master slave
所以配置的时候要注意

  1. 不要把master 和 slave的配对 搞在同一台机器上,而是让他们错开到不同机器上
  2. 不要把master都配置到同一台机器上,而是应该尽量错开
    附上 redis集群挂掉的必要条件
    A、某个主节点和所有从节点全部挂掉,我们集群就进入faill状态。
    B、如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.
    C、如果集群任意master挂掉,且当前master没有slave.集群进入fail状态

连接集群命令示例
redis-cli -h 10.15.17.72 -c -p 8008
redis-cli -h 10.212.207.30 -c -p 7002

有密码的连接
redis-cli -h 10.212.216.197 -c -p 7019 -a password

-part3维护-
可以给每台机器增加一个定时job检查redis 服务进程是否正常运行,如果没有则重启redis,做法如下:

  1. crontab
    */10 * * * * /home/username/healthy_check.sh 2>&1 > /home/username/healthy_check.log
  2. healthy_check.sh bash脚本
#!/bin/bash
port1=8008
port2=8009
 
count1=`pgrep -f $port1 | wc -l`
count2=`pgrep -f $port2 | wc -l`
 
if [ $count1 -eq 0 ]
then
  echo "checked port:$port1 down..."
  # restart
  /usr/local/redis/src/redis-server /usr/local/$port1/redis.conf
  nowtime=$(date +"%Y-%m-%d %H:%M:%S")
  echo "restart port:$port1 success by $nowtime"
  echo "--------------------------------------"
fi
sleep 10
if [ $count2 -eq 0 ]
then
  echo "checked port:$port2 down..."
  # restart
  /usr/local/redis/src/redis-server /usr/local/$port2/redis.conf
  nowtime=$(date +"%Y-%m-%d %H:%M:%S")
  echo "restart port:$port2 success by $nowtime"
  echo "--------------------------------------"
fi

将新节点增加进集群
有时需要增加新节点进集群,如下做法是给master 增加 一个slave
cd /usr/local/redis/src
./redis-trib.rb add-node --slave --master-id 0c59192fc07b6b007433d5d1f0e39c7463dece58 10.72.171.214:7025 10.72.164.80:7019
命令解释
add-node new_host:new_port existing_host:existing_port
–slave
–master-id
add-node有两个可选参数:
–slave:设置该参数,则新节点以slave的角色加入集群
–master-id:这个参数需要设置了–slave才能生效,–master-id用来指定新节点的master节点。如果不设置该参数,则会随机为节点选择master节点。
在这里 10.72.171.214:7025是新节点, 10.72.164.80:7019 是旧节点master,0c59192fc07b6b007433d5d1f0e39c7463dece58 是 10.72.164.80:7019
对应的节点名

如何迁移master进新的机器
有时需要退役master所在的物理机器,这时需要把master迁移到新的机器上,实现思路如下:

  1. 在新机器上给这个master加slave.
  2. kill master 进程, 让集群自动选举新机器的slave 为master
  3. 一切正常,就可以退役master所在物理机器了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu上安装Redis集群可以通过以下步骤完成: 1. 首先,确保你已经安装了Ubuntu操作系统,并且具备sudo权限。 2. 打开终端,更新系统软件包列表: ``` sudo apt update ``` 3. 安装Redis服务器: ``` sudo apt install redis-server ``` 4. 安装Redis的依赖工具: ``` sudo apt install redis-tools ``` 5. 配置Redis集群的节点: - 创建一个目录用于存储Redis集群的配置文件和数据: ``` mkdir redis-cluster cd redis-cluster ``` - 复制Redis配置文件模板到当前目录: ``` cp /etc/redis/redis.conf . ``` - 编辑Redis配置文件,设置以下参数: ``` port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes ``` 6. 复制并修改Redis配置文件,创建更多的节点: - 复制配置文件: ``` cp redis.conf redis-7001.conf cp redis.conf redis-7002.conf ``` - 修改每个配置文件的端口号和cluster-config-file参数: ``` # redis-7001.conf port 7001 cluster-config-file nodes.conf # redis-7002.conf port 7002 cluster-config-file nodes.conf ``` 7. 启动Redis集群节点: - 在每个节点的终端窗口中执行以下命令: ``` redis-server redis-7000.conf redis-server redis-7001.conf redis-server redis-7002.conf ``` 8. 创建Redis集群: - 打开一个新的终端窗口,执行以下命令: ``` redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 --cluster-replicas 1 ``` 9. 验证Redis集群是否正常工作: - 运行以下命令连接到Redis集群: ``` redis-cli -c -p 7000 ``` - 在Redis命令行中执行一些操作,例如设置和获取键值对: ``` set key1 value1 get key1 ``` - 如果能够成功执行操作并获取到正确的结果,则说明Redis集群已经安装并正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值