Redis cluster部署

0. 架构

序号IP作用
1192.168.31.17Host1
2192.168.31.27Host2
3192.168.31.37Host3
4192.168.31.47Back1
5192.168.31.57Back1
6192.168.31.67Back3

1. 安装Redis

1.1 安装脚本

vi Redis_install.sh
. /etc/init.d/functions 
VERSION=redis-4.0.14
PASSWORD=123456
INSTALL_DIR=/apps/redis

install() {
yum  -y install gcc jemalloc-devel || { action "安装软件包失败,请检查网络配置" false ; exit; }

wget http://download.redis.io/releases/${VERSION}.tar.gz || { action "Redis 源码下载失败" false ; exit; }
tar xf ${VERSION}.tar.gz
cd ${VERSION}
make -j `nproc` PREFIX=${INSTALL_DIR} install && action "Redis 编译安装完成" || { action "Redis 编译安装失败" false ;exit ; }

ln -s ${INSTALL_DIR}/bin/redis-*  /usr/bin/
mkdir -p ${INSTALL_DIR}/{etc,log,data,run}
cp redis.conf  ${INSTALL_DIR}/etc/
sed -i -e 's/bind 127.0.0.1/bind 0.0.0.0/'  -e "/# requirepass/a requirepass $PASSWORD"  -e "/^dir .*/c dir ${INSTALL_DIR}/data/"  -e "/logfile .*/c logfile ${INSTALL_DIR}/log/redis-6379.log"  -e  "/^pidfile .*/c  pidfile ${INSTALL_DIR}/run/redis_6379.pid" ${INSTALL_DIR}/etc/redis.conf

if id redis &> /dev/null ;then 
    action "Redis 用户已存在" false  
else
    useradd -r -s /sbin/nologin redis
    action "Redis 用户创建成功"
fi
chown -R redis.redis ${INSTALL_DIR}
cat >> /etc/sysctl.conf <<EOF
net.core.somaxconn = 1024
vm.overcommit_memory = 1
EOF
sysctl -p 

echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
/etc/rc.d/rc.local

cat > /usr/lib/systemd/system/redis.service <<EOF
[Unit]
Description=Redis persistent key-value database
After=network.target

[Service]
ExecStart=${INSTALL_DIR}/bin/redis-server ${INSTALL_DIR}/etc/redis.conf --supervised systemd
ExecStop=/bin/kill -s QUIT \$MAINPID
#Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload 
systemctl enable --now  redis &> /dev/null && action "Redis 服务启动成功,Redis信息如下:" || { action "Redis 启动失败" false ;exit; } 
redis-cli -a $PASSWORD INFO Server 2> /dev/null
}
install

1.2 执行安装

chmod +x Redis_install.sh
./Redis_install.sh

1.3 修改配置

sed -Ei.bak -e 's/^# (cluster-enabled yes)/\1/g' \
-e 's/# (cluster-config-file nodes-6379.conf)/\1/g' \
-e 's/# (cluster-require-full-coverage )yes/\1no/g' \
/apps/redis/etc/redis.conf
systemctl restart redis

此时redis已经是cluster模式
在这里插入图片描述
在这里插入图片描述

2. Redis集群建立

执行meet使节点间相互通信
只需要在1台上对所有meet就可以了.

redis-cli -a 123456  cluster meet 192.168.31.17:6379
redis-cli -a 123456  cluster meet 192.168.31.27:6379
redis-cli -a 123456  cluster meet 192.168.31.37:6379
redis-cli -a 123456  cluster meet 192.168.31.47:6379
redis-cli -a 123456  cluster meet 192.168.31.57:6379
redis-cli -a 123456  cluster meet 192.168.31.67:6379

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 分配槽位

3.1 设定主节点

槽位0-16383
因为有3个host那么16384/3
host1 0-5461
host2 5462-10922
host3 10923-16383

bash addslot.sh 192.168.31.17 6379 0 5461
bash addslot.sh 192.168.31.27 6379 5462 10922
bash addslot.sh 192.168.31.37 6379 10923 16383

在这里插入图片描述

3.2 设定从节点

redis-cli -h 192.168.31.47 -a 123456 cluster replicate ab0787c3890e847801b2d1b0b246de4bc7d495bd
redis-cli -h 192.168.31.57 -a 123456 cluster replicate 81e8d5a2964731c036be656c80085c906cb3569e
redis-cli -h 192.168.31.67 -a 123456 cluster replicate b60562f5786409165513d5fecc04366c73825e7d

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 使用集群模式连接

在这里插入图片描述

4. 客户端访问逻辑

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值